Есть ли способ установить нулевой флаг в GDB? - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу выполнить обратный инжиниринг исполняемого файла, и в процессе я хочу вызвать переполнение стека из-за функции strcpy.При разборке после сравнения происходит jne, а когда false, код продолжает работу функции выхода и в результате выходит из программы. Если это правда, он переходит и переходит к пользовательской функции, где используется strcpy. Я думал, чтоя должен манипулировать нулевым флагом, чтобы избежать вызова функции выхода. Правильно ли я думал, и если да, то есть ли в gdb метод, который можно использовать?Спасибо в процессе

1 Ответ

0 голосов
/ 13 февраля 2019

Я предполагаю, что это около x86.Вы можете установить регистр EFLAGS (который содержит ZF), используя:

(gdb) set $eflags = 0

Это удалит все биты, которые могут быть действительно очищены, включая бит ZF.Если вы просто хотите очистить флаг ZF, вы можете использовать тот факт, что его бит имеет значение 0x40:

(gdb) set $eflags = $eflags & ~0x40

info reg eflags показывает эффект таких манипуляций.

...