wanao2008 发表于 2021-3-16 20:51

用160Crackme之51体验算法的完美逆向 - 学习破解1周年纪念贴

本帖最后由 wanao2008 于 2021-3-16 21:06 编辑

今天使用的软件是160Crackme之51:DueList.6.zip

既然是纪念贴,就不设置权限了。如果感觉不错,请给个赞!

前期一直在学习软件的爆破,最近开始研究算法,本着先易后难的原则,我选择用160Crackme来练手。
当练习到第51个程序时,发现它的算法非常独特,感觉除了汇编,没有任何一款编程语言能将它的算法做的这么的简洁、高效。
软件主界面,这里我们输入假码:12345678。

这时点击“Check”按钮,会弹出错误提示对话框,内容为“The activation code you entered is incorrect!”

有字符串的程序,一般我都选择搜索字符串,方法如下:
在OD的汇编窗口点鼠标右键/中文搜索引擎/智能搜索,就能找到错误提示字符串了,双击,来到代码处:

找到关键跳,NOP填充,成功爆破!

今天不讲爆破,只讲算法,继续,

很明显,算法CALL就是:
0040122A|.E8 1CFEFFFF   call DueList_.0040104B
双击,进入CALL里,下断,跟踪,
首先来到判断输入的注册码必须为8个字符长度:
004011FE|.83F8 08       cmp eax,0x8
00401201|.74 24         je short DueList_.00401227

然后将输入注册码分为两部分,即前4位和后4位。
取它们的ASCII码如下:
前4位为:34333231
后4位为:38373635
这里补充说明一下吧:
      其实被转成的“34333231”和“38373635”被当做循环次数使用了。而我们最终要求的就是正确的循环次数。
      不理解就先往下看。

这时就来到了算法处,
这是前4位的算法:


下面是后4位的算法:


基本一样,只是使用的常量不同。

既然算法找到了,也知道怎么计算了,那就写逆向算法吧!
我试着用VB写了一下,感觉非常的繁琐,
因为汇编里的al,ax,eax非常的容易,到了VB编程语言里就得使用大量的函数才能做到,比如hex(),mid(),asc()等等,就不说了。

即然我们在学破解,那么为什么不做一次真正的逆向呢?
1、用汇编写算法
2、将程序倒过来执行,即原来最后执行的语句让它先执行,先执行的语句到最后
3、原来用常量1“0x36455544”通过算法得到常量2“0x4071885”,那么我们就用逆向算法由常量2得到常量1
4、关键字取反,记得刚吾爱汇编时的“74变75,84变85”吗?这次我们是“rol”变“ror”,“add”变“sub”,“dec”变“inc”

请看:

你品,你细品,你细细品。

是否品出些不同?

继续,先补全程序,做几个跳转,因为前期测试过,知道会有错误,就把跳转都补全了。
1、先将循环次数设为0,因为最终的答案就是循环次数
2、做一个找到正确值的跳转,并下断点
3、做一个找不到答案的跳转,并下断点
4、做一个结果不正确重新回到循环里继续运行的跳转。

前4位的算法做好了,那就开始计算吧,

虽然正常被断下,但意外还是发生了,
看最下,得到的字符根本没法输入,看来有问题啊!
幸好我们做了继续回到循环的跳转。

再次被断下,这次的应该正确了,得到字符串“isd4”,

下面开始更换常量,做后4位的算法:

断下后,看到了字符串“ever”,看来是正确的,

将两个字符串连在一起“isd4ever”,验证一下:

完全正确!!!!!

总结一下:
1、想要写这样的程序的方法,随便拖一个小程序到OD里,在OEP处写就行了。
2、要想反复执行一些代码,就做JMP跳转,跳到你想执行的地方。
3、做过逆向分析后你会发现,其实写汇编其实也不难。

本人嘴笨,不善言词,如果有没看懂的,欢迎回贴交流!




87682678 发表于 2021-4-12 17:12

我要向你学习,我就喜欢看分析算法的帖子。

Elizer 发表于 2021-5-18 21:42

算法比爆破难多了,看着头大,向你学习。

a83400489 发表于 2021-8-9 10:35

虽然我们再学破解,为什么不做一次正真的逆向呢

kisny 发表于 2021-12-25 18:53

king51999 发表于 2021-12-28 22:35

好东西,感谢分享

乌云 发表于 2021-12-29 00:52

好东西,感谢分享

PDWORD 发表于 2022-1-24 00:27


多谢楼主的分享

消逝的过去 发表于 2022-1-27 09:15

[快捷回复]-学破解防逆向,知进攻懂防守!

拿着雪糕 发表于 2022-1-27 12:20

学习大佬经验
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 用160Crackme之51体验算法的完美逆向 - 学习逆向1周年纪念贴