如何向调试器隐藏变量/函数名

How do I hide variable/function names from debuggers?

本文关键字:函数 变量 隐藏 调试器      更新时间:2023-10-16

我创建了一个。DLL。这个DLL处理我的许多程序的核心功能,需要尽可能安全和难以理解。我已经用包装机把它包装好了。

然而,当我打开时,我注意到了这一点。OllyDBG中的DLL所有变量名和函数名仍然可见。。。

例如,我可以看到这个

MOV [VariableName], EAX

我想让[变量名称]不会以如此明显的方式显示。。也许更像。。。。

MOV DWORD PTR DS:[ESI], EAX

我知道一定有办法做到这一点,因为我没有看到软件有VariableNames和FunctionNames显示给每个人。。。

有人有什么建议吗?我已经尝试删除在。DLL已生成。。。什么都没改变。

如果使用VC++进行构建,变量和函数名存储在.pdb文件中——pdb代表"程序数据库"。正如Steve Hansen所说,在发布版本中,这是默认禁用的;然而,启用它是一个很好的做法。只需删除.pdb文件,OllyDBG就不应该再显示变量和函数名。

但是,从DLL导出的函数的名称仍然可见,例如dumpbin /exports mydll.dll,除非您在.def文件中按序号导出函数。