逆向分析CrackMe系列——CrackMe001

逆向分析CrackMe系列——CrackMe001

之前学的逆向都忘干净了,最近又重新学一学,这次从CrackMe入手。
本系列的CrackMe资源均来自我爱破解网.

1. 运行程序,随便输入序列号后弹窗:
在这里插入图片描述
在这里插入图片描述
2. 进入到主窗口程序后,下断点:bp MeaasgeBoxA 或者 MessageBoxW 因为不知道调用的是哪一个函数(在主窗口下新窗口的断点是为了在进行错误提示的时候进行暂停)

3. 找到断下的位置:
在这里插入图片描述
4. 然后进行回溯ctrl +F9,发现并不是主窗口程序,继续回溯:
在这里插入图片描述

5. 继续回溯ctrl+F9 :在这里插入图片描述
6. 找到疑似主程:
在这里插入图片描述
7. 进行分析和记录,该部分的入口为:0042F998
找到熟悉的字符串 “Try Again!” “ Sorry, the serial is incorrect! ” 字符串,进行前面的数据分析,发现新的字符串 “Congratz !!” “Good job dude =)” 疑似正确输入序列号后的字符串,同时发现其中的 jnz short 跳转是指向错误处理的部分,也就是说当序列号检验正确时将会继续往下,执行序列号正确的处理函数(弹窗);当序列号错误的时候会执行错误的处理函数弹窗(弹窗)。既然如此,我们直接对 jnz 的语句进行修改,直接改成 nop 即可,让程序直接执行序列号正确时的处理函数:

在这里插入图片描述
8. 但是执行后发现报错:

在这里插入图片描述
9. 分析,因为原来的汇编代码长度是4个字节,而nop只有2个字节,所以会出现出错误,所以此处需要用两个nop进行替换
在这里插入图片描述
10. 继续执行,成功:
在这里插入图片描述
11. 前一部分的任务结束,接下来进行整个程序的序列号生成函数查找,分析:既然在jnz 进行的跳转,说明在jnz前面已经进行了序列号的检查,那么我们继续往回看,jnz的前面地址0x0042FAFE 处正好有一个函数调用 call 004039FC,我们猜测它就是序列号检查的函数:
在这里插入图片描述
12. 由于该函数前面还有很多的函数调用,我们需要进行单步进行分析;在前面0x42F5E处又发现同样的序列号错误时的处理函数:
在这里插入图片描述
13. 分析,在这个函数处理前有一个 jge short的跳转,其中跳转的地址是这个函数处理结束的下一条指令,也就是说前面进行了某种判断,如果满足条件就继续往下进行,不满足条件就执行序列号错误时的处理函数。jge前面拿eax的值和4进行比较来判定是否跳转,cmp 前面正好有一个call 函数调用,而call 函数调用的返回值一般都是存放在eax中的,也就是说这个函数很可能是序列号的某种判断函数。

14. 我们进入该函数进行分析:
在这里插入图片描述
15. 发现该函数为一个简单的长度计算函数,那么此处的判断就是,先对输入的数据进行长度检查,大于4的往下进行,小于4的就执行错误的弹窗;但此时我们并不知道是对用户名还是序列号的检查。

16. 我们在此处进行下断,然后进行数据查看,call 00406930 前正好将eax进行了赋值,call 调用前需要参数传递,极可能是用eax进行的传递,对eax进行内存查找,发现正是输入的用户名:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
17. 所以,此处的逻辑是先对用户名进行检查。我们再继续往下进行分析,按正常的逻辑来讲,用户名检查完后就应该是序列号检查了,因为用户名的检查jge short 跳转的地址是0042FA79, 那么我们从0042FA79一直分析到刚刚的序列号检查函数的地址0x0042FAFE 处
18. 进行单步执行,同时进行堆栈的查看和分析,相关结果如下:
在这里插入图片描述
其中堆栈输入如下

在这里插入图片描述
19. 整个序列号计算部分的逻辑如下:

1) 取用户名的第一个字符进行乘法计算,计算的结果乘以2后存放于地 址 [431750] 中,此处为0x19F2 数值为“6642”
2) 然后进行字符串的拼接,完成序列号的生成,此部分是在序列号生成函数 call 004039AC 处完成。其中前面的四个push 均为它的参数传递,应该是一个简单的字符串拼接,生成的序列号存放在局部变量4中 (为 “CW-6642-CRACKED”)。

20. 其中的 call 00403708 函数不太清楚到底有什么实质性的功能,其中有一个功能就是对局部变量进行赋值,分别赋值字符串“CW”和“CRACKED”;另外函数 call 00406718 也不太清楚有什么作用,望哪位大佬解释一下。

21. 程序的另一个部分采用同样分析方式,采用了序列号同样的逻辑(口令为 “Hello Dude!” ),如下:
在这里插入图片描述

扫描二维码关注公众号,回复: 16784638 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_39561364/article/details/108082265
今日推荐