Добавление нового кода с помощью Ida


0

Когда я использовал CheatEngine (знаю, знаю), у него была эта опция, позволяющая создавать кодовые пещеры, что означает, что вы могли бы заменить любую инструкцию JMP на новый раздел, который содержал затем следуют новый код, а затем JMP'd обратно в исходное место.

Я хотел бы сделать то же самое с Ida, что позволит мне сохранить изменения в исполняемом файле. Это возможно?

Я попытался добавить новый раздел вручную в окне сегментов, но сохранение исполняемого файла с «применить изменения к входному файлу» ничего не меняет и не сохраняет файл «DIF».

+2

IDA - это скорее инструмент анализа. То, что вы пытаетесь сделать, легко сделать в отладчике, таком как OllyDbg. Чтобы добавить новый раздел, вы можете использовать [CFFExplorer] (http://www.ntcore.com/exsuite.php). 07 июн. 152015-06-07 11:09:13

4

Как сказал ExtremeCoders, IDA в основном используется в качестве инструмента анализа, и есть много других инструментов для этого, например, OllyDBG или x64_dbg ... тем не менее, это не так.

Я не пробовал это делать, но попытаюсь получить адрес кода пещеры, используя PEiD (или любой другой инструмент PE, который будет делать), а затем используйте плагин Fentanyl, чтобы внести изменения и плагин IDAPatcher, чтобы легко их сэкономить.


1

В последнее время я сделал что-то подобное с помощью приложения ARM android; однако, IDA не собирает ARM, а перевод ARM-кода в двоичный файл вручную не является забавной задачей. Сначала я нашел адрес подходящей кодовой пещеры в IDA, написал файл сборки, начинающийся с .org code_cave_address (и еще один .org и инструкцию для перехода, где я хотел перейти в свою кодовую пещеру), использовал версию gnu для рук, чтобы собрать ее , затем использовал objdump для поиска собранного кода и, наконец, использовал IDAPatcher для копирования шестнадцатеричного кода в мою базу данных IDA и исправления исходной общей библиотеки.

Не самый простой способ, но что-то, что будет работать с каждым видом процессора, даже если IDA не поддерживает сборку для него.