试一下编译下面的程序用 PEiD 扫描,然后点 FirstBytes 旁边的 -> 按钮:
这是因为 PEiD 反汇编引擎没有对内存检查,代码:.386 .model flat, stdcall locals __ .code start: db (200h - 1) dup(0C3h) db 00 end start
前面 1FFh 个 retn 指令反汇编结束后来到段末尾的 00 字节,
00 代表 add ...,一个字节不是完整的指令,反汇编读取下一字节的时候因为没有相应的内存分配,所以非法了。