创建代理DLL工具ProxiFy的使用指南

在软件开发中,有时候需要创建一个代理DLL,以便在不同的架构(如32位和64位)下使用相同的DLL。ProxiFy是一个简单而强大的工具,它可以快速地创建这样的代理DLL。本文将介绍ProxiFy的背景、编译方法、使用方法以及一些注意事项。

在ProxiFy之前,曾使用Michael Chourdakis开发的"wrappit"工具来创建代理DLL。然而,发现wrappit不支持64位架构的DLL,并且在创建DLL的过程中步骤较多,特别是需要使用dumpbin来生成DLL的导出,这让觉得有些繁琐。因此,开发了ProxiFy,它使用跳转到导出地址的技术,这一技术受到了wrappit的启发。

编译ProxiFy

要编译ProxiFy,请确保包含以下库: Imagehlp.libdbghelp.lib。 同时,需要将字符集设置为“使用多字节字符集”。

使用ProxiFy

使用ProxiFy非常简单。它的设计理念是减少创建代理DLL所需的步骤。只需要运行ProxiFy.exe,然后系统会提示选择一个DLL文件。

选择DLL文件后,将收到一个消息框,提示选择的DLL是32位文件还是64位文件。这个消息框的唯一目的是让用户知道他们刚刚创建的代理DLL的架构。虽然觉得这有点用,但如果想在源代码中删除它也是可以的,它没有其他用途。

ProxiFy会根据选择的DLL创建3个文件(如果是64位DLL)或2个文件(如果是32位DLL)。下面将介绍如何创建一个代理DLL项目,以Visual Studio 2015为例。

首先创建一个DLL项目,不会详细介绍如何做到这一点,因为有很多优秀的文章已经讨论过这个话题。

创建项目后,将.cpp文件和.def文件添加到项目中。确保进入链接器设置,并将.def文件设置为模块定义文件。可以在属性 -> 链接器 -> 输入下找到这个选项。

如果项目是32位项目,请确保将项目设置为Win32(或x86)。然后就完成了。

64位DLL的额外步骤

如果有一个64位DLL,会创建一个.asm文件,与.cpp和.def文件一起。在将这个文件添加到项目之前,应该右键点击项目 -> 构建依赖项 -> 构建自定义... 然后勾选".masm"。这将允许.asm文件正确工作。

现在将.asm文件也添加到项目中。不确定正确的设置是否会自动设置,所以为了再次检查,右键点击它并转到属性。在"常规 -> 项目类型"下,确保它设置为:Microsoft Macro Assembler。

作为代理DLL,它需要原始DLL在同一个文件夹中。ProxiFy假设将原始DLL的名称后面加上一个下划线。例如,steam_api64.dll将变成steam_api64_.dll。这可以在ProxiFy中更改,或者可以在生成的CPP文件中更改LoadLibrary调用。

注意事项

该项目不适用于使用序数导出的DLL。这可以做到,但到目前为止,没有遇到不使用序数导出的问题。据所知,通常不鼓励这样做,所以没有包括它,因为还没有需要它。

相关文章
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485