事情是这样,我在安排shellcode的时候,需要先布置168个字节的真正的攻击代码,然后布置40个字节的\x90填充,然后是其他机器码,但是神奇的是在程序调试的时候我居然在栈区看到了41个90(导致后面的一个不对,程序直接崩溃,内存写入错误,而且通过错误看到是最后的四个字节错位了),于是我把shellcode改成39个\x90,居然用OD调试看到栈区是40个90,我就纳闷了,有图有真相:
shellcode代码:
od调试中的栈窗口:
我想,还邪门了,再仔细看我的shellcode代码,发现了个问题:
突然看到那个刺眼的空格,太刺眼了!!!
以后写程序的时候一定要注意这些小地方了!!