我正在开发一个由多个部分组成的项目,其中一个部分是主程序在运行时加载的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文件通常没有字符串)。
这是一个问题,因为项目名称向攻击者透露了有价值的信息。
这是什么?有没有办法摆脱它或使它成为一个完全随机的值呢?
答案 0 :(得分:1)
使用.def文件中的LIBRARY设置更改嵌入的名称。
这可能会更改link.exe创建的文件名,但文件名可以在事后更改。无论如何,文件名会链接你的这些敏感信息,所以显然你正在改变它......然后它就不会与你的导入库相匹配。因此,最好在链接阶段正确设置输出文件名,以便导入库正确。