如何隐藏调试器中的变量/函数名称?

时间:2015-03-04 15:21:12

标签: c++ assembly dll reverse-engineering

我在C ++中创建了一个.DLL。 .DLL处理我的许多程序核心功能,并且需要尽可能安全和难以理解。我已经用包装工打包了。

但是,我注意到当我在OllyDBG中打开.DLL时,所有变量名和函数名仍然可见......

例如,我可以看到这个

MOV [VariableName], EAX

我想这样做[VariableName]不会以如此明显的方式显示..也许更像是......

MOV DWORD PTR DS:[ESI], EAX

我知道必须有一种方法可以做到这一点,因为我没有看到那些显示变量名和功能名的软件供所有人查看...

有没有人有任何建议,我已经尝试删除在构建.DLL时创建的PDB ...什么都没改。

1 个答案:

答案 0 :(得分:1)

如果使用VC ++构建,变量和函数名称存储在.pdb文件中--- pdb代表"程序数据库"。正如Steve Hansen所说,在发布版本中默认禁用此功能;但是,启用它是good practice。只需删除.pdb文件,OllyDBG就不应再显示变量和函数名称。

但是,从DLL导出的函数的名称仍然可见,例如dumpbin /exports mydll.dll,除非您exported the functions by ordinal, in the .def file