我使用缓冲区溢出并在堆栈中的 ret 地址上写入。当我用 gdb 调试它时,我了解到 eip 设置为我想要的地址。该地址是 libc 中的一个小工具。指令的操作码设置正确,但它只是不执行它们,我收到以下消息:
0xb7fa9dd8 in ?? () from /lib/i386-linux-gnu/libc.so.6
为什么?这是什么信息?
请看下面的数据:
(gdb) x $eip
0xb7fa9dd8: 0xfff2a858
要执行的小工具是:
184dd8: 58 pop %eax
184dd9: a8 f2 test $0xf2,%al
184ddb: ff a8 00 00 00 00 ljmp *0x0(%eax)