本章将讲解一下关于关键全局变量的一些内容,关键的全局变量对于软件的破解非常的有用,找到了关键全局变量并改写它同样可以完成完美爆破一个程序,这里我将使用CM小例子来讲解搜索关键变量的一些技巧,最后我们来实战破解一个程序练练手,从本节课开始我们将进入实战环节,不再仅仅局限于CM小程序的破解啦。
------------------------------------------------------------
本章难度:★★★☆☆☆☆☆☆☆
课程课件:CM_09.zip
------------------------------------------------------------
在实战之前我们先来看一个简单的CM小程序,来讲解一下关于常量破解的原理性的东西,如下我编写了一个小程序,当我们点击验证和1做比较时,程序会通过CMP指令让变量中的数值和1做一次比较,然后通过比较判断是否弹出一个窗体,默认是不弹窗的,第二个正好相反,现在我们的目的就是通过修改程序中的所有常量来达到破解的目的,让两个按钮都弹出窗口。
1.直接OD载入程序,并运行起来,然后点击两个按钮,会发现都没有反映。
2.然后按下【ctrl + B】,搜索按钮特征码【FF 55 FC 5F 5E】,点击确定,然后在【00416EBD】这个位置下一个【F2】断点。
3.回到程序点击【验证和1做比较】,然后程序会断在【00416EBD】这个位置,我们直接【F7】进入这个按钮事件中去。
4.该按钮的按钮事件内容如下,CALL就是一个关键CALL,关键的比较是CMP命令,可以看到它取【4A25F0】变量的内容来进行比较。
5.我们可以直接在数据窗口跟随一下这个变量的地址,来看一下比较是否会成立,这里cmp命令会拿【0】和【1】相减,影响下面的关键跳转,【jnz】不为0则跳转,显然这条命令是需要执行的,它正好跳过了我们的弹窗。
6.如上图,我们当然可以通过修改CMP指令后面的1将其改为0来完成破解,但是在这之前我们需要确定一下还有没有其他的位置调用了这个常量来进行验证,此时我们直接在反汇编窗口,右键选择【查找】,【所有常量】。
7.记下【4A25F0】常量地址,然后直接查找
8.然后会看到如下图,会看到所有的调用了【4A25F0】这个常量地址的命令,我们直接在CMP命令上下断,MOV是赋值这里我们不需要管。
9.然后我们回到CM程序中,点击第一个按钮,会断在下图的位置,说明它开始做比较了,为了让它跳转成立,我们改写成和0做比较。
10.运行程序,程序正常弹窗了,修改第二个的方法相同,当点击第二个按钮时会断下,将其改为1即可实现爆破程序,这里不做演示了,改完直接保存文件就好了。
实战:破解 豪迪群发器2019
免责声明:该教程仅用于技术交流,并无任何商业目的,您不得将下述内容用于商业或者非法用途,否则后果自负,如果您喜欢该程序,请支持正版软件,购买注册 ,得到更好的正版服务,如有侵权请邮件联系作者!
1.直接OD载入程序,然后【F9】运行程序,让程序的字符串完全的加载出来,然后我们记下弹出的关键字【注册】后期会用到。
2.OD反汇编窗口,右键选择【中文搜索】选择【智能搜索】,然后查找关键字【注册】,这里我找到了一处关键位置,已注册版本,这句话说明程序已经完成了验证,我们点过去看看。
3.代码如下,我们直接在CALL处下一个【F2】断点,然后回到软件。
4.回到软件点击【注册】按钮,发现程序被断下了,程序被断在了【CALL】位置处,我们直接【F7】进入到CALL的内部,没错这就是计算注册码的关键CALL。
5.出这个CALL吧,我们此处暂时不分析他是怎么算的,我们直接复制这个关键常量【58E5FC】。
6.直接右键,选择【查找】,所有常量,然后在弹出的窗口中输入【58E5FC】
7.此处我们在所有的CMP比较命令上下断点,然后重新载入程序,并运行。
8.第一次断下,我们将cmp byte ptr [58E5FC], 0,改为cmp byte ptr [58E5FC], 1,也就是和1做比较。
9.第二次修改,同样将和0做比较的地方改为和1做比较。
10.第三次修改同样将0修改成和1做比较,修改完这三处调用以后,直接取消断点并运行程序。
11.破解完成,直接保存文件即可,一定要保存所有更改。