【问题标题】:Obfuscation and reverse engineering deterrents for C++ Win/OSX app [closed]C ++ Win / OSX应用程序的混淆和逆向工程威慑[关闭]
【发布时间】:2010-10-22 03:52:46
【问题描述】:

我有一个在 Windows 和 OSX 上发布的 C++ 应用程序。它使用 TCP(使用 OpenSSL 加密,natch)与我们的后端通信。我想为那些试图逆向工程协议和/或反汇编可执行文件的人抛出一些减速带。

Skype 在这方面做得非常出色,这就是为什么您找不到很多使用 Skype 的应用程序的原因。这是一篇关于它的作用的非常好的读物:http://www.secdev.org/conf/skype_BHEU06.handout.pdf

我想要一些关于如何在我们的应用中完成类似任务的想法。是否存在使代码更难进行静态分析的商业产品?投入时间来完成我列出的目标的最佳方式是什么?

谢谢,

【问题讨论】:

  • 不要依赖客户端安全性。曾经。如果您的安全性可以被黑客入侵的客户端绕过,那么您就大错特错了。
  • 我不依赖它。如果流氓客户需要一段时间才能出现,我的生活会变得更简单。这只是我“纵深防御”的一部分。

标签: obfuscation reverse-engineering


【解决方案1】:

对 OSX 的一些简单建议:

  • 防止 gdb 附加到您的程序 http://www.steike.com/code/debugging-itunes-with-gdb/ (这可以解决,但会让一些随意的探险者远离)

  • 至少将产品中的一些代码存储在可执行文件的文本段之外,例如数据或外部(加密)共享库中。

  • 不以纯文本形式存储任何敏感字符串数据,从而最大限度地保护它。对您的可执行文件运行“字符串”,如果您看到任何可能对试图找出协议的人有所帮助的内容,请对其进行加密。

  • GCC 的 -fomit-frame-pointer 选项会使调试更加痛苦(但可能会与 C++ 异常发生不良交互)。

【讨论】:

    【解决方案2】:

    如果我没记错的话,Skype 正在使用类似于以下描述的“代码卫士”的东西(也许他们付钱在 Skype 中实现它,谁知道):

    https://www.cerias.purdue.edu/tools_and_resources/bibtex_archive/archive/2001-49.pdf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2011-05-14
      • 2011-05-01
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多