lobsterrev/remotethreat
GitHub: lobsterrev/remotethreat
一个仅含头文件的 C/C++ 库,在 Windows x86/x64 上提供四种远程线程注入方法并支持 WOW64 跨架构执行。
Stars: 0 | Forks: 0
# 远程 Threat
仅包含头文件的 C 语言库,用于在 Windows (x86/x64) 上进行远程线程注入,并提供 WOW64 跨架构支持。
可由 C11 及以上版本调用,或通过捆绑的 `remotethreat.hpp` 包装器从 C++ 调用,该包装器还原了 RAII `RT::Execution` 类。
## 方法
| 方法 | 描述 |
|---|---|
| `RT_NtCreateThread` | 通过 `NtCreateThreadEx` 创建新的远程线程 |
| `RT_Hijack` | 挂起现有线程,通过上下文劫持重定向执行 |
| `RT_APC` | 通过 `NtQueueApcThreadEx2` 将特殊用户 APC 排入队列 |
| `RT_ProcessInformationCallback` | 安装进程插桩回调 (PICI),在下一次系统调用返回时触发 |
## 用法 (C)
```
#include "remotethreat.h"
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
RT_Execution exec = RT_Create(hProcess, startAddress, lParam, RT_Hijack);
if (!RT_IsValid(&exec)) { /* handle failure */ }
RT_Wait(&exec, INFINITE); // block until the remote code has run
RT_Close(&exec); // release owned thread handle (if any)
```
`RT_Create` 返回一个 `RT_Execution` 结构体。特意不通过 `RT_Close` 释放远程 stub 分配——目标进程可能仍在异步执行它。一旦确定执行已完成,请使用 `VirtualFreeEx` 将其释放。
### 轮询代替阻塞
```
while (!RT_IsDone(&exec))
Sleep(10);
RT_Close(&exec);
```
## 用法 (C++ 包装器)
```
#include "remotethreat.hpp" // optional RAII wrapper
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
RT::Execution exec = RT::Create(hProcess, startAddress, lParam, RT::Hijack);
if (!exec) { /* handle failure */ }
exec.Wait(); // blocks until completion; RT_Close called automatically on destruction
```
## 环境要求
- Windows x86 或 x64
- 针对特权进程时,需以管理员身份运行
- C11 或更高版本(C++ 调用者:通过 `remotethreat.hpp` 需 C++11 或更高版本)
## 许可证
[MIT](LICENSE)
标签:APC注入, C/C++, SSH蜜罐, 事务性I/O, 客户端加密, 端点可见性, 系统编程, 进程注入, 远程线程