【发布时间】:2010-06-03 22:20:16
【问题描述】:
只是好奇,有人告诉我,使用 dll 文件,您可以对 dll 进行修改,而无需重新编译使用它的整个应用程序。另一方面,需要编译 .lib 文件,以便代码可以作为一个链接到应用程序。
所以我知道 .lib 文件已转换为机器代码。但是dll呢?它们是否在应用程序执行时变成机器代码??
如果使用不当,这可能会导致黑客入侵。
【问题讨论】:
-
尝试
objdump -x somefile.dll > dllinfo.txt并阅读 dllinfo.txt 以检查 DLL 的内容 -
我不会担心这种方式“黑客攻击” - 您可以像替换 dll 一样轻松替换可执行文件。无论哪种方式,您都需要获得许可才能将任意代码复制到机器上并让用户运行它。很确定MS已经想到了这个:)
-
如果您认为运行代码的人可以更改代码是个问题,您最好修复所有安全性依赖于该假设的代码...
-
@all 答案:也有 DLL不包含“机器代码”。例如。仅包含资源部分的 DLL。
-
@Pindatjuh,仅资源 DLL 不仅是可能的,而且它们实际上相当普遍。例如,在 Windows 世界中,这是实现国际化的一种简单方法,因为可以让 UI 中可见的所有文本都来自资源。
标签: c++ c visual-studio visual-studio-2008