Доступен первый публичный релиз утилиты Dataflow

This post is also available in: Английский

Первый публичный релиз Dataflow-0.1.1. Скачать утилиту, посмотреть экранные снимки и историю изменений можно на странице утилиты Dataflow, частью которого утилита и является. Для тех кто скачал, но не знает с чего начать (даже после прочтения readme) есть пример использования dataflow. Любые пожелания, критика и багрепорты приветствуются.

Комментарии 9

  • Спасибо за работу =). Но почему именно dataflow? Я занимался CFG и DFG при написании диплома, в частности разрабатывал систему детекта малвари на основе нормализованного по апи функциям CFG. Так вот то, что я увидел это обычный cfg c покрытием. Там нет зависимости по данным =) или я чегото не догоняю? =)

    • Рад, что работа привлекла ваше внимание. Хотелось бы получить отклик. Что понравилось? Что не понравилось? Чего не хватает. И вообще, чем-нибудь она сейчас полезна?
      Утилита в настоящее время действительно ничего общего с dataflow не имеет 😉 Название отражает амбициозные планы. Очень скоро будут включен элемент DFG. Хочу реализовать анализ распространения метки taint.
      Очень интересно, что такое «нормализированный по апи функциям CFG». Расскажите, пожалуйста подробннее. Что такое CFG мне известно.

      • в данный момент для меня ничем практически =) для моих скромных нужд хватает procedural CFG предоставленный ida graph mode =) впрочем вместе с DFG это станет довольно мошной штукой, с помощью которой довольно просто будет находит узловые точки в полиморфном пакере к примеру. Еще советую подумать насчет реализации слайсинга, для него как раз нужны dfg, cfg и какойто ещё fg, не помню точно. Зато при анализе дает большой профит =)

        >> Хочу реализовать анализ распространения метки taint.
        а что это такое?

        нормализация по апи — это самовыдуманный термин =) это тупо удаление всех нод из CFG, которые не являются апи функциями ОС. Соответственно все ноды входящие в удаляемую ноду соединялись со всеми нодами которые выходили из неё (я понимаю, что армейскими сапогами по теории графов, но мне так проще без картинки объяснить, надеюсь вы поняли), благодаря чему граф не терял связность. Соответственно сигнатурой являлся набор апи и связи между ними. Граф представлялся в матричном виде. Матрица упаковывалась в вектор, вектора сравнивались с помощью сети Хопфилда. Но это я уже очень плохо отработал в дипломе =)

        • Очень интересный диплом. Не встречал я студентов, которые бы делали такое во время учебы. Очень здорово. Есть ли программная реализация, статьи? Мне интересно познакомиться.
          По метке taint в двух словах не скажешь. Я сделаю обзор по этой теме в ближайшее время. Мне все равно он понадобится для диссертации.

        • Слайсинг — это в смысле перехвата функций методом подмены пролога. Чем здесь может CFG помочь? Для выявления? Или может я неправильно термин понял?

          • не правильно =) это не сплайсинг, а slicing =))
            http://en.wikipedia.org/wiki/Program_slicing

            метод позволяющий выделить в программе, что делалось с переменной до текущей точки — слайс, если грубо. Для source level теория достаточно хорошо проработана, но вот по binary level маловато материала, нормальных я находил всего лишь пару статей.

            Диплом показывать не хочу, тк многое там не доделано, я достаточно раздолбайной натуры человек, поэтому довольно таки сыро и ненаучно =\ если всетаки я доделаю его, то выложу и сообщу =) А объясняется выбор темы просто — я работаю в антивирусной индустрии =) к сожалению наша система образования в сфере компьютерной безопасности оставляет желать лучшего, и интерес к данной тематике мне дал один иностранный диплом который мне дали на работе. Он как раз был посвящен построению слайсов и детекту малвари по ним (слайс был в виде графа, понятное дело). Вроде он был гдето в интернетах в свободном доступе, найду — дам ссылку.

            Жду обзор по taint =))

          • Спасибо за наводку на slicing. Я подозревал, что такое должно быть, но просто не знал как это называется 🙂 Я смотрел несколько статей по tain. Сама идея мне очень нравилась, но подход к ее реализации всюду был эм … топорный. Мол, строим таблицу всего, что может изменяться и помечаем для каждого элемента метку tаint (http://bitblaze.cs.berkeley.edu/sting.html). Это для бинарей. Работа интересная в принципе. Размах поражает: виртуальная машина, отслеживание всех ресурсов системы…
            Для скриптов такая же метка просто заводилась для переменной.
            Мне же хотелось что бы влияние taint можно было доказывать математически. Т.е. строим некоторую функцию по которой была получена конкретная переменная и смотрим от каких других переменных она зависит.
            В принципе, slicing для того и нужен. Единственное, что история изменения переменных остается в виде кода, который не просто потом анализировать. Или же есть более формализованные представления?

  • я серьезных статей не видел, но коечто встречалось

    http://www.youtube.com/watch?v=VIxaQeAHIxs
    и на зинамикс
    http://blog.zynamics.com/2010/03/07/the-reil-language-part-i/
    http://blog.zynamics.com/2010/06/22/the-reil-language-part-ii/
    http://blog.zynamics.com/2010/07/19/the-reil-language-part-iii/

    возможно пригодится, формализации в математике по переводу я не встречал.

    можете ещё в старых ссылках на реддите посмотреть, помоему чтото проскакивало отличное от вышеприведенных ссылок
    http://www.reddit.com/r/ReverseEngineering/

Добавить комментарий для artem Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *