朱朱你堕落了 发表于 2024-6-24 15:24

某软件调试问题

本帖最后由 朱朱你堕落了 于 2024-6-24 22:37 编辑

从00C59714处下断点调试,可看到发包时的大致流程

可重点看这个CALL
00C58BF8|.E8 1BA8A3FF   call <Download._Unit95.sub_00693418_00693418

发包是对本机信息加密后发到服务器,如未加密前时信息如下:

63854911155538|1|1|1|0|599|0|-1|Win7|6BF82A11D0372A74322B8105289DB853

分析如下:
63854911155538貌似是本机时间转化成字符串。
|1|1|1|0|599|0|-1|这个先不管它了。
Win7为本机电脑名称
6BF82A11D0372A74322B8105289DB853为一个字符串的MD5值


6BF82A11D0372A74322B8105289DB853是1F8BFBFF000506E3FEFA3203000C29423C7F字符串的md5值

而1F8BFBFF000506E3FEFA3203000C29423C7F的构成如下:

cpuid.edx + cpuid.eax + cpuid.ecx    + 网卡(去掉空格)
1F8BFBFF + 000506E3 + FEFA3203 + 000C29423C7F

问题:
发包时,对“63854911155538|1|1|1|0|599|0|-1|Win7|6BF82A11D0372A74322B8105289DB853”加密后发到服务器,
服务器肯定要先解密,问题来了,解密后,肯定得到的还是原32位MD5值,但是MD5值它是不能解密的,这就意味着
服务器并不知道软件使用者电脑的CPUID网卡等信息的,软件默认试用3次,3次用完后就不能更进入主界面了,当你
试用完毕后,即使你手工在OD里修改CPUID和网卡,但是经过测试,并不是这样,还是试用完毕,按理说,修改后,
那么MD5值也是新的,服务器解密后会认为这是新电脑,相当于又有3次试用了,但是并不行,想不明白,大佬可以试试。

更进一步:如何实现无限试用?写个DLL来实现HOOK GetComputerNameW + HOOK cpuid+HOOK MAC ???

软件地址:(注:非求助破解)
https://www.123pan.com/s/YL29-X0jOh.html

cndml 发表于 2024-6-24 15:24

本帖最后由 cndml 于 2024-6-26 15:02 编辑

他这个试用貌似跟机器码没啥关系,第一次打开就显示不能试用,试用标志位,试用次数在软件启动时候就已经全部清0了。服务器返回的信息解码后是这个样子,{63855094592139|1|599|0|16|0|http://tianyinsoft.com/DownloadBaby/file/DownloadBabyV464.exe|软件已升级至V4.64,请下载最新版本再使用|E47FEA086C7D03B9955E50CA0FC138F5|1|2|0|无输出|0}
第一个字段是发送的时间串,其他数字估计是试用控制标志,没仔细研究具体数据结构。试用次数标志使用的是静态变量,无限试用的方法就是硬改成任意次数,搜字符串“”试用次数“”能够很容易找到具体内存地址,然后把试用次数清0的指令nop掉即可。没有壳的程序还是很容易找到关键点的。

bester 发表于 2024-6-24 15:39

好,晚上又有玩具可以玩了,感觉可以从发包入手

无闻无问 发表于 2024-6-24 15:39

有可能本地注册表、文件也有试用记录……

董督秀 发表于 2024-6-25 12:08

Hook Mac比较复杂,需要补充一系列定义与声明。试过直接引用winsock2头文件会报错,如果不报错可以不补充。

常见的API有GetAdaptersInfo、GetAdaptersAddresses
页: [1]
查看完整版本: 某软件调试问题