软件分析、破解与保护
静态和动态分析
一个软件产品可以使用静态或动态分析方法来进行分析。静态分析意味着保护破解算法基于反汇编结果分析或受保护应用程序的反编译。破解加密或动态变化的可执行文件需要动态分析,因为使用静态分析来达到此目的是十分困难的。
对于动态分析,正在破解的程序在调试器框架中执行。这样的话,程序运行期间发生的一切都可以由调试器控制。在动态分析期间,破解者使用调试模式逐个绕过程序的所有保护算法,特别是注册密钥生成和检查过程。 另一个经常使用的动态分析工具是跟踪破解程序查询的文件,系统服务,端口和外部设备。
保护应用程序免受破解的主要工具是。大多数保护器提供的保护基于原始可执行文件的,重点放在保护解包/解密过程上。
这种算法通常不足以提供可靠的保护。如果应用程序受到打包保护,黑客可以在解包器完成其工作后立即进行内存转储,从而轻松获取原始解压缩文件。此外,还有多种自动化工具可以破解最流行的保护器。 加密也是如此:在获得适当的许可证密钥(通常是合法购买)之后,破解者可以解密受保护的代码部分。
反调试技术
一些软件保护器使用多种反调试技术。但是,它们中的每一个都会影响受保护程序的性能。此外,反调试方法仅对动态分析有效,对静态分析完全无效。更重要的是,现代保护者使用的所有反调试方法都是众所周知的,破解者已经编写了许多实用程序来避免或绕过它们。活动监视器完全不受内置反调试保护的影响。
混淆和虚拟化
保护应用程序的更有效方法是,这会使受保护应用程序代码的分析变得复杂。通常,这些保护方法的高效率是基于人为因素的:代码越复杂,应用程序使用的资源越多,破解者就越难理解程序逻辑,从而无法破解和保护。
混淆通过向应用程序添加过多的指令来“纠缠”应用程序的代码。虚拟化将源代码转换为由特殊解释器执行的,该解释器模仿具有特定命令集的虚拟机。因此,虚拟化导致生成代码的复杂度高且不可降低,如果应用得当,用这种方法保护的代码不包含显式恢复原始代码的方法。因此,虚拟化的主要优点是代码的虚拟化片段在执行过程中不会转换为机器语言命令,这反过来又可以防止破解者获取应用程序的原始代码。
的架构,为虚拟机模拟的处理器的相应架构构建反汇编程序,并分析反汇编代码。正确实现的虚拟机使得为其创建反汇编程序成为一项困难的任务。虚拟化的唯一缺点是执行速度比较慢,所以这种方法应该只适用于对执行速度不重要的部分代码。
如今,大多数保护者并没有过多关注混淆和虚拟化,这允许破解者在自动或半自动模式下移除此类保护。现代保护程序的另一个瓶颈是使用未记录的 Windows 功能,这会导致受保护应用程序在较新版本的操作系统中或启用 DEP 时的操作受限。
以上便是本篇文章的分享,如果您有任何疑问或者想获取更多产品试用/授权/价格信息,请点击VMProtect了解。