1

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

  1. DDL 源代码中有一个 SQL 密码,用于连接 MySQL。离开它是否足够安全?
  2. 有什么办法可以防止“用户”修改 HEX 代码?我的意思是从源代码中获得更多保护。
  3. 项目属性中的哪些选项最适合优化和保护 DLL?

我正在使用 MVSC++ 2010 Express,并且用户的源代码将不可用。

4

2 回答 2

3

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

具体答案:

  1. 如果您在任何二进制文件中都有密码,那么它是不安全的。查看二进制文件的字符串以找到它是一件简单的事情。

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

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

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

于 2012-08-25T08:01:48.583 回答
1

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

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

于 2012-08-25T08:13:17.043 回答