我想知道在Windows API中是否存在等效版本的Windows API,它允许进程与其他进程的空间进行交互,这意味着修改第二个进程的流程。 这是在一个正在运行的进程中注入一个.so而不会杀死它。
谢谢!
答案 0 :(得分:4)
或者看看这里:CreateRemoteThread in Linux
我不知道比那里描述的更简单的方法。在Windows上你有这个
像VirtualProtectEx这样的奇特API。在Linux上你会写一个.so,例如执行pthread_create
在__attribute__((constructor))
函数中。然后你通过LD_PRELOAD机制加载.so。
CreateRemoteThread的下一个最好的事情是操纵主线程 使用ptrace API进行处理的过程。但这将涉及
我认为操纵内存访问权限还涉及从进程上下文调用mprotect。如上所述,最简单的方法 要做到这一点,不会使用ptrace,而是使用预编译的共享对象。
答案 1 :(得分:3)
在Linux上,有一种将代码注入程序的标准机制。您基本上定义了一个环境变量LD_PRELOAD,它指定在所有其他.so文件之前加载的.so库。 .so中的函数将替换函数的标准版本。无需手动修改函数的汇编代码即可将挂钩插入自己的代码,例如在Windows上。