Linux注入共享对象自我删除

时间:2016-07-13 23:59:39

标签: c linux code-injection shared-objects

因此,我一直致力于根据Inject shared library into a processhttps://github.com/gaffe23/linux-inject中的信息将Linux共享对象注入正在运行的流程。我已经把它搞定并运行得相当好。我的问题与之后删除共享对象有关。我知道我可以使用与注入相同的方法,但我需要知道的是我是否可以使用其中的代码删除共享对象。

例如,我注入.so然后删除注射器。现在我需要一种方法来使用.so本身内置的功能来删除.so。我已经考虑过将注入代码放入.so,然后在一段时间之后分配一个过程来测试这个想法。这是可行的还是还有其他更好的方法?

1 个答案:

答案 0 :(得分:0)

这并不简单,但是当您决定卸载共享对象时,可以执行以下操作:

  • mmap()具有执行权限的新映射
  • 在此映射上写有关dlclose(您的共享对象)的机器指令
  • 编写调用munmap()的机器指令,同时确保此调用的返回地址指向线程终止调用(可能是pthread_exit()),导致执行线程永不返回
  • 创建新线程并调用mmap()地址