gpt4 book ai didi

exe - 如何保护 Exe 文件免遭反编译

转载 作者:行者123 更新时间:2023-12-04 13:07:31 26 4
gpt4 key购买 nike

有哪些方法可以保护exe文件免遭逆向工程。有很多打包工具可以打包exe文件。这种方法在http://c-madeeasy.blogspot.com/2011/07/protecting-your-c-programexe-files-from.html中提到过。

这种方法有效吗?

最佳答案

防止程序被逆向工程(“理解”)的唯一好方法是修改其结构,从本质上迫使对手理解图灵机。基本上你要做的是:

  • 考虑一些通常被证明在计算上很困难的问题
  • 合成一个你知道结果的版本;与解决版本
  • 相比,这通常很容易
  • 使正确的程序执行依赖于正确的答案
  • 如果答案不正确,让程序计算无意义

  • 现在,盯着你的代码的对手必须通过解决算法上的难题来弄清楚“正确”的计算是什么。在 40 年的文献中,有大量的 NP 难题是没有人能有效解决的;如果您的程序依赖于其中之一,那么这是一个不错的选择,J. Random Reverse-Engineer 不会突然能够解决它们。

    人们通常通过转换原始程序以掩盖其控制流和/或其数据流来实现这一点。一些技术通过将一些控制流转换为本质上的数据流(“通过这个指针数组间接跳转”)来扰乱控制流,然后实现需要精确指向分析的数据流算法,这既被证明是困难的,也被证明是困难的实践。

    这是一篇相当浅显地描述各种技术的论文,但它很容易阅读:
    http://www.cs.sjsu.edu/faculty/stamp/students/kundu_deepti.pdf

    这是另一个侧重于如何确保混淆转换导致计算困难的结果:
    http://www.springerlink.com/content/41135jkqxv9l3xme/

    这是一个调查各种控制流转换方法的方法,
    包括提供安全级别保证的那些:
    http://www.springerlink.com/content/g157gxr14m149l13/

    本文以低开销混淆二进制程序中的控制流:
    http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.167.3773&rank=2

    现在,要防止程序被反编译可能会遇到很多麻烦。但是如果反编译出来的东西无法理解,你可能就不会费心了;这就是我要采取的方法。

    如果你坚持要防止反编译,你可以通过考虑反编译的目的来攻击它。反编译本质上是建议您可以将目标程序的每个字节转换为某段代码。使失败的一种方法是确保应用程序显然可以使用每个字节
    作为计算机指令和数据,即使实际上并没有这样做,并且这样做的决定被上述各种方法混淆了。对此的一种变体是在代码中包含许多实际上是无条件的条件分支(使用控制流混淆方法);分支的另一端陷入看似有效但分支到现有代码中疯狂位置的无意义代码。这个想法的另一个变体是将您的程序实现为混淆解释器,并将实际功能实现为一组解释数据。
    使这个失败的一个有趣的方法是在运行时生成代码并即时执行它;大多数传统语言(如 C)几乎无法表示这一点。

    这样构建的程序很难反编译,更不用说事后理解了。

    声称在保护二进制代码方面做得很好的工具列在:
    https://security.stackexchange.com/questions/1069/any-comprehensive-solutions-for-binary-code-protection-and-anti-reverse-engineeri

    关于exe - 如何保护 Exe 文件免遭反编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6887499/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com