【问题标题】:Linux Injected Shared Object Self-RemovalLinux 注入共享对象自我删除
【发布时间】:2016-07-13 23:59:39
【问题描述】:

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

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

【问题讨论】:

    标签: c linux code-injection shared-objects


    【解决方案1】:

    这不是微不足道的,但是当您决定卸载共享对象时,您可以执行以下操作:

    • mmap() 具有 EXECUTE 权限的新映射
    • 在 dlclose(your-shared-object) 的映射上编写机器指令
    • 编写调用 munmap() 的机器指令,同时确保此调用的返回地址指向线程终止调用(可能是 pthread_exit()),从而导致执行线程永远不会返回
    • 创建新线程并调用 mmap() 地址

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      相关资源
      最近更新 更多