对一个重启验证进行分析并增加试用次数
本教程由热情洋溢的木木不哭赞助播出(“哎呀我摔倒了要漂亮姐姐亲亲才能起来{:5_187:}”)逆向前言:逆向套路跟上篇SMC的教程是一样的,只不过那个程序有一直反复的调用算法部分,这次这个程序没有反复调用,所以可以玩一玩,,,,,
逆向正文:
首先我们注册一遍,发现了两个点,一个是这个程序的标题,另外一个是这个信息框,,这就好办了对不对?下信息框断点或者是标题设置断点都行,这个大家都随意,我喜欢信息框断点
然后根据恒大定律(关键跳上必有关键call),我们顺势找到00407A58|.E8 D3F3FFFF call 00406E30关键call
此时我们不清楚错误的值是什么,只知道是一个test eax,eax,然后je就跳了(跳到了我们的注册错误,如果不跳就会出现正确)
我们暂时能分析出来的就是这样对不对?所以我们要知道他具体的值,到底值为什么je就跳,因此我们在这个test eax,eax下断
发现他eax的值为0,所以je跳转到了错误,很明显,我们要改1,或者要把je给NOP掉,所以本次的关键点
1.改je为NOP,使跳转失效
不管结果如何我们来试一试,看看会发生什么?
是不是好开心?是不是很激动?你以为这样就完了?骚年你们还年轻得很,重启试试?
小骚年们,就问你们的心凉不凉?不过也还好,功能方面应该是没问题,但是这个每次要输入注册码点OK 是不是挺麻烦的?别急,我们这回来找出他验证的点
还记得我刚才说的恒大定律不?关键call进去下断,重启以后,我们来进一步进行分析
我就只分析到这,具体怎么算的我就不管了,然后我们来看到底是哪个点赋值eax为0,然后我们就修改哪个点就行
所以我们要改的话可以考虑在上面那个call里面改
mov dword ptr , 0x1
或者直接不要这个call 直接这个call的代码用这句代码覆盖也行
箭头的位置为重启验证的关键跳,如果跳过则不存在那个注册框,至此完成爆破
你以为这样就完了?这回确实完了,但是我们来玩点有意思的东西,我们来看试用
如果你没有试用过的话,这里应该是50次,所以我们今天的结果就是要来改这个次数,让它不减反加,有意思吧?
同理依旧是信息框断点,这里就不演示了,不懂的话往回看
事实上在这里,你这样看是发现不了什么的,但是如果我给你分析呢?
00407C8E 68 A0DD4F00 push 004FDDA0 ; PDF Password Remover v5.0
00407C93 B9 32000000 mov ecx, 0x32
00407C98 2B8D 58FEFFFF sub ecx, dword ptr
00407C9E 51 push ecx
00407C9F 68 BCDD4F00 push 004FDDBC ; Your have %d times to try, please register %s, thanks for your support!
首先第一句猜测应该是标题,这个基本无伤大雅,不要深究他的意义
第二句是重点,mov ecx,32 这个32是多少呢?它不是真正意义上的32吗,他是十六进制的32,如果是转换成10进制是多少呢?我们来试试
**** Hidden Message *****
程序:
@Shark恒 帮看看这风格写得行不行?
教程中那个16进制转10进制的工具虽然是自写,但是大家可以用小生我怕怕的计算器或者windows自带的计算器都可换算,这点没讲到在这里补充下 Shy 发表于 2016-7-27 23:25
@Shark恒 帮看看这风格写得行不行?
教程中那个16进制转10进制的工具虽然是自写,但是大家可以用小生我 ...
挺好啊,我给你重新编辑了一下,把代码放到代码框里了,把部分内容隐藏了(伸手党太多)
有个问题就是教程中以后尽量带上吾爱汇编论坛标识,比如网址或名称。可以充分证明原创。
当然,并不是说你的不是原创,只是为了充分证明,并非怀疑,希望不要误解。
这个很详细。学习了 谢谢分享教程 评分是一种美德 谢了先需要这个 感谢楼主分享 这个很详细。学习了 看上去好像很复杂!