吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 5661|回复: 108

[原创逆向图文] 记录一下 160个适合新手的crackme--6(追码)

  [复制链接]
moshengdada 发表于 2022-4-26 20:46 | 显示全部楼层 |阅读模式

本帖最后由 moshengdada 于 2022-4-27 07:43 编辑

运行环境:
如 WIN10
涉及工具:
OD,DarkDe4
教程类型:
算法分析
是否讲解思路和原理:


以下为图文内容:
‘适合逆向新手的160个crackme练手’ 下载链接:https://wwi.lanzoup.com/i2mwH03tvomf

这个CM的目的是使按钮隐藏 因为之前做过爆破所以就简单的记录下先将软件拖入DEDE 然后看到了一个CancellaClick事件
Snipaste_2022-04-26_18-35-35.png
载入OD直接去它的段首下断(因为我知道将Cancella隐藏后也会激活OK按钮,所以就不用CodiceChange事件和NomeChange事件来使OK按钮可用了)
Ctrl+G 转到段首
Snipaste_2022-04-26_18-39-52.png
下断然后直接点按钮Cancella 程序断下
Snipaste_2022-04-26_18-40-34.png
开始单步  看到有一个je跳过了jmp我们直接吧je nop掉就可以了 因为这个事件里就这一个跳
Snipaste_2022-04-26_18-42-56.png
nop掉后继续单步  经过这个call后看到按钮上的字已经消失了
Snipaste_2022-04-26_18-45-08.png
继续单步 经过00442F07这个call时ok按钮被激活了
Snipaste_2022-04-26_18-45-57.png
那我们直接运行  按钮成功隐藏 OK按钮也可以用了
接下来就可以去OK按钮的事件段首下断,然后也是同样的爆破法就可以把OK按钮也隐藏掉了
这里先略过 因为我们的目的是追码
Snipaste_2022-04-26_18-47-01.png
或者进入算法call直接给al赋值1 然后直接retn也可以完成爆破
Snipaste_2022-04-26_18-52-30.png

开始追码
继续再Cancella按钮事件的段首下断
这次我们打上用户名和注册码再点击Cancella按钮
断下后我们到刚刚标记上的算法call去看看(F7),因为从这个算法call里出来后会给al一个返回值,如果al是0 je就跳转 如果是1je就不跳转
Snipaste_2022-04-26_18-50-22.png
F7进入后单步分析
在00442B1B这个call获取了用户名长度 下面接着跟了一个cmp eax,0x5 判断我们的用户名是否小于5 如果小于5就直接跳向失败
Snipaste_2022-04-26_18-58-55.png
过来第一个长度判断就开始正式开始了
开始获取用户名,取用户名的第5个字符
第五个字符是‘u’ ascii码值是0x75
Snipaste_2022-04-26_19-05-35.png
开始eax ÷ ecx  0x75 ÷ 0x7
Snipaste_2022-04-26_19-08-07.png
运行之后它将商赋值给了eax 将余数赋值给了edx
Snipaste_2022-04-26_19-09-30.png
可以算一下
Snipaste_2022-04-26_19-12-17.png

又将计算后的余数(5)赋值给了eax 看来是要取余数
Snipaste_2022-04-26_19-14-23.png
然后余数+2
Snipaste_2022-04-26_19-15-41.png
然后将余数+2的结果进行阶乘(7的阶乘)
Snipaste_2022-04-26_19-17-08.png
13B0就是5040的16进制
Snipaste_2022-04-26_19-18-22.png
然后它将我们阶乘之后的结果又赋值给了esi
又进行了个判断用户名长度是否等于0(我不知道为什么还要再判断一次呢?第一个不都判断我们的用户名大于5了吗)
Snipaste_2022-04-26_19-20-45.png
进入了一个循环 开始取我们的用户名来进行计算了
M的ascii码值是6D
Snipaste_2022-04-26_19-25-18.png
然后6D乘以刚刚余数的阶乘结果 然后就是将这个结果进行累加
eax自减1 eax(用户名长度)的值就是我们的循环次数
因为它要将我们的用户名全部单个取出来然后进行相同的计算
然后进行累加
Snipaste_2022-04-26_19-28-45.png
出了循环再看ebx的值,这就是我们最后累加的结果
Snipaste_2022-04-26_19-36-20.png
最后再将这个结果减去一个 0x7A69就是注册码了
Snipaste_2022-04-26_19-39-01.png
至此我们就分析完了注册码了总结一下
1、先判断我们输入的用户名是否大于5
2、取第五个数的ascii码值然后除以7 取出余数
3、将余数进行阶乘
4、挨个取出我们的用户名的ascii码然后乘以阶乘的结果 最后将所有的结果进行相加
5、将第4步的记过减去0x7A69 得出最后的注册码
这时候我们就可以写出注册码的注册机了
Snipaste_2022-04-26_19-48-31.png
[Python] 纯文本查看 复制代码
a=input('Nome:')                    #输入用户名
x=1                                 #阶乘用
y=0                                 #累加用
if len(a) > 5:                      #判断是否大于5
    b=int(ord(a[4]))%7+2            #取余数
    for i in range(1,b+1):          #阶乘
        x*=i                        #阶乘
    for n in range(0,len(a)):       #挨个循环字符串
        y=y+x*int(ord(a[n]))        #将所有的结果进行累加
b=y-31337                           #减去0x7A69  10进制就是31337
print(b)                            #打印最终的注册码


我们将生成的注册码实验一下
成功了 Cancella按钮消失了 Ok也被激活了
Snipaste_2022-04-26_19-50-11.png
接下来我们来看OK按钮的事件
先去ok事件的段首下断
Snipaste_2022-04-26_19-52-09.png
输入用户名和正确的注册码(如果是不正确的注册码OK就不会被激活 就无法断下)
Snipaste_2022-04-26_19-54-25.png
开始单步 经过上次的经验我们很快就找到了算法call
F7进去
Snipaste_2022-04-26_19-55-12.png
单步跟 发现它取了我们的注册码 然后又是判断大于5
Snipaste_2022-04-26_19-57-21.png
因为有些和上面的几乎一样我就跳过解释了 看注释把
Snipaste_2022-04-26_20-00-41.png
倒着取了最后一个数3
Snipaste_2022-04-26_20-02-47.png
然后将这个数的ascii码进行平方运算
Snipaste_2022-04-26_20-03-48.png
将平方后的结果乘以了注册码的长度
Snipaste_2022-04-26_20-05-29.png
将上一步计算好的结果除以0x19 然后将商给eax 将余数给edx
Snipaste_2022-04-26_20-15-23.png
Snipaste_2022-04-26_20-15-41.png
将求出的余数加上0x41
Snipaste_2022-04-26_20-17-03.png
然后将上一步的结果找到ascii码值对应的ascii
Snipaste_2022-04-26_20-19-25.png
然后将我们的注册码长度减一(*注意 这里的减一影响了我们的注册码乘以平方的值 的结果)
Snipaste_2022-04-26_20-20-50.png
循环结束后eax的值为正确注册码推算出来的正确用户名
Snipaste_2022-04-26_20-23-09.png
至此我们的OK也分析完成了
总结一下
1、判断我们的注册码长度是否大于5


2、从后开始取注册码
3、将取出的ascii码进行平方运算
4、将平方运算后的结果乘以注册码长度(第一次是注册码长度 第二次是注册码长度-1 以此类推)
5、将第四步的结果除以0x19 进行求余数
6、将求出的余数 + 0x41 然后将最终的ascii值转成字符
7、从后向前累加出真正的用户名
这时候我们又可以写注册机了
Snipaste_2022-04-26_20-37-26.png
[Asm] 纯文本查看 复制代码
a=input('Nome:')                    #输入用户名
x=1                                 #阶乘用
y=0                                 #累加用
if len(a) > 5:                      #判断是否大于5
    b=int(ord(a[4]))%7+2            #取余数
    for i in range(1,b+1):          #阶乘
        x*=i                        #阶乘
    for n in range(0,len(a)):       #挨个循环字符串
        y=y+x*int(ord(a[n]))        #将所有的结果进行累加
b=y-31337                           #减去0x7A69  10进制就是31337
print(a,b)                          #打印用户名 注册码
b=str(b)                            #将注册码变成str型
c=b[::-1]                           #从后向前索引
z=0                                 #每次循环都减1
f=''                                #最后累加用
for q in c:                         #挨个循环
    d=(ord(q)**2*(len(b)-z))%25+65  #挨个求出经过运算的ascii码值
    z+=1                            #循环一次就减一
    f+=chr(d)                       #将ascii码相对于的字符累加进f
print(f[::-1])                      #从后向前读取最后的用户名


最终验证一下
5c6586c8620f6f2c.gif
我是真的挺菜的哈哈,也就是这个简单点,没有技术含量(我本来就也没有) 大佬们就当我是赚点HB买虚拟机就好了哈哈哈



评分

参与人数 45威望 +1 HB +64 THX +25 收起 理由
消逝的过去 + 1
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
马溜 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
longge188 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
Jawon + 1
点点小猫猫 + 1
一路走来不容易 + 1
Cerolluo + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
459121520 + 1
尘埃阿 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
风动鸣 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
爱汇编爱汇编 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
yexing + 1
agan8888 + 1
吾爱酷心 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
小黑白又白 + 1 + 1
萌幻之乡 + 1
temp + 1
boot + 1
仙之初 + 2 + 1
Scum哥 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
xgbnapsua + 2
luo271338515 + 1
落雪玉 + 1
zg2600 + 1
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
凌夏随缘 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
侠客行 + 1
玖霊後 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
红豆 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
louhaihua + 2 + 1
liugu0hai + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
fjgh + 1 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
玩古不恭 + 1
wyhzxcwyh + 6
zyyujq + 1
ghostxu + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
武清一点点 + 1 + 1
别来无恙 + 1
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
GmailONE + 5 + 1 --------
kway + 1
我是一只粉刷匠 + 2 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
Shark恒 + 1 + 20 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
YLa3 发表于 2022-4-26 20:46 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
bQSkjiZKq 发表于 2022-4-26 20:48 | 显示全部楼层

好啊好啊~这不错~感想分享~
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
gLNw7 发表于 2022-4-26 20:48 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
yRAEnGO34 发表于 2022-4-26 20:54 | 显示全部楼层

回复,顶帖,赚币,谢谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
vDyxMg0629 发表于 2022-4-26 20:54 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
IPGVh84539 发表于 2022-4-26 20:59 | 显示全部楼层

膜拜大神!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
YME8 发表于 2022-4-26 21:00 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
gesq32957 发表于 2022-4-26 21:00 | 显示全部楼层

大佬无敌
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
AjI9634 发表于 2022-4-26 21:01 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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