有关保护DLL代码的任何提示?

时间:2012-08-25 07:45:53

标签: c++ dll obfuscation dll-injection project-properties

我想知道如何从注入中保护DLL(Win32,动态)文件以及如何提高编译代码的安全性。

  1. DDL源代码中有一个SQL密码,用于连接MySQL。它足够安全吗?
  2. 有没有办法阻止'用户'修改HEX代码?我的意思是从源代码中获得更多安全保障。
  3. 项目属性中的哪些选项最适合优化并可能保护DLL?
  4. 我使用MVSC ++ 2010 Express并且用户的源代码将无法使用。

2 个答案:

答案 0 :(得分:3)

为了使DLL可用,它需要是可读的。这意味着如果您加密文件,您还需要在使用之前对其进行解密。此外,您可以对您的DLL进行签名,以便您知道它尚未被修改,但仍然不会隐藏文件本身中的符号。另一种方法是对代码进行模糊处理,以便用户更难理解,但操作系统仍然可以轻松地执行它 - 将其视为一种弱形式的加密。

具体答案:

  1. 如果您在任何二进制文件中有密码,那么它就不安全。查看二进制文件的字符串就可以找到它。

  2. 用户可以随时修改文件,但可以使用某种加密方案对文件进行签名,以确保您知道文件是否已被篡改。

  3. 我不使用该特定工具,但我确信它不会为您提供任何真正的安全性。

  4. 提示:您可以在源代码中使用SQL DB密码,而不是将命令发送到服务器,该服务器将对其进行身份验证和处理。这样,您的文件中就不需要显式密码了。

答案 1 :(得分:1)

除非加密整个文件,否则DLL中的任何文字字符串都是可读的。不要将密码存储为dll中的文字字符串。期。此外,您必须记住汇编代码只是数据,如果文件是可写的,任何拥有英特尔参考表和十六进制编辑器,反汇编程序和汇编程序的人都可以在有权访问该文件时进行更改。您总是可以对源进行模糊处理,这会使程序集的可读性略低,但仍然可以完全修改。

简而言之,您所做的任何事情都不会完全保护您的DLL。