Linux 中 VirtualProtectEx/CreateRemoteThread 的等价物?
Equivalent of VirtualProtectEx/CreateRemoteThread in Linux?
我想知道 windows API 在库中或作为系统调用是否有等效版本,允许进程与其他进程交互' space,这意味着修改第二个流程的流程。
这是在 运行 进程中注入一个 .so 而不会杀死它。
谢谢!
在 Linux 上,有一种将代码注入程序的标准机制。您基本上定义了一个环境变量 LD_PRELOAD,它指定一个在所有其他 .so 文件之前加载的 .so 库。 .so 中的函数将替换函数的标准版本。不需要像windows.
那样手动修改functions的汇编代码来给自己的代码插入hooks
也许看看这里:CreateRemoteThread in Linux
我不知道还有比那里描述的更简单的方法。在 Windows 你有这个
喜欢 API 喜欢 VirtualProtectEx。在 Linux 你会写一个 .so ,例如执行 pthread_create
在 __attribute__((constructor))
函数中。然后,您将通过 LD_PRELOAD 机制加载该 .so。
CreateRemoteThread 的下一个最好的事情是操纵主线程
使用 ptrace API 的过程。但这将涉及
- 保持线程
- 保存上下文
- 正在为 pthread_create
设置参数
- 设置IP为pthread_create并执行
- 恢复旧上下文。
我认为操纵内存访问权限还涉及从进程上下文调用 mprotect。正如上面已经提到的,最简单的方法
这样做不会使用 ptrace,而是使用预编译的共享对象。
我想知道 windows API 在库中或作为系统调用是否有等效版本,允许进程与其他进程交互' space,这意味着修改第二个流程的流程。 这是在 运行 进程中注入一个 .so 而不会杀死它。
谢谢!
在 Linux 上,有一种将代码注入程序的标准机制。您基本上定义了一个环境变量 LD_PRELOAD,它指定一个在所有其他 .so 文件之前加载的 .so 库。 .so 中的函数将替换函数的标准版本。不需要像windows.
那样手动修改functions的汇编代码来给自己的代码插入hooks也许看看这里:CreateRemoteThread in Linux
我不知道还有比那里描述的更简单的方法。在 Windows 你有这个
喜欢 API 喜欢 VirtualProtectEx。在 Linux 你会写一个 .so ,例如执行 pthread_create
在 __attribute__((constructor))
函数中。然后,您将通过 LD_PRELOAD 机制加载该 .so。
CreateRemoteThread 的下一个最好的事情是操纵主线程 使用 ptrace API 的过程。但这将涉及
- 保持线程
- 保存上下文
- 正在为 pthread_create 设置参数
- 设置IP为pthread_create并执行
- 恢复旧上下文。
我认为操纵内存访问权限还涉及从进程上下文调用 mprotect。正如上面已经提到的,最简单的方法 这样做不会使用 ptrace,而是使用预编译的共享对象。