这是我的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内联的位置:
我将用NOP填写图像中标记的两条指令。好。我知道该怎么做。然后,我用一个新名字保存了它。
但是当我将编辑的程序加载到Ollydbg中时。 我编辑的地方添加了一条新指令。
新指令使程序崩溃。
好的,如果我的问题显而易见,我需要知道: 该指令是如何自动添加的? 我该如何解决?
感谢。
更新1: 以下是我修改程序的方法
但是......我不知道为什么?答案 0 :(得分:2)
NOP
分配1个字节,以便用NOP
s替换这两个指令
POP EAX ; 1 byte
PUSH Console.func1 ; 5 byte
你需要放置6个NOP
而不是2.否则,你有2 NOP
个和4个字节的垃圾。