吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3056|回复: 16
收起左侧

[分享] The051. 反汇编练习,适合破解新手的160个CrackMe [006] 之 [追码]

[复制链接]
chuiyan121 发表于 2022-4-8 17:34

The051. 反汇编练习,适合破解新手的160个CrackMe [006] 之 [追码]
反汇编实战练手,下面是我的学习记录,如有疑问欢迎交流指正。^_^

被试程序合集下载:帖子https://www.52pojie.cn/thread-1598336-1-1.html

0x0、接着上一集开始追码。OD载入原始程序(aLoNg3x.1.exe),通过DeDe中知道NomeChange事件的RVA地址为00442E04,在OD中Ctrl+G转到这个地址,F2下断,F9运行,再程序中粘贴chuiyan为用户名,程序断下来了。(小提示:为什么要粘贴,因为这个编辑框变更事件,当你输入1个字符时程序就会断下来,而仅凭1个字符我们很难判断是不是我们输入的用户名,因此采用复制粘贴的方式一次性输入多个字符,便于辨认。)


0x2、根据分析,程序通过判断dl变量的值是否等于1来设置【Ok】按钮是否激活可用,dl设置为1的前提是al要等于1,下图00442E5B为关键算法call,决定了al的值是否为1,F7跟进去。


0x3、进入后,逐步分析代码,这个函数关键是要设置bl=1,才能使上图的al=1。我分析的流程为红框中根据用户名的每一位循环计算出ebx的值,然后00442AB1处的call里计算出eax的值,值得注意的是eax是根据用户输入的注册码计算出来的。继续00442AB6处,意思是ebx=ebx-eax,这里得到的ebx就是最终的值,与0x29A进行比较,为了让bl=1,这里必须让ebx等于0x29A才行。
综合上述分析得到一个公式:ebx(0x3BD1B,根据chuiyan运算得来)– eax(注册码,默认为0) = 666(0x29A),经过换算0x3BD1B为十进制数245019,为了让这个等式成立,在用户名不变的情况下,注册码的值必须为245019-666=244353。


0x4、根据上述猜测,将用户名和注册码输入,成功激活了Ok按钮。不论是先输入用户名,还是先输入注册码,只要是正确的,都可以激活Ok按钮。说明两个输入框都调用了验证机制。


0x5、知道了用户名和注册码,顺便去分析一下注册码输入窗口的运行流程,在DeDe中获取CodiceChange事件的RVA地址,Ctrl+G跳转到下图,简单看看代码,同样是获取注册码和用户名,然后调用了同样的算法call,call中如果bl=1,则al=1也成立了,Ok按钮被激活。


0x6、研究完输入框,再来研究按钮点击事件,毕竟目标是点击按钮使其隐藏嘛。参照@海天一色001大牛走过的弯路,Ok按钮里的算法容易混淆,我直接从Cancella按钮开始分析,在DeDe中得到CancellaClick事件的RVA,Ctrl+G跳转到00442EA8处,F2下断,F9运行,在程序界面输入用户名和注册码,点击Cancella按钮,断下如下图。


0x7、配合DeDe分析代码,00442EF8为设置Cancella按钮隐藏的函数,上方的JE跳转很关键,是否跳转由al的值决定,00442EE7处的算法call又决定了al的值,因此关键在算法call,F7跟进去看看。


0x8、根据分析,此函数流程为:取用户名第5个字符的16进制值,对0x7求余,然后余数+0x2,得到的值计算阶乘。根据上述流程,我输入的用户名为chuiyan,第5个字符为y,16进制值为79。接着求得余数为79 % 7 = 2,余数+2为4,然后将eax=00000004带入阶乘函数中计算得出4的阶乘为24,24转换为16进制就是00000018。


0x9、接着下面一个循环,将用户名的每一个字符的16进制值乘以阶乘结果00000018,得到的值保存在ebx中并进行累加,然后将累加后的ebx(00004698)与0x7A69对比,它俩必须相等才能使bl=1。公式可描写为ebx – 注册码 = 0x7A69,即注册码 = ebx – 0x7A69 = 00004698 - 0x7A69 =18072(10进制) - 31337(10进制) = -13265。


0xA、将上述计算结果带入程序,点击Cancella按钮,发现按钮成功隐藏了,同时Ok按钮被激活了,但点击没有反应。


0xB、下面继续解决Ok按钮隐藏,OD中Alt+B打开断点窗口,禁止其他所有断点,仅激活Ok按钮点击事件的断点。F9运行,输入如下用户名和注册码,点击cancella按钮使其隐藏,在点击Ok按钮,断在如下位置。通过之前的经验,很容易找到00442DC1处为关键算法call,F7步入。


0xC、算法call里根据输入的注册码【-13265】,从最后一位到第一位,循环计算出正确的用户名为ACDAFE,具体计算过程已在下图注释部分写明。


0xD、最后测试一下效果,运行程序,输入用户名和注册码,点击Cancella按钮使其隐藏,同时激活Ok按钮,再将用户名改为ACDAFE,点击Ok按钮也隐藏了,追码破解成功。

0xE、总结一下:追码过程很艰辛,一句一句摸索,反复重启调试,花了很多时间和精力。不过在过程中学到了很多汇编知识,受益匪浅。

近期工作繁忙,一晃20多天没发帖了,继续加油!!!




免费评分

参与人数 5威望 +1 吾爱币 +24 热心值 +5 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wasdzjh + 1 + 1 用心讨论,共获提升!
mingyue + 1 + 1 我很赞同!
zxcvbnmaiaimi + 1 + 1 谢谢@Thanks!
Tunx + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ongp1347 发表于 2022-4-9 12:39
感谢大佬的破解
我也在破解这个程序 已经卡了几天了不得要领
就是看不懂Delphi的反汇编程序 被Delphi的汇编弄
kanxue2018 发表于 2022-4-8 20:35
chinaecho 发表于 2022-4-8 22:24
||| 发表于 2022-4-9 07:26
感谢分享   
weihongli 发表于 2022-4-9 07:51
感谢分享,很详细的分享!!!
1378 发表于 2022-4-9 08:05
楼主这个反汇编软件能不能分享下
qqpoly 发表于 2022-4-9 08:55
分享的太有价值了,对于我这个小白可以落地
头像被屏蔽
pengmz 发表于 2022-4-9 08:59
提示: 作者被禁止或删除 内容自动屏蔽
zzy1190 发表于 2022-4-9 09:16
好东西啊感谢分享
jenny1982 发表于 2022-4-9 11:37
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-2 20:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表