有没有针对二进制代码保护和反逆向工程的综合解决方案?

信息安全 linux 攻击预防 爪哇 逆向工程 二进制代码
2021-09-07 20:54:17

有谁知道具有全面二进制强化和反逆向工程功能的好产品?或者更好的是,有没有人看过独立评论比较执行这些类型的二进制代码保护的产品?我只找到一两个提供全面解决方案的:

  1. Arxan GuardIt http://www.arxan.com/software-protection-products/index.php
  2. PikeWerks http://pikewerks.com

其中,就其保护机制而言,甚至 Arxan 似乎也是最全面的。我正在寻找的功能类型包括:

  • 防止逆向工程
  • 防止 BORE 攻击(一旦到处运行就中断)
  • 防篡改保护
  • 防止二进制修改

为了提供这些功能,产品将在更大的类别中实现许多不同的技术:

  • 静态和动态二进制混淆
  • 虚拟机
  • 静态和运行时加密
  • 校验和和时间
  • 反调试
  • 验证

例如,要实现静态二进制混淆,产品应该提供许多不同的技术,从基本常量和导出重命名到路径擦伤、假代码插入等。如需很好的参考,请参阅felinemenace.org上的 Andrew Griffith 关于二进制保护方案的 论文

我对 PikeWerks 了解不多,但我喜欢 Arxan 的产品听起来很方便地集成到构建环境中,因此不需要自定义代码。此外,它似乎不仅具有防御能力,而且还具有检测应对攻击的能力。

* 更新 * 我应该列出平台要求:Linux、x86、x64、Java、C 和 C++。

4个回答

您在保护二进制文件免受破解方面投入的越多:

  • 投资于为客户增加价值的项目成本越少
  • 你的产品越贵,合法客户就会流失
  • 您的上市时间越长,让不太保守的竞争对手执行得更快

虚拟机是 IT 部门现在运行方式的重要组成部分。避免在虚拟机中运行,避免将产品出售给部分市场。

防篡改/身份验证可能应该由操作系统功能处理:我知道 Windows、Mac OS 和许多智能手机平台已经支持该功能。我的主要专业领域是 OS X,它有一个“kill”标志,因此未签名的进程可以自愿自杀。应用程序可以测试自己的签名,附带条件是,如果您的应用程序被破解,您可以假设测试也已更改或删除。

混淆/加密技术毫无价值:在某些时候,CPU 必须查看它实际需要运行的指令,此时可以转储这些指令以生成“干净”的二进制文件。

总结所有以前的答案 - 100% 保证保护您的应用程序是不可能的。如果软件好,迟早会被破解,如果保护硬,那么它就会被卡(非法购买,但有合法许可证),并且将找到如何运行您的软件而无需付费的方法。看看 IDA Pro - 我认为这个软件的作者真的知道如何保护他的软件,然而,我们可以在互联网上找到破解版本。因此,如果您想开始销售您的程序,请为破解者和开发人员之间的永恒竞赛做好准备,他们正试图思考下一个版本该做什么来更改/改进保护。

如果没有二进制保护的哲学方面,通常使用保护器的几种方法:

  • 链接到硬件;
  • CRC校验;
  • 原始入口点隐藏;
  • 不同的拆包技巧——应用不寻常的拆包算法;
  • 进口和其他部分损坏;
  • 通过调试器错误的不同反调试技巧;

所有这些都可以被绕过。此外,它会减慢您的软件速度,有时会导致新的错误和不稳定问题。

开发人员通常适用于他们的软件的内容:

  • 代码混合(加扰)、混淆;
  • 应用加密;
  • 伪代码使用;
  • 通过 EH 出现故意错误;

同样,它能够以任何方式绕过这些保护。然而,加密在今天看来是更可取和最好的解决方案。但可能很难安全地实施,此外,它可能会显着降低软件速度。

最后是保护软件。从我听说的很好:

我不会深入观察上面提到的每个软件,你应该自己做。如果您正在考虑购买其中一个保护者的许可证,请仔细考虑您的努力,以及有关保护的可能问题。

我使用 InishTech 的 SLP 服务器。 http://www.inishtech.com 它以前是由微软开发的,后来被分拆成一个第三方公司。

SLP 是一种保护在 Windows 平台上运行的软件并解决您的许多问题(如果不是全部)的技术。我一直在与他们的销售代表沟通,他们为小型开发人员、初创公司和软件的自定义部署制定了一些具有成本效益的计划。

它还结合基本代码保护处理软件许可、计量和购买前试用。

我首先要说的是,没有保证可以强制执行这些事情。我的建议是不要将您的自定义算法发送给客户端,将它们保存在您控制的服务器上。