【问题标题】:Any tips about securing DLL code?有关保护 DLL 代码的任何提示?
【发布时间】:2012-08-20 15:41:40
【问题描述】:

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

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

我正在使用 MVSC++ 2010 Express,并且无法向用户提供源代码。

【问题讨论】:

  • 有什么方法可以防止“用户”修改 HEX 代码? 没有,但您可以签署应用程序,让用户知道它已被修改。

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


【解决方案1】:

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

具体答案:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-09-03
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 2017-06-14
      • 2011-03-14
      相关资源
      最近更新 更多