如何使用C / C ++将代码注入正在运行的进程中

时间:2014-01-29 13:23:27

标签: c linux memory-management gdb code-injection

我正在寻找有关如何通过在运行时将代码直接注入内存来操作函数的建议。目的是最终运行一个外部应用程序,该应用程序能够操作正在运行的进程以进行优化。到目前为止,我已经沿着使用GDB操作内存的路线,遵循本教程:

http://www.codeproject.com/Articles/33340/Code-Injection-into-Running-Linux-Application?fid=1534990&df=90&mpp=10&sort=Position&spc=Relaxed&tid=4678205

然而,它现在相当过时了,似乎无法让它在64位架构上工作......我将不胜感激任何有关此主题的建议。干杯

1 个答案:

答案 0 :(得分:-4)

要允许此操作会打开巨大的安全漏洞,因此严禁在任何理智的环境中使用。特别是较新的Linux(尤其是x86_64)将可执行内存区域与可修改区域严格分开。此外,现代CPU不会对其缓存之外的代码更改做出如此友好的反应。也许最接近的是动态加载共享库。

这种操作是大多数脚本语言(如Perl或Python)工作的一部分。