ttxian 发表于 2018-8-8 15:16

新手破解加密信息框

本帖最后由 ttxian 于 2018-8-8 15:17 编辑

分享一个 CrackMe逆向流程


首先查壳,国际惯例
https://attach.52pojie.cn/forum/201808/08/134239sei0a2eep0uvievl.png

无壳,拖入OD,没有正确和错误的信息

   https://attach.52pojie.cn/forum/201808/08/134509w21ke2kqe108fatz.png

我们打开软件输入假码看下错误信息。

https://attach.52pojie.cn/forum/201808/08/134706dopplrlfrgopr944.png

那我们改从哪里下手呢,爆破需要找到判断真码和假码的地方
我们之前找这个判断是寻找信息框结果,因为判断就在上面,

但是仔细看有没有和结果弹框关联的地方,从而可以找到结果弹框

https://attach.52pojie.cn/forum/201808/08/135339i67avshc7h7mu5yu.pnghttps://attach.52pojie.cn/forum/201808/08/135344bqca141ky2zkakmd.png

我们可以看到这个字符串 , 是和结果弹框相关联的 , 看过易语言程序的都知道,弹框上面的标题和弹框内容声明的地方很近


我们可以看下 易语言弹框的代码

   https://attach.52pojie.cn/forum/201808/08/135717wuulmw6iqqk466t6.png

所以我们直接双击这个提示进去, 但是前面说过,这个软件的结果弹框内容加密了,所以也看不到内容
而且易语言的弹框代码也看不到,我推测这时加密模块

但是在这前后是真码和假码的判断,我们要找到这个地方,所以我们在这里下个断点

可以看到判断下面函数的信息,判断结果已经出来了,所以判断是在这个断点之前

   https://attach.52pojie.cn/forum/201808/08/140846pry3g3y65rmiv0ru.png

我们往上翻,找到代码头,没有跳转到这里的标记,所以可能是call,我们搜索call 0040d6f0

   https://attach.52pojie.cn/forum/201808/08/141707biohpndfyud7doyz.png

但是没有,所以我们在代码头下断,找到执行哪个retn,就知道调用的地址,因为retn返回的地址就是call下面的地址。

F8单步,最后到了这个retn。

   https://attach.52pojie.cn/forum/201808/08/142031olzx0bc4xvqbn21v.png

看到数据窗口,也就是右下的这个窗口

0018F65C   00424C41返回到 cm.00424C41

我们 Ctrl+G输入 00424C41,可以看到上面就是call

   https://attach.52pojie.cn/forum/201808/08/142222z05s1shkph0vajql.png


难怪搜索不到call 的地方,原来 调用的地址是一个公共方法

现在我们又需要找到什么地址调用的这里,然后又call 到 0040d6f0

我们在
00424C3F   .FFD3          call ebx                                 ;cm.0040D6F0
上面右键断点=》条件

输入 ebx == 0040d6f0,F9重新输入假码进入断点,如果遇到之前下的断点直接F9继续下走

https://attach.52pojie.cn/forum/201808/08/142757kmazzmtse378meem.png

一直等到程序断下,

https://attach.52pojie.cn/forum/201808/08/142758txr6ssssszmymxk3.png

我们在下面的retn断点,F9直到运行到这个retn

我们可以看到返回地址

   https://attach.52pojie.cn/forum/201808/08/143148gl120n2c9np7r2po.png

返回到 00406319 (cm.00406319)


Ctrl+G输入 00406319

然后我们可以看到 熟悉的易语言窗口创建 和 上面的判断,所以可以猜测这里是比较真码和假码的地方


https://attach.52pojie.cn/forum/201808/08/143613yy5dd5505ybzvl02.png

然后到断首下断

https://attach.52pojie.cn/forum/201808/08/143356zltje1xeqe7xhhj4.png


F9重新输入假码



看到这个字符串,就是真码,至于怎么判断是真码,因为这里只有这一个字符串,而且在前面的call里面可以看到和假码进行了比较,可以自己去看看



https://attach.52pojie.cn/forum/201808/08/144131w7kdnnd5vznn5fev.png

我们可以直接把前面的这个判断跳过了 窗口创建 进入加密弹框的跳转nop掉,

https://attach.52pojie.cn/forum/201808/08/145223mf6v6vffixeqrmqr.png
   https://attach.52pojie.cn/forum/201808/08/144522dkn0im4r0gavlop3.png

我们打开原程序输入 真码 试试

https://attach.52pojie.cn/forum/201808/08/144522i68a2yzzz8bw88f2.pnghttps://attach.52pojie.cn/forum/201808/08/144627fp0py1jy6evu086i.png

但是在进入窗口之前弹出注册码错误,是作者是这么写的,可以从源代码看出

然后 我是一个新手,希望一起学习 ,然后希望来点CB,哈哈

附件我拿给大家,可以练练手



By:make Bug

侠风 发表于 2018-8-8 22:48

顶,学习学习,多谢前辈

ttxian 发表于 2018-8-8 23:35

一起学习,新手,希望大佬们带我

xiao_ya 发表于 2018-8-9 12:05

到这个地方,不需要下条件断点,有没有发现下面步骤是多此一举?

ttxian 发表于 2018-8-9 13:53

xiao_ya 发表于 2018-8-9 12:05
到这个地方,不需要下条件断点,有没有发现下面步骤是多此一举?

是吗???这里貌似没有是吗用啊,我需要找到从哪里调用这个模块然后 call ebxebx是进入弹框加密模块,这样才能找到判断真码和假码啊       敢问大佬这里不下断点怎么找到返回地址   貌似很多地方都调用这里了

xiao_ya 发表于 2018-8-9 15:03

ttxian 发表于 2018-8-9 13:53
是吗???这里貌似没有是吗用啊,我需要找到从哪里调用这个模块然后 call ebxebx是进入弹框加密模块 ...

继续返回上一级。用条件断点重复了。

2286080466 发表于 2018-8-9 15:29

感谢分享!!!!!

ttxian 发表于 2018-8-9 16:20

xiao_ya 发表于 2018-8-9 15:03
继续返回上一级。用条件断点重复了。

怎么找到上一级    ,不是很多地方调用吗    要找到判断真码假码 调用这里的返回地址啊

xiao_ya 发表于 2018-8-9 16:54

ttxian 发表于 2018-8-9 16:20
怎么找到上一级    ,不是很多地方调用吗    要找到判断真码假码 调用这里的返回地址啊

你试试不就知道了。继续到ret返回上一级

ttxian 发表于 2018-8-10 07:51

xiao_ya 发表于 2018-8-9 16:54
你试试不就知道了。继续到ret返回上一级

我清楚你的意思了你是说在第一次断点的时候继续往下找retn
页: [1] 2 3
查看完整版本: 新手逆向加密信息框