Это мой код 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:
Вот как я модифицировал программу
Но .. я не знаю почему?
NOP
выделяет 1 байт, поэтому заменить эти две инструкции NOP
s
POP EAX ; 1 byte
PUSH Console.func1 ; 5 byte
Вам нужно поставить 6 из NOP
нет 2. В противном случае у вас есть 2 NOP
с и 4 байта мусора.