Шестнадцатеричная сборка редактора команд?

Я играю с реверс-инжинирингом программного обеспечения. У меня есть базовый опыт программирования, но только с языками верхнего уровня, такими как Java и Python.

Я разобрал некоторые exe-файлы с IDA pro, чтобы поэкспериментировать со структурой потока, и использую Hex Workshop для редактирования шестнадцатеричного кода и перекомпиляции. Итак, я отключил всю эту механику и могу успешно создать отредактированный exe-файл.

Есть ли хорошие руководства для того, что команды и как они работают? Я не мог найти что-нибудь с моим Google-фу. Я даже не уверен, как они называются. Это настолько отличается от того кодирования, к которому я привык, что я действительно пытаюсь разобрать его в своей голове.

Я говорю о jz, jnz, eax, lea, mov, cmp и так далее. Я могу найти несколько разбросанных ссылок на отдельные команды, которые несколько полезны, но недостаточны для выполнения полезных задач. Я ищу хороший учебник по всей теме. Что-то, что я могу вспахать и дать общее представление о том, что они делают, и как изменить их, чтобы они делали то, что я хочу.

Благодарю.

2 ответа

jz, movи т. д. Это так называемые инструкции, а не команды (кроме eax, который является регистром).

Байты, которые вы редактируете, называются кодами операций, и это то, что процессор извлекает из памяти и декодирует в инструкции.

Пример: когда вы видите

.text:00428E4A  8B F0    mov   esi, eax

Правильный способ описать эту строку будет следующим: По адресу 0x00428E4A находятся коды операций 8B F0. Эти коды операций декодируются в mov инструкция с исходным операндом, являющимся eax регистр и целевой операнд, являющийся esi регистр.

Неизбежным источником точной информации здесь являются Руководства для разработчиков программного обеспечения для архитектуры Intel® 64 и IA-32. В частности, вы хотите Том 2, Справочник по набору инструкций, AZ.

Вам нужно определить процессор, для которого был скомпилирован EXE. Тогда вы гуглите на языке ассемблера этого процессора. В маловероятном случае, если вы не найдете его, вы ищете таблицы данных процессора.

Другие вопросы по тегам