我正在尝试使用 GDB 将代码注入正在运行的进程中,并且每次尝试运行我的代码时都会得到一个 SIGSEGV。我在ubuntu(Oneiric)上。我使用 python 脚本将代码导出到环境变量以将它们打印出来,然后在 gdb 中,使用类似的东西找到所需的代码x/50s *((char**)environ)
,然后选择一个更好的地址来检查指令。
所以,当我这样做时x/30i *(addressOfCode)
,汇编指令与我想要运行的指令完全匹配。所以,如果我在我的代码的起点插入一个断点,然后跳转到那里,然后 stepi,我会得到一个段错误。此外,如果我在内存中选择一个位置并插入一些 NOP,在其中一个处中断,跳转到它,然后 stepi,我也会遇到段错误。
我怎样才能避免这种情况?我是否只是因为我跳出了进程的指定内存而出现了段错误?我有什么选择可以解决这个问题?
谢谢你的帮助!