c++ - 从 dll 中删除符号

标签 c++ c gcc mingw symbols

我在 Windows 上使用 MinGW gcc 构建了一个 dll。我使用 .def 来指定导出函数并生成 .lib 导入库。然后我使用 strip.exe 去除符号表。我尝试了 objdump,它打印出空符号表。但是当我使用strings.exe时,它仍然可以打印出一堆函数名和类名。这是个问题吗?其他人是否可以根据dll中的名称查询函数?

最佳答案

阅读有关 PE 的信息,它有地址和名称表。如果你清理名称表,没有进程能够通过名称定位导出的函数,只能通过地址,这是由链接器完成的,但不是动态的: http://msdn.microsoft.com/en-us/magazine/cc301808.aspx

enter image description here

有许多方法可以保护从 dll 中导出的函数,但所有方法都已发布了漏洞利用程序。如果您真的想保护您的函数 - 在所有导出的函数中创建自定义调用约定或签名验证。

关于c++ - 从 dll 中删除符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19192412/

相关文章:

c - 关于调用自身的函数的堆栈重用?

c - 需要递归函数的解决方案

c - 将 C 语句翻译成 MIPS 汇编指令?

用 C 计算一系列的几何平均值

c++ - 在 C++ 中将引用作为对象传递?

c++ - 为什么 setCentralWidget 不起作用?

c - C中的运行时限制计时器

c - 在代码中间定义变量可能会产生编译错误

c++ - 这是病毒还是sdk附件?

c++ - 从函数返回多个类类型