Как анализировать исследуемый код(методика)?

Тема в разделе "WASM.BEGINNERS", создана пользователем neutronion, 9 май 2010.

  1. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Привет, форумчане!
    Можете подсказать методику анализа исследуемого кода.
    Проблема в том, что когда анализируешь туеву хучу кода, то части, которые проанализировал нужно как-то записывать, а то получится, что
    когда продвинешься дальше в анализе, забудешь с чего начинал.
    Для того, чтобы этого не происходило, как я понимаю, нужно каким-то
    образом фиксировать изученный уже код. Отсюда и вопрос:
    Как это делают опытные кодокопатели? Поделитесь, пожалуйста опытом.
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    в IDA записывай, давай осмысленные имена функциям чтобы потом было удобно читать

    в ольке можно адресам имена давать
     
  3. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Спасибо, учту.
    Что если использовать uml диаграммы?
     
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    neutronion
    зачем?
     
  5. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Фиг знает :)
    Может быть так удобно взглянуть на программу с "высоты птичьего полета"? Что, где и как происходит. Типа дорожной карты.
     
  6. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    neutronion
    неэффективно при реверсинге, если конечно, это не реверсный движок восстанавливает в диаграммы...
    ещё больше запутаетесь.
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    neutronion
    А в чём конкретно вопрос? :) Можно и UML. У нас процесс получения UML-диаграмм из исходного кода (не! из бинарника) преподаватели называют реверсингом :), что меня очень веселит, но в принципе по большому счёту они правы.
    Упрощённый вариант полной цепочки разработки выглядит так: требования клиента -> UML -> исходник -> бинарник.
    Похоже, в случае реверса по схеме бинарник -> UML чего-то явно не хватает. ИМХО из-за этого задача будет усложнена. Вот когда после основательной обработки в IDA смысл будет всё ещё неясен, тогда можно и к UML перейти. Но обычно это не требуется: не слышал вроде о реверсе больших проектов в корпоративных масшатбах.
     
  8. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    т.е. резюмируя все вышесказанное, нет практической необходимости, по крайней мере пока, извращаться в uml диаграммы, достаточно комментирования в ИДА и Ольке?
     
  9. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    В IDA очень удобно давать repeatable comments ф-иям. Я обычно кратенько пишу, что ф-ия делает (вставляю декомпилированный код, если ф-ия небольшая). В итоге, когда код смотришь, сразу понятно что и как вызывается. Единственное неудобство -- комментарии не отображаются в графах вызовов, но в этом случае надо просто давать имена ф-иям, как уже сказали.
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Обычно я в асмедите сохрпаняю части кода и коменты, после чего сохраняю это всё на десктоп, отчего он засерается за небольшое время :)
    Тогда работа с кодом выполняется до тех пор, пока не будут запомнены все нужные функи/ссылки и пр.
     
  11. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    сидеть в хексрейзе и наяривать "n", "y", "n", "y", пока не получим более менее читаемый сорц. по сорцу логика становтся понятной обычно.
     
  12. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    neutronion
    Многие используют связку IDA Pro и notepad.exe, второй для того чтобы записать то что увидели в первом. Однако! Ида обладает своим собственным механизмом написания заметок. Таким образом, давая понятные имена, и ставя якоря Alt+M, навигация по ним Ctrl+M ты можешь еще добавить в заметку и желательно делать по шагам, пример на простенький пакер:

    Шаг1: расшифровка первого слоя, адреса от точки входа .... , метка ....
    Шаг2: вызов LZMA декодера, подают в цикле объекты шифрованных кусков
    Шаг3: ..

    и т.д. и т.п. пиши так как тебе удобно! но в заметках пиши более высоко не вдаваясь в детали "копирование байтов", это ты и в коде с помощью rep movsb можешь увидеть !!! Лучше в заметке юзать че нить : "юзается lzo1x_s1 из популярной по урлу:..." это даст тебе больше фичей!

    Храни свои идб-шки как зеницу ока, сохраняй ключ лицензии к ида, если вдруг переходишь на другую лицензию ;)
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    EvilsInterrupt
    Вы слишком критичны. Стоит сказать что я использую иду крайне редко. Основной инструмент это олли + компилятор.
     
  14. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    [​IMG]
    в IDA еще раскраска помогает, когда функции длинные
     
  15. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Проясните пожалуйста этот момент.
    Ведь исследуется чужой код без исходников? Зачем компилятор?
     
  16. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    neutronion
    Весьма часто не достаточно отладчика/дизасма, например знал что гдето в ядре есть ссылка, писал дров который её там ищет. Или например ветвление найти, которое отладчик не находит. Это в статике, в динамике, тоесть при отладке всёвремя приходится всякие стабы, заглушки и прочее подключать.
     
  17. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    neutronion Это означает, что Клерку может удобней через дебаг, а мне через дизасм! А тебе ваще может через понимание маш. инструкций в бинарном виде! На вкус и цвет, не заморачивайся, а бери интересные вещи для тебя и анализи, то что тебе помогло сегодня, значит про анализи - почему? может это твой маст хэв на долгие годы ;)

    >>Вы слишком критичны. Стоит сказать что я использую иду крайне редко. Основной инструмент это олли + компилятор.
    компилятор никто и никогда не отменит! Как и отладчик, когда думать влом проще глянуть ))) Время экономит, да и дает не предположения, а чуть ли не 100-процентную уверенность в получаемом результате. Но!!! Дебагер это запуск, а запуск сомнительного кодеса на реальной это дебилизм, а вм-вары не всегда бывают настроены, вывод - дизасм! ;)
     
  18. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    >>в IDA еще раскраска помогает, когда функции длинные
    ты по реверси алго, скажем распаковки чего-нить где нет ни одной функции! ;) Скажем только сырой код ф-ции, рипнутой откуда нить, думаю тебе эта раскрасска даже снится будет ;)
     
  19. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Вот у меня сейчас реально есть некая функция Н, которая
    я точно знаю ответственна за возвращения объекта, который используется в проверке времени работы программы, т.е. ограничение в 30 дней. Проверено, 100%.

    Однако встал вопрос, эта функция вызывается 9 раз из разных мест в исследуемой программе. Вопрос, что делать в таком случае, исследовать каждый из 9 вызовов, чтобы определить, где происходит сравнение с
    ограничением времени? Что если они все участвуют в
    механизме защиты?
     
  20. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    neutronion ну попробовать патчить как-нить налету, посмотреть результат ;)
    включить апи-шпион, глянуть какие-функции вызываются после каждого из 9 мест