盗版软件经常不稳定是一个事实,原因很复杂,笔者尝试着从多个方面对其进行分析。
1、盗版者破解正版软件的方法与其他软件发生了冲突。
一般对正版软件的破解如果能够制作出注册机keygen,那么算是比较完美的破解方式。
此时的主要风险是注册机本身是否带毒,特别是有些注册机要求必须在本机以管理员权限执行(因为需要取得硬件信息),所以不能用虚拟机运行去防范风险。但制作 注册机要求对该软件的注册模式十分清楚,而且破解了注册码的加密算法,有些软件因为加密强度或者是防盗版方式不同的原因,是没有办法采取这种方式的。
第二种常见的方式是直接修改目标软件的二进制文件。
最简单的是目标软件采用验证注册码的模式,这时只需要把之后的跳转语句从类似JNZ修改为JZ,或者直接JMP(修改了判断注册码是否为真的条件,相当于把 “如果注册码正确则跳转”修改为“如果注册码错误则跳转”或者“不管如何都跳转”)。这样的破解,并不会增加被破解软件的不稳定性。
但是因为技术对抗的原因,现在的正版软件并不会给你一个简单的条件判断,而是会利用一些隐藏逻辑在多次多处进行判断,甚至有些是隐含在业务逻辑中的,此时贸 然修改其中的一部分逻辑,很容易导致程序在某些特定情况下发生不可预测的后果。
例如,虽然跳过了注册码验证部分,但是注册码内含了某个业务参数,盗版软件 的这个参数变成了零或者随机数,在需要这个参数的业务模块,软件可能会出错甚至崩溃。此时,盗版软件不稳定的主要症状包括:计算错误、随机崩溃等。
由于对抗反编译技术越来越成熟,直接修改目标软件的二进制文件有时会是非常巨大的工作量,因此第三种常见的模式是制作loader(加载器),并且在内存中实时监控修改关键的参数(源二进制文件无论如何加密混淆,送到操作系统执行的时候必须解密,操作系统才能识别)。
湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网