新手破解加密信息框
本帖最后由 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
顶,学习学习,多谢前辈 一起学习,新手,希望大佬们带我 到这个地方,不需要下条件断点,有没有发现下面步骤是多此一举? xiao_ya 发表于 2018-8-9 12:05
到这个地方,不需要下条件断点,有没有发现下面步骤是多此一举?
是吗???这里貌似没有是吗用啊,我需要找到从哪里调用这个模块然后 call ebxebx是进入弹框加密模块,这样才能找到判断真码和假码啊 敢问大佬这里不下断点怎么找到返回地址 貌似很多地方都调用这里了 ttxian 发表于 2018-8-9 13:53
是吗???这里貌似没有是吗用啊,我需要找到从哪里调用这个模块然后 call ebxebx是进入弹框加密模块 ...
继续返回上一级。用条件断点重复了。 感谢分享!!!!! xiao_ya 发表于 2018-8-9 15:03
继续返回上一级。用条件断点重复了。
怎么找到上一级 ,不是很多地方调用吗 要找到判断真码假码 调用这里的返回地址啊 ttxian 发表于 2018-8-9 16:20
怎么找到上一级 ,不是很多地方调用吗 要找到判断真码假码 调用这里的返回地址啊
你试试不就知道了。继续到ret返回上一级 xiao_ya 发表于 2018-8-9 16:54
你试试不就知道了。继续到ret返回上一级
我清楚你的意思了你是说在第一次断点的时候继续往下找retn