Мечта реверсера

Тема в разделе "WASM.RESEARCH", создана пользователем andruha123, 26 сен 2004.

  1. andruha123

    andruha123 New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2004
    Сообщения:
    15
    Адрес:
    USA, CA
    Народ, я тут закачал дему моего интерактивного декомпилера. Что скажете?

    Правда, доки лень писать. Хотя, кому они нужны, и так разберетесь.
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
  3. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    http://shulgaaa.at.tut.by/screen.jpg , что-то не пашет линк .

    А как екзешку в этот декомпилер загнать , чтоб попробывать , только .dc открывает ?
     
  4. khv_test

    khv_test New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    135
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Прикольная штука, вот только пока она exe'шник не открывает тестить нечего.
     
  6. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Не впечатляет.
     
  7. nDSm

    nDSm New Member

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    18
    По-моему, ништяк... тока доработать бы её до Full =)
     
  8. andruha123

    andruha123 New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2004
    Сообщения:
    15
    Адрес:
    USA, CA
    Ну, во-первых, тестировать прогу рано, т.к. половина инструкций еще не реализована. Там явных багов тьма, не говоря о недостающих фичах.

    Во-вторых по поводу exe-шников. Я в readme.txt упомянул, что парсер выдран, поэтому, нет смысла пытаться скормить софтине что-нибудь помимо родимых .dc-шников (кто не знает, это то же самое что .doc для M$ Worda). Зато смело можно терзать прилагаемый сэмпл, пока она(прога) не форматнет ваш винчестер (шутка). А если без шуток, то для ввода данных я собираюсь написать плагин к детищу дяди Ильфака. Таким макаром юзер сможет выбирать интересующий код и данные вместе со всеми потрохами (типа лэйблов и аттрибутов) и отправлять далее в декомпилер на перемолку. Ведь сами понимаете, писать еще один интерактивный дизассемблер - это ж столько гемммороя, когда есть готовый. Лучше сконцентрироваться на вылизывании ядра декомпилера.

    Ну вы меня поняли...
     
  9. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    А вот эта идея - уже ничего. Хорошо придумал.
     
  10. Narkomanius

    Narkomanius New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2003
    Сообщения:
    144
    я б накорябал сполпинка такое если бы придумал как НАЗЫВАТЬ переменные и метки. ну в самом деле, нафига декомпилить если все имена типа @kaamghcvd(аля борланд цпп4.5)
     
  11. ScepticWyvern

    ScepticWyvern New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2004
    Сообщения:
    5
    Адрес:
    Russia
    andruha123

    Загрузив прилагаемый .dc в Revenge.exe и внимательно посмотрев различные представления (assembled, unfold, etc) и сопоставив код между ними, могу сказать, что Andrey Shulga поработал очень хорошо. Он отслеживает историю преобразований переменных и т.п. Т.е. анализирует не только control-flow, но и data-flow. Только пока непонятно, сколько нужно потратить ручного труда, чтобы из бинарного кода получился такой результат? Если почти все, что представлено в demo файле, сгенерила программа (естественно, кроме вменяемых наименований переменных и функций. это дело человека.), то это одно дело. Если нужно много указывать "руками", то другое. Как, например, определяется стиль вызова функций (pascal, cdecl, etc)?
     
  12. andruha123

    andruha123 New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2004
    Сообщения:
    15
    Адрес:
    USA, CA
    Значит, все что представлено, было получено после перемола прогой сырых ассемблерных листингов, взятых из дизассемблера. Ручная доводка свелась к следующему:

    <ol type=1>

    <li> Удаление лишних(продублированных) структур путем их слияния. Поскольку, декомпу скармливается произвольный материал (в любой последовательности), то при анализе типов данных некоторые указатели на структуры не трассируются в одно место. Это и приводит к генерации лишних структур. В принципе, без структур вообще можно обойтись, код будет компилируем, хотя и зас..н приведением типов.

    <li> Были переименованы имена функций, структур, их полей, некоторых глобальных и локальных переменных в осмысленные (тут я особо не мудрил, т.к. у меня есть оригинальные исходники того проекта, don't worry - it's open-source).

    </ol>



    На все у меня ушло ~4 часа. Я даже не стал править блочную организацию функций (if, else, switch, &&, ||). Все это заложено в авто-анализе, хотя, чтобы, например, превратить goto [eax] в switch(..), достаточно одного нажатия кнопки.



    По поводу типов вызовов функций (calling conventions) - тут все тоже до-безобразия просто. Но об этом как нибудь потом.
     
  13. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    andruha123

    Вещь мега-рульная - excellent work - но когда можно будет грузить реальный код, или генерировать эти самые dc файлы?



    Что за проект? Можно линк?
     
  14. Funbit

    Funbit Member

    Публикаций:
    0
    Регистрация:
    13 апр 2003
    Сообщения:
    92
    Адрес:
    Russia
    уже года полтора назад попал на сайт, посвященный сабжу,

    все ждал :) приятно видеть, что хоть как-то оживает.

    надеюсь проект все же реализуется, очень интересный.

    (особенно нравится восстановление с++ классов, из

    скрина видно, что вроде Andromeda это умеет)



    только вот в одиночку непросто все это воплощать в жизнь,

    мне кажется это слишком сложно.



    и распространять вы его как собираетесь ? платно/бесплатно ? может стоит помощников поискать ?
     
  15. andruha123

    andruha123 New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2004
    Сообщения:
    15
    Адрес:
    USA, CA
    Точно. Это не часики на трейбаре. Толковые помощники не помешали бы. Проект реально осуществим, и у меня есть куча идей как это сделать. Жаль, что на новой работе у меня может не оказаться свободного времени на это, поскольку до сих пор проект продвигался на чистом энтузиазме и по возможности...
     
  16. Funbit

    Funbit Member

    Публикаций:
    0
    Регистрация:
    13 апр 2003
    Сообщения:
    92
    Адрес:
    Russia
    andruha123

    так все же, по какой лицензии вы собираетесь распространять программу?
     
  17. andruha123

    andruha123 New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2004
    Сообщения:
    15
    Адрес:
    USA, CA
    Пока об этом не думал.