[入门级]一个64位软件的验证分析及逆向过程

查看 125|回复 10
作者:Hou   
前言
本来是一个小单子,被逃单的恶心到了,那么就做成教程分享给大家
软件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是否登记-->授权成功/失败
按照软件的验证思路,那么拿下授权就有多种方法:
  • 授权页面替换
  • 替换机器码
  • 修改跳转逻辑 (就是我们说的爆破了,教程很多,这里就不分析了)
    方法1:授权页面替换
    页面替换方法最为简单,在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 上传

    最后
    至此教程已经结束,由于此教程仅作交流学习及思路分享,所以教程不会提供成品,而且我也不知道软件的具体作用,只是鼓励大家多动手。
    软件漏洞及相关洩漏的机器码已经提交给作者进行修复。

    机器码, 软件

  • Hou
    OP
      


    Light紫星 发表于 2024-4-6 13:07
    替换机器码那一步,是直接改的内存还是Patch的源程序啊

    替换机器码无法直接Patch源程序,最简单的方法就是在机器码生成call里直接,mov rax,机器码地址 ret
    homehome   

    支持楼主的正义行动,感谢楼主的逆向教程
    FDL   

    帖子咋没了?
    xhonker   

    感谢分享
    THEYX   

    感谢楼主提供的逆向教程
    jatmtd   

    感谢楼主分享
    jin6220   

    楼主厉害,看下私信,请教一下。
    wapjltb   

    不错,学习了。
    abcdef4   

    写的很好!
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部