2

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

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

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

谢谢,

4

2 回答 2

1

对 OSX 的一些简单建议:

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

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

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

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

于 2009-04-27T20:50:08.800 回答
0

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

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

于 2009-11-07T15:49:13.143 回答