吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2413|回复: 2

[原创逆向图文] 图文版【捕风捉影】用户密码的解法

[复制链接]
猜猜猜 发表于 2024-8-2 14:35 | 显示全部楼层 |阅读模式

方法一:代码绕过
首先打开软件,输入错误的账号密码,点击登录显示“登陆失败”,点击“显示桌面”和“隐藏桌面”都显示“没有登陆,不能使用此功能”
fakename.png
很明显,这个软件的提示信息,不再是弹窗和按钮,所以我们不能直接去代码里通过搜索定位,也无法通过F12暂停法找到调用代码,我们需要首先找到入口函数
第一步:使用工具e-bug找到入口函数:40165B
fakename.png
1861274-20240729170257145-398770739.png
第二步:od载入程序
fakename.png
1861274-20240729170405869-869278468.png
第三步:分析代码
随便输入账号密码,点击登录,单步F8,至返回eax=“登陆失败”,打个断点
fakename.png
1861274-20240729171038053-265117359.png
继续找下面代码中能绕过这个call函数的代码
fakename.png
1861274-20240729171330905-1993165145.png
沿着箭头往上找箭头的头部
fakename.png
1861274-20240729171619290-1525595919.png
jmp指令是无条件判断,所以上面肯定有代码跳过了jmp,继续找附近绕过jmp的代码
fakename.png
1861274-20240729171839132-1457710696.png
往上找,发现是个条件判断跳转
fakename.png
1861274-20240729171906076-1457270901.png
我们使这个跳转失败,修改为jnz
fakename.png
1861274-20240729172012419-173627479.png
再次调试
1861274-20240729172058774-1666944750.png
fakename.png
1861274-20240729172211870-379701364.png
1861274-20240729172224002-1668706832.png
方法二:找用户名密码分析:用户名密码分两部判断:判断用户名,判断密码;判断用户名-用户名错误-登陆失败判断用户名-用户名正确,判断密码-密码错误-登陆失败判断用户名-用户名正确,判断密码-密码正确-登陆成功判断用户名和判断密码调用的同一个函数:
1.查找调用同一个函数的两行代码
fakename.png
fakename.png
1861274-20240802132634491-1403380643.png
1861274-20240802132707042-2033282485.png
那么在00401741前的地址是对用户名进行判断,先看一下前面的代码,发现有个je能直接跳转到下面的代码,那么这个je就是判断用户名是否正确,如果不正确直接跳转到登陆失败,看一下影响je的因素是cmp [local.3],0x0,在往上找影响 [local.3]的因素
fakename.png
1861274-20240802132726458-598712887.png
要想使je不跳转,那么[local.3]要大于0,而影响 [local.3]的因素是00401704中的call 004015AF返回的结果标志位eax,返回结果eax=0-->sete al-->eax=1-->[local.3]=1-->cmp [local.3],0x0-->ZF=0-->je不跳转
所以必须要调用call 004015AF,且call 004015AF很可能是对用户名进行校验的关键函数,继续看上面的代码
fakename.png
1861274-20240802132736510-2023034280.png
发现有两个跳过call 004015AF的代码,对于je来说,要想不跳转。ecx要不等于0;对于jnz来说,要想不跳转==>ebx=ecx
所以要想不跳转ebx=ecx且不等于0;再网上看ebx和ecx的影响因素
fakename.png
1861274-20240802132756422-637158180.png
看上面代码,要想ebx不等于零,必须要经过004016ef,那么je不跳转--->eax不等于0--->[local.2]不等于0;要想ecx不等于0,必须要经过004016de,那么je不跳转--->eax不等于0
ecx:eax=00471dc1--->[00471DC1+4]--->[00471DC5]=00000009=ECXebx:[local.2]!=0--->eax!=0--->[eax+4]!=0--->ebx!=0
所以关键点在于[local.2],[local.2+4]地址所在的值要等于9,继续往上找[local.2]的影响因素
fakename.png
1861274-20240802132804793-1310554647.png
[local.2]=eax,eax是004016B8中经过函数call 00401A43返回的地址
(EBX=[local.1],[local.1]是0040168F的call 00401A49返回的地址,决定着004016C8是否跳转,不跳转会经过004016CB的call 00401A37)
随便输入一个用户名密码,看一下返回值(0040168F 004016B8 )
fakename.png
1861274-20240802132816025-195891925.png
0040168F返回的eax为我们输入的用户名,[local.1]的值也就是我们输入的用户名,即005DAD88
fakename.png
1861274-20240802132830997-486479824.png
而004016B8传入参数为[local.1]即我们输入的用户名以及ebx=00401BF0,返回值为005C49C8,[local.2]也就等于005C49C8,看一下[005C49C8+4]=[005C49CC]的值
fakename.png
1861274-20240802132845944-333548540.png
[005C49CC]的值为5,不等于9,所以我们输入的用户名不正确,直接跳转到登陆失败,现在的问题在于我们传入的参数值:[local.1]即我们输入的用户名以及ebx=00401BF0,对于ebx是一个立即数,是个不变常量,问题也就聚集到了[local.1],即我们输入的用户名,我们可以跟进004016B8中的函数看一下为什么返回005C49C8这个值
进入发现调用ebx函数call ebx,即:call 00401BF0,继续跟进:
---找到关键位置:传入参数eax(我们输入的字符串的长度),esi(我们输入字符串内容的地址),调用call 0040F240返回地址005C49C8也就是[local.2],所以[local.2+4]地址返回的是我们输入的用户名长度
fakename.png
1861274-20240802132902616-1071180594.png
所以正确用户名的长度应该是9,004016B8是对我们的用户名长度进行一个校验,长度不正确,就会直接跳到登陆失败
我们用admin1234再来测试一下
fakename.png
1861274-20240802132915470-1749485937.png
成功绕过跳转,来到了call 004015AF,所以call 004015AF确定就是对用户名进行校验的关键函数了,我们跟进查看
fakename.png
fakename.png
1861274-20240802132925284-292186723.png
1861274-20240802132933942-1890897619.png
这里有一个比较,有个大跳转,猜想会是一个校验,那么看一下cl-->esi-->edx-->[esp+4]=我们输入的用户名,所以cl的值为61,也就是"admin1234"中第一个字母a的ascii码,很明显这里就是对我们输入用户名的每个字符进行比较了,[edi]也就是正确的用户名了,我们跟踪看一下[edi]
fakename.png
1861274-20240802132950103-1429870322.png
所以我们的用户名第一个字母也就是m,继续看下面代码不进行跳转,esi-1,edi-1,eax-1,这三个值,esi是取我们输入用户名的字符值,edi是正确用户名字符值,eax是我们用户名长度,用来循环判断的,我就不往下一步步写了,所以我们的用户名也就是mfc71.dll,同理分析出密码也就是mfc71u.dll
fakename.png

评分

参与人数 7威望 +1 HB +15 THX +4 收起 理由
九天一叶 + 1
哀哀哀 + 1
消逝的过去 + 1
塞北的雪 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
动动 + 1
吃麻花麻花疼 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
Shark恒 + 1 + 10 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
吃麻花麻花疼 发表于 2024-8-4 18:48 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
学编程的闹钟 发表于 2024-8-9 12:44 | 显示全部楼层

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

本版积分规则

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

1层
2层
3层

免责声明

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

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


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

Powered by Discuz!

吾爱汇编 www.52hb.com

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