Linux中的代码注入 - 由于某种原因,shellcode无法正常工作

时间:2014-07-03 05:36:51

标签: c linux shellcode

我正在尝试以下链接中的代码注入示例: 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:顺便说一句,我想知道如何修复源代码,而不仅仅是编写汇编代码。

0 个答案:

没有答案