Мне просто интересно - как разобрать самомодифицирующийся двоичный файл? Думаю, вы не можете использовать olly или IDA, потому что они являются статическими дизассемблерами, правильно? Что происходит с дизассемблером, если вы переходите к середине инструкции? И как анализировать метаморфические двигатели?Демонтаж самомодифицирующегося кода
ответ
Оба OllyDbg и IDA являются не только статическими анализаторами, но и оба могут запускать код. IDA также может запускать ваш код удаленно, и, насколько я знаю, он может даже выполнять встроенную отладку. Конечно, если вы «сломаете» выполнение программы в какой-то момент и взгляните на разборку, она будет (в обеих программах) отражать текущее состояние программы, включая любые ее модификации.
Что происходит с дизассемблером, если вы прыгаете в середину инструкции?
Согласно моему опыту, оба упомянутых дизассемблера могут справиться с этой ситуацией. Например, смотрите здесь, как OllyDbg управляет им, вот скриншот, когда EIP является 00892C0E:
И когда я делаю EIP = 00892C0F, который находится в середине инструкции:
как вы видите, он просто повторно разбирает инструкцию, делая ее другим (но все еще действительным) кодом операции.
И как анализировать метаморфические двигатели?
Как и любой другой код. Трюки, о которых вы упоминаете (прыгая в середину инструкции, изменяя себя) были в основном популярны некоторое время назад, когда дизассемблеры и отладчик были не такими умными, как сейчас.
Конечно, статический анализ может быть очень сложным, но вы, конечно, можете полностью анализировать двоичные файлы полностью автономно и расшифровывать «морфинг» (в своем уме), чтобы понять, что будет делать код. Но когда вы можете использовать отладчик вживую, вы просто видите, что делает код.
Конечно, все это бесконечная гонка между людьми, которые пишут код, и люди, анализирующие его. Кто победит, зависит от того, кто раньше сдастся.
Просто хотел процитировать это, потому что это так верно :) «Конечно, все это бесконечная гонка между людьми, которые пишут код, и люди, анализирующие его. Кто победит, зависит от того, кто сдастся раньше». –
Ollydbg будет обрабатывать такие ситуации.
Функциональность, которую вы ищете, это «Анализ». Он будет повторно дизассемблировать новые инструкции в местоположении и обновить окно CPU обновленным кодом.
Предположим, что инструкция по адресу X внесет некоторые изменения, которые могут меняться. После выполнения этой команды вы можете запустить команду «Анализ». Это повторный дизассемблирование кода вокруг этого базового блока и обновление процессора с обновленными инструкциями.
Для анализа щелкните правой кнопкой мыши в нужном месте в окне процессора и нажмите Анализ> Анализ кода. Ярлык: Ctrl-A.
- 1. x86_64 - Производительность самомодифицирующегося кода
- 2. Android Самомодифицирующегося кода - NDK
- 3. Варианты использования для самомодифицирующегося кода?
- 4. Демонтаж кода Java
- 5. Демонтаж C, замена кода операции
- 6. Демонтаж приложения для Android
- 7. Демонтаж Интерактивно в GDB
- 8. Демонтаж функции Clang/LD?
- 9. Демонтаж подпроцесса Python
- 10. Демонтаж функции C
- 11. UnitTest демонтаж() дель все атрибуты
- 12. Пользовательский демонтаж трубопровода не работает
- 13. Демонтаж производительности ухудшается за время
- 14. Демонтаж исполняемого файла в ansible
- 15. докерная остановка и демонтаж контейнера
- 16. Демонтаж в Visual Studio 2012 Ultimate
- 17. Точное монтирование/демонтаж не обнаружено должным образом
- 18. демонтаж ggplot с сеткой и gtable
- 19. Демонтаж с помощью python - не простое решение?
- 20. Демонтаж процесса в C в Windows
- 21. Демонтаж с использованием Olly или IDA
- 22. Демонтаж: Почему jmp, который ведет в никуда?
- 23. демонтаж, запрашивая и повторной сборки универсального типа
- 24. Демонтаж библиотек WPF4 beta2 с рефлектором
- 25. Демонтаж функции с помощью отладки Immunity
- 26. Демонтаж грабли в рубине. Лучшее решение?
- 27. Источник не может быть найден - перейдите на демонтаж
- 28. Демонтаж JBoss AS 7 до AS 4 и наоборот
- 29. Демонтаж скрипта python с помощью python-daemon - проблема сокета
- 30. GTEST установка демонтаж TestEnvironment - проблема с классом переменной
Нельзя слишком резко критиковать свой вопрос. Может быть, я просто этого не понимаю! Однако это может быть не тот вопрос, на который можно ответить в нескольких параграфах. – thb