2012-04-25 3 views
9

Мне просто интересно - как разобрать самомодифицирующийся двоичный файл? Думаю, вы не можете использовать olly или IDA, потому что они являются статическими дизассемблерами, правильно? Что происходит с дизассемблером, если вы переходите к середине инструкции? И как анализировать метаморфические двигатели?Демонтаж самомодифицирующегося кода

+0

Нельзя слишком резко критиковать свой вопрос. Может быть, я просто этого не понимаю! Однако это может быть не тот вопрос, на который можно ответить в нескольких параграфах. – thb

ответ

10

Оба OllyDbg и IDA являются не только статическими анализаторами, но и оба могут запускать код. IDA также может запускать ваш код удаленно, и, насколько я знаю, он может даже выполнять встроенную отладку. Конечно, если вы «сломаете» выполнение программы в какой-то момент и взгляните на разборку, она будет (в обеих программах) отражать текущее состояние программы, включая любые ее модификации.

Что происходит с дизассемблером, если вы прыгаете в середину инструкции?

Согласно моему опыту, оба упомянутых дизассемблера могут справиться с этой ситуацией. Например, смотрите здесь, как OllyDbg управляет им, вот скриншот, когда EIP является 00892C0E:

OllyDbg before

И когда я делаю EIP = 00892C0F, который находится в середине инструкции:

OllyDbg after

как вы видите, он просто повторно разбирает инструкцию, делая ее другим (но все еще действительным) кодом операции.

И как анализировать метаморфические двигатели?

Как и любой другой код. Трюки, о которых вы упоминаете (прыгая в середину инструкции, изменяя себя) были в основном популярны некоторое время назад, когда дизассемблеры и отладчик были не такими умными, как сейчас.

Конечно, статический анализ может быть очень сложным, но вы, конечно, можете полностью анализировать двоичные файлы полностью автономно и расшифровывать «морфинг» (в своем уме), чтобы понять, что будет делать код. Но когда вы можете использовать отладчик вживую, вы просто видите, что делает код.

Конечно, все это бесконечная гонка между людьми, которые пишут код, и люди, анализирующие его. Кто победит, зависит от того, кто раньше сдастся.

+1

Просто хотел процитировать это, потому что это так верно :) «Конечно, все это бесконечная гонка между людьми, которые пишут код, и люди, анализирующие его. Кто победит, зависит от того, кто сдастся раньше». –

1

Ollydbg будет обрабатывать такие ситуации.

Функциональность, которую вы ищете, это «Анализ». Он будет повторно дизассемблировать новые инструкции в местоположении и обновить окно CPU обновленным кодом.

Предположим, что инструкция по адресу X внесет некоторые изменения, которые могут меняться. После выполнения этой команды вы можете запустить команду «Анализ». Это повторный дизассемблирование кода вокруг этого базового блока и обновление процессора с обновленными инструкциями.

Для анализа щелкните правой кнопкой мыши в нужном месте в окне процессора и нажмите Анализ> Анализ кода. Ярлык: Ctrl-A.

Смежные вопросы