这是我的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内联。
它被加载到Ollydbg中,这是asm的内联位置:

我将填写两个说明,在图像中用NOP标记。好的。我知道怎么做。然后,我用一个新名字保存了它。
但是当我把我编辑的程序加载到Ollydbg时。我编辑的地方增加了一条新的指令。

而新的指令使程序崩溃。
好的,如果我的问题够清楚的话,我需要知道:这个指令是如何自动添加的?我该怎么解决呢?
谢谢。
更新1:下面是我修改程序的方式




但是..。我也不知道原因?

发布于 2014-05-13 09:41:16
一个NOP分配一个字节,所以要用NOP的
POP EAX ; 1 byte
PUSH Console.func1 ; 5 byte你需要把6的NOP,而不是2,否则,你有2个NOPs和4个字节的垃圾。
https://stackoverflow.com/questions/23627425
复制相似问题