我正在尝试以下链接中的代码注入示例: http://www.linuxjournal.com/node/6210/print
一切运行良好(我的意思是它会在该示例中使用shellcode为目标进程注入一个字符串),但是当我尝试注入我的shellcode时,该程序根本不起作用。
以下是我获取shellcode的方法:
#include <stdio.h>
int main(int argc, char *argv[]){
printf("Hello");
return 0;
}
然后,我编译源代码并使用gdb来反汇编代码。
(gdb) disassemble main
Dump of assembler code for function main:
0x080483e4 <+0>: push %ebp
0x080483e5 <+1>: mov %esp,%ebp
0x080483e7 <+3>: and $0xfffffff0,%esp
0x080483ea <+6>: sub $0x10,%esp
0x080483ed <+9>: mov $0x80484e0,%eax
0x080483f2 <+14>: mov %eax,(%esp)
0x080483f5 <+17>: call 0x8048300 <printf@plt>
0x080483fa <+22>: mov $0x0,%eax
0x080483ff <+27>: leave
0x08048400 <+28>: ret
End of assembler dump.
(gdb) x/30bx main
0x80483e4 <main>: 0x55 0x89 0xe5 0x83 0xe4 0xf0 0x83 0xec
0x80483ec <main+8>: 0x10 0xb8 0xe0 0x84 0x04 0x08 0x89 0x04
0x80483f4 <main+16>: 0x24 0xe8 0x06 0xff 0xff 0xff 0xb8 0x00
0x80483fc <main+24>: 0x00 0x00 0x00 0xc9 0xc3 0x90
然后,我只是将这30个字节复制为我的shellcode并使用它,但它不起作用。有谁知道为什么它不起作用?怎么解决?感谢。
PS:顺便说一句,我想知道如何修复源代码,而不仅仅是编写汇编代码。