DLL项目名称保留在其可执行文件中

时间:2016-06-04 15:09:38

标签: c++ dll visual-studio-2015

我正在开发一个由多个部分组成的项目,其中一个部分是主程序在运行时加载的DLL。
由于它是我正在处理的敏感事物,我想让潜在的攻击者更加努力地对它进行逆向工程。
现在,问题出在这里:DLL文件本身包含一个ASCII字符串,其中包含[ {"1":{ "x1":"20", "x2":"21", "x3":"22" }, { "x4":"23", "x5":"24", "x6":"25" }, { "x7":"26", "x8":"27", "x9":"28" }, } ] 格式的项目名称,位于[project name].dll部分的某个位置。
根据OllyDbg,DLL 从不引用。
我尝试打开/关闭VS 2015中的每个设置,我认为这会导致它,但没有结果。另外,我注意到当你添加.def文件并向exe项目添加一些导出时会发生同样的事情(据我所知,exe文件通常没有字符串)。

这是一个问题,因为项目名称向攻击者透露了有价值的信息。

这是什么?有没有办法摆脱它或使它成为一个完全随机的值呢?

1 个答案:

答案 0 :(得分:1)

使用.def文件中的LIBRARY设置更改嵌入的名称。

这可能会更改link.exe创建的文件名,但文件名可以在事后更改。无论如何,文件名会链接你的这些敏感信息,所以显然你正在改变它......然后它就不会与你的导入库相匹配。因此,最好在链接阶段正确设置输出文件名,以便导入库正确。