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, 中高交互蜜罐, 云资产清单, 函数转发, 动态链接库, 导出表解析, 恶意软件开发, 逆向工程