我们还有一个EXE,它使用静态链接到DLL的LIB文件(即不是手动使用LoadLibrary)的简单方法使用这个DLL。
当我们部署EXE时,我们希望DLL文件名由于模糊的原因而被更改(根据客户的要求)。
我们如何做到这一点,使我们的EXE仍然自动发现DLL?
我已经尝试重命名DLL和LIB文件(在它们被构建到其正常名称之后),然后将EXE项目设置更改为与重命名的LIB链接。这在运行时失败,因为我猜这个DLL的名字被烧录到LIB文件中,而不是简单地通过链接器来代替“.lib”和“.dll”来猜测。
一般来说,我们不想将这个混淆应用于DLL的所有用途,所以我们希望保留当前的DLL项目输出文件。
我希望有一种方法可以编辑DLL的LIB文件,并用其他东西替换DLL文件的硬编码名称。在这种情况下,这可以完全在EXE项目中完成(可能作为预构建步骤)。
更新:我发现延迟加载不起作用,因为我的DLL包含导出的C类。
见this article。
有什么办法吗
在输出中可以看到导出的函数的名称。现在创建一个这样的def文件:
LIBRARY WS2_32 EXPORTS accept @1 bind @2 closesocket @3 connect @4
@number是dumpbin输出中的序数
使用LIB / MACHINE:x86 /def:ws2_32.def来转换lib文件。
现在,您可以轻松修改def文件,并在每次重命名dll时生成一个新的libfile。
您可以使用dumpbin来验证libfile:dumpbin / exports ws2_32.lib。你应该得到与原始的lib文件相同的输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。