Редактирование программы с Ollydbg

Это мой код C ++:

#include <conio.h>
#include <iostream>

using namespace std;

void func1()
{
static int _count = 0;
if (_count < 5)
{
__asm
{
pop eax
push func1
}
}

_count++;
cout << _count << endl;
}

int main()
{
func1();

cout << "ok" << endl;
return 0;
}

Теперь мне нужно удалить asm inline.

Он загружается в Ollydbg, и это позиция asm inline:
введите описание изображения здесь

Я заполню две инструкции, которые отмечены на изображении с NOP. Хорошо. Я знаю, как это сделать. Затем я сохранил его с новым именем.

Но когда я загрузил программу, которую я отредактировал в Ollydbg.
В местах, которые я редактировал, была добавлена ​​новая инструкция.

введите описание изображения здесь

И новая инструкция вызывает сбой программы.

Хорошо, если мой вопрос достаточно ясен, мне нужно знать:
Как эта инструкция была добавлена ​​автоматически?
И как мне это исправить?

Благодарю.

ОБНОВЛЕНИЕ 1:
Вот как я модифицировал программу
введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь

Но .. я не знаю почему?
введите описание изображения здесь

2

Решение

NOP выделяет 1 байт, поэтому заменить эти две инструкции NOPs

POP  EAX              ; 1 byte
PUSH Console.func1    ; 5 byte

Вам нужно поставить 6 из NOP нет 2. В противном случае у вас есть 2 NOPс и 4 байта мусора.

2

Другие решения


По вопросам рекламы [email protected]