如何向调试器隐藏变量/函数名
How do I hide variable/function names from debuggers?
我创建了一个。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文件中按序号导出函数。
相关文章:
- 未使用的C++未优化的静态成员函数/变量
- 内联函数/变量的外部链接
- 同一函数中的静态函数变量初始化顺序
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 如何从doxygen输出中排除类的无证件成员函数/变量
- 如何在LUA C API中分配全局LUA函数变量
- 如何将函数变量传递给C lambda函数
- 通过另一个C++函数更改函数变量
- c++11 lambda 真的支持闭包吗?函数变量中存在语义冲突
- C++:静态成员不能在声明时定义,但静态函数变量可以?
- apache-frift是否支持函数变量作为参数
- 类函数/变量在使用之前必须声明
- 函数变量去哪里
- 无法使用函数变量?错误表达式必须具有类类型
- 如何在main中使用函数变量
- 每当尝试打印函数变量时,C++ cout 错误
- 是否存在查看成员函数/变量的整洁等效项
- 访问友元类之间的函数变量
- 函数到函数变量
- 一个定义规则是否强制创建一个静态函数变量