Патч бинарный не открывается - PullRequest
0 голосов
/ 09 апреля 2020

Я новичок ie в Reverse Engineering и пытаюсь изменить условие jnz на jz с IDA. После того, как я пропатчил бинарный файл, приложение не может быть открыто.

Существует оригинальный двоичный файл:

enter image description here

И модифицированный:

enter image description here

РЕДАКТИРОВАТЬ:

Другая гипотеза для проблемы заключается в том, что исправленный двоичный файл имеет различное число байтов из-за перехода с jnz на jz. Может ли это быть? Если да, как я могу разрешить эту разницу в байтах?

1 Ответ

0 голосов
/ 18 апреля 2020

JZ и JNZ имеют инструкции по 1 или 2 байта без аргументов. Возможно, IDA использовала инструкцию другого размера.

Чтобы просмотреть байты сборки в go Параметры-> Общие-> Разборка и в поле «Количество байтов кода операции» введите 8. Теперь вы можете увидеть байты в дизассемблирование.

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

Подробнее об этих инструкциях здесь

Если IDA генерирует неправильную инструкцию, измените ее вручную, отредактировав шестнадцатеричный код.

Вы всегда можете просмотреть размер файла, чтобы увидеть, изменился ли размер. Если программа продолжает «не запускаться», подключите отладчик и выясните, почему, я не могу думать о том, что если число байтов одинаково, оно должно нормально работать, а в худшем случае бесконечно l * 1015. *

...