本来是一个小单子,被逃单的恶心到了,那么就做成教程分享给大家
软件64位无壳,有多种逆向方法及思路,本文概述了整个逆向过程,适合初阶入门
[color=]软件来源于逃单者,练手请在虚拟机内进行!!!
样本:https://www.lanzoul.com/iBM3H1tr4dwh
初步分析
首先是查壳,可以看到查壳结果是64位无壳的C++软件
1.png (51.27 KB, 下载次数: 0)
下载附件
2024-4-3 17:12 上传
打开软件可以看到两种验证方式,一种是机器码验证,一种是QQ号验证,未见有卡密验证
2.png (22.03 KB, 下载次数: 0)
下载附件
2024-4-3 17:12 上传
按惯例丢进火绒剑分析下网络情况,发现是443端口的Https交互
3.png (109.67 KB, 下载次数: 0)
下载附件
2024-4-3 17:12 上传
综合软件的结构及网络情况,机器码验证/QQ号验证+Https交互
那么软件很可能属于弱逻辑的验证,访问了一些接口或页面就能判断是否授权的机器
此时应有破解思路:
1.山寨接口
2.山寨封包
3.硬改机器码
4.修改跳转
网络分析
先从网络分析入手,软件拖进x64dbg后,分别在socket、send、recv等常用的网络函数下断点,然后运行
会发现一个都没断下来,那么就应该是用了WSAsocket、WSAsend、WSArecv,我们在这些WSA网络函数也分别下断点
如期,断点被触发,一边F9执行一边观察堆栈信息,可以看到大量Gitee的字眼
4.png (311.34 KB, 下载次数: 0)
下载附件
2024-4-3 17:13 上传
此时应该猜测Https交互的是否就是Gitee?用cmd Ping一下Gitee.com进行实验
5.png (59.27 KB, 下载次数: 0)
下载附件
2024-4-3 17:13 上传
域名跟IP确实对上了,当然还有更快捷的方法,就是开局直接把IP丢进百度搜一下有没有相关信息,或者直接抓包。
既然软件所有网络交互都是与Gitee有关,那么就知道验证的数据就是放在Gitee里了
思路整理
此时应该重新调整思路,将目标转移Gitee的网站上,分析软件使用了Gitee什么页面的数据来交互验证
如果你不知道Gitee是干什么用的,那你应该知道Github吧,一个存放源码或者文件的地方
至于软件访问了Gitee什么内容或者执行了什么操作,就要继续进行分析
软件分析
接着上面的分析思路,这里就可以掏出CE来搜索软件有没有相关Gitee的信息,为啥不直接用dbg的搜索?因为用过的都知道不好使
CE直接搜索gitee.com,发现有一条相关信息,跳转到该地址内存区域查看,可以看到一个重要信息
打开这个网站后,竟然就直接明文看到所有授权数据
6.png (295.22 KB, 下载次数: 0)
下载附件
2024-4-3 17:13 上传
因此可以大致的猜测到软件的验证思路:
打开软件-->访问授权数据页面-->校验本机机器码/QQ是否登记-->授权成功/失败
按照软件的验证思路,那么拿下授权就有多种方法:
页面替换方法最为简单,在Gitee建立相同的页面,替换掉软件的原地址即可。
需要注意的是:与原地址保持相同的地址长度
比如原地址为:www.baidu.com/helloword/test
你的地址应为: www.baidu.com/123456789/1234
避免了长度溢出或不足,可以省下不少功夫
方法2:机器码替换
要生成机器码,那么软件必须要先读取机器的信息在获取电脑硬件信息的常用API都下个断看看,注意软件是64位程序,64位大多采用utf8编码,API应优先使用带W结尾的。
GetAdaptersInfo
GetVolumeInformation
GetComputerName
获取机器码时,在GetVolumeInformation被断下来,直接返回上一层继续单步
可以看到在000000014005F987处的call,根据GetVolumeInformation数据生成了一个机器码
000000014005F987 | E8 0417FAFF | call 自动.140001090
7.png (321.07 KB, 下载次数: 0)
下载附件
2024-4-3 17:13 上传
由于逃单者提供了一台授权的机器,0x967BEFD2
8.png (5.05 KB, 下载次数: 0)
下载附件
2024-4-3 17:13 上传
这里直接将该授权作为机器码返回值。
9.png (302.82 KB, 下载次数: 0)
下载附件
2024-4-3 17:13 上传
替换后,直接进入软件。
10.png (359.59 KB, 下载次数: 0)
下载附件
2024-4-3 17:13 上传
最后
至此教程已经结束,由于此教程仅作交流学习及思路分享,所以教程不会提供成品,而且我也不知道软件的具体作用,只是鼓励大家多动手。
软件漏洞及相关洩漏的机器码已经提交给作者进行修复。