|
本教程由热情洋溢的木木不哭赞助播出(“哎呀我摔倒了要漂亮姐姐亲亲才能起来 ”)
逆向前言:在x日论坛,看到的一个课件,就随便玩了玩,发现了一些有趣的事,程序居然是联网获取服务器里面的txt进行机器码+注册码对比,但是本身又是重启验证,有趣得很
逆向正文:
至于爆破的话,这里只顺便提一点,跟之前我做过很多次图文一样,还是地址常量的问题,这里贴上它的关键代码,略微一分析就ok,但是本期教程的重点不在此,
0080DC7A /75 49 jnz short 0080DCC5
0080DC7C |A1 10888200 mov eax, dword ptr [0x828810] ''''' 这里是把828810地址处的值赋值给了eax
0080DC81 |C700 01000000 mov dword ptr [eax], 0x1 ''''''这里是给刚刚eax的值的值,这里注意,是eax的值的值,少两字意思不一样,赋值为1
以上的注释,稍微讲一下,看过我教程的人都知道,我说的是什么意思,反正说白了,这个赋值为1才是关键,如果不是1而是0,那就是未注册,剩下的 你们懂得、、
--------------------------分割线
机器码Patch:
在说机器码Patch之前,我们回到逆向前言,之前我说过了,这个程序他是获取服务器的txt文本,对比里面有没有你的注册码跟机器码,
换句话来说,假设你的注册码+机器码是匹配的,那么如果服务器中没有你的机器码,就算你的注册码是对的,它也会提示你没有登记,还是未注册(爆破当我没说这句)
那么我强调很多次了,机器码Patch的要点,是要在他刚刚算出机器码的地方Patch,否则人家都传递复制出来了,你再改也是改的标签或者是编辑框的内容,就没啥意义了
在此我们换位思考,如果你是作者,你是会把取机器码放在程序启动时,还是事件发生时?一般来说都是放在程序窗口启动完毕,或者将要启动完毕的时候,所以由此我们找到
我下的断点的上一句代码,就是那个call,他里面实际上是取了一个cpuid,后面的我就没注意看了,反正好像是分了两段,这个不是重点,了解一下就行
然后这里Patch,看到这句代码
0080E706 8B55 E8 mov edx, dword ptr [ebp-0x18]
很明显是把机器码的值传递到edx,所以这时候我们要么修改edx,要么修改后面的ebp-18,这里提供两个修改的方式
修改edx:
mov edx, dword ptr [ebp-0x18]
mov edx,(存放机器码的位置,如00401000)
修改ebp-18:(比较麻烦)
mov edx, dword ptr [ebp-0x18]
mov dword ptr ds[edx],
mov dword ptr ds[edx+4],
mov dword ptr ds[edx+8],
mov dword ptr ds[edx+C],
,后面是把机器码拆分为4段,每段4位,所以后面填每4位的16进制就ok(前提是你的机器码是16位数,不足则继续添加,多余则减小偏移)
我知道你们这些新来的,基本上也看不懂上面的操作,你们没有打好基础,这个说句实在的我也教不了,自学吧,不要以为自己会什么push,会什么test edx,3就已经不得了了,
基础不扎实做什么都是半吊子,就跟我一样,,一座高楼怎么可以没有扎实的地基呢?(lz开启了啰哩啰唆模式,无视即可)
效果图:
这个就是最终效果,当然你要拿去卖的话,改啥都没问题,反正挺好玩的,,(假如这时候你有一个正版注册码+机器码,并且已经登记,通过Patch可直接使用)
我的目的就是上面括号所说,这时候别急,教程还没完,所以我接着说机器码的Patch,这个比上面那个Patch机器码更高端更装x,为什么?
因为如果你把你自己的机器码的注册码追出来以后,改完存放的注册码文件直接可用,你说屌不屌?无视联网验证,联网验证其实就是在输入注册码的时候才会去获取的,但是如果
你是直接把注册码文件都搞出来了,这个联网验证自然就废了,那么话不多说,进行下面的高逼格玩法
注册码Patch:
注册码Patch,顾名思义,你要先有注册码,然后才能Patch对不对?什么?问我怎么追到注册码,刚刚你不是说联网验证吗?那还追个毛线?lz是不是sb了?
嗯哼,我有必要解释下,联网验证,它验证的是机器码+注册码是否存在,首先验证它是否存在,必定要先算出来对不对?要算出来,自然就好办了,追码模式开启:
如果你在我断点的位置断不下,不要惊慌,其实是我干掉了一个判断而已
至于这个注册码为什么会在这,我猜测可能是下面这个je应该是在判断注册码是否存在吧,只是猜测,当然这个不是重点,重点是Patch机器码
0080DC5A /0F84 EF000000 je 0080DD4F NOP即可追码
到现在为止我们找到了注册码,那么我们就要把注册码写入到注册文件,需要用到的工具EverEdit或者WinHex,这个大家随意,EverEdit我也有分享过,自己论坛找
保存注册码的偏移:AAF20
这样保存即可,这个注册码空文件我等会会在末尾发出来,AAF20这一段我会直接写0,到时候你们要改的话就直接把00用注册码覆盖即可
说实在话,确实是我不记得如果没有注册,到底有没有这个注册文件了,我也是无意中发现这个注册码居然可以修改的,,,我的天,,,
妥妥的,没意外,接下来我们看他的服务器txt文件,链接为:http://www.bq998.com/WNHWGG/HardID.txt
然后大家看着办吧,要改啥这里都有,前面的是机器码,后面的是注册码,有兴趣的可以山寨或者做个KeyGen都行
不过由于我对算法没什么兴趣,就说说我所知道的吧,首先它获取了注册码的位数为10(十进制16),后来好像是进行了分割,最后是把算出来的注册码进行每两位数进行倒转
比如算出来的结果为123456,最终的注册码就为214365,,,软件就分析到此,还是那句话,看再多的教程自己不动手=0
到时候如果有必要的话我会放一份关于内存补丁无效的分析教程,,,或者放点其他的也行,,,
|
评分
-
参与人数 17 | 威望 +1 |
HB +42 |
THX +10 |
收起
理由
|
禽大师
| |
+ 1 |
|
|
lies
| |
+ 1 |
|
|
xiaoxixpj
| |
+ 1 |
|
[吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意! |
Corner514
| |
+ 1 |
|
|
sjtkxy
| |
+ 2 |
+ 1 |
|
24567
| |
|
+ 1 |
|
Jawon
| |
|
+ 1 |
|
Soul1999
| |
+ 1 |
|
|
消逝的过去
| |
|
+ 1 |
|
冷亦飞
| |
+ 1 |
|
|
zxjzzh
| |
|
+ 1 |
[吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守! |
叶落花开
| |
|
+ 1 |
|
sy12138
| |
+ 1 |
|
[快捷评语] - 吃水不忘打井人,给个评分懂感恩! |
1206143866
| |
+ 1 |
+ 1 |
分享精神,是最值得尊敬的! |
菜鸟中的菜鸟
| |
+ 1 |
+ 1 |
膜拜高手 |
892644330
| |
+ 1 |
+ 1 |
分享精神,是最值得尊敬的! |
Shark恒
| + 1 |
+ 30 |
+ 1 |
评分=感恩!简单却充满爱!感谢您的作品! |
查看全部评分
|