michaellandi/exportstoc
GitHub: michaellandi/exportstoc
一款将DLL导出函数自动转换为C++代理代码的Windows GUI工具,用于快速生成DLL劫持和API转发所需的代码框架。
Stars: 76 | Forks: 12
# 导出到 C++
**ExportsToC++** 是一款 Windows GUI 工具,用于解析 `dumpbin.exe` 的输出,并将 DLL 的导出函数列表转换为 C++ 代理代码。这对于创建代理 DLL 以拦截 API 调用非常有用。
## 系统要求
- Windows
- .NET Framework 2.0
- `dumpbin.exe`(包含在 Visual Studio 中)—— 会自动在 Visual Studio 8 或 9 的安装目录中定位,或者在您的 `PATH` 环境变量中的任何位置查找
## 使用方法
1. 通过 **File > Open** 在工具中打开一个 DLL(或将其作为命令行参数传入)
2. 该工具将运行 `dumpbin.exe /EXPORTS` 并在顶部窗格中显示原始的导出表
3. 点击 **Generate** 在底部窗格中生成 C++ 代理代码
4. 出现提示时,输入代理 DLL 的名称(不带 `.dll`)
5. 通过 **File > Save** 将输出复制到剪贴板或将其另存为 `.cpp` 文件
您也可以在启动时预加载一个文件:
```
ExportsToC++.exe path\to\target.dll
```
## 输入
该工具接受任何导出函数的 Windows **DLL** (`.dll`)。在内部它会运行:
```
dumpbin.exe /EXPORTS "target.dll"
```
原始的 `dumpbin` 输出将显示在顶部窗格中。导出表必须至少包含一个函数——如果 DLL 没有任何导出,工具将向您发出警告并跳过生成步骤。
## 输出
生成的 `.cpp` 文件包含:
- 标准包含(`stdafx.h`、`windows.h`、`iostream`)
- 针对每个导出函数的 `#pragma comment(linker, ...)` 指令,通过名称和序数将其从代理 DLL 转发到真实的 DLL:
```
#include "stdafx.h"
#include
#include
using namespace std;
#pragma comment (linker, "/export:SomeFunction=reallib.SomeFunction,@1")
#pragma comment (linker, "/export:AnotherFunction=reallib.AnotherFunction,@2")
// ...
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD reason, LPVOID)
{
return true;
}
```
转发指令中使用的代理 DLL 名称(例如上面提到的 `reallib`)是在您点击 Generate 时输入的。输出内容可以复制到剪贴板或保存为 `.cpp` 源文件。
## 许可证
MIT 许可证。详情请参见 [LICENSE](LICENSE)。
标签:API拦截, C++代码生成, DLL代理, dumpbin, GUI工具, Hook技术, .NET Framework, 中高交互蜜罐, 云资产清单, 函数转发, 动态链接库, 导出表解析, 恶意软件开发, 逆向工程