title: Audio Converter Plus v6.3.0 破解分析 date: 2023-03-10T10:01:15Z lastmod: 2023-03-10T14:57:12Z
Audio Converter Plus v6.3.0 破解分析
软件基本信息
软件名称 | 软件版本 | 编程语言 | 加壳情况 | 难度 | 难度说明 | 练习日期 |
---|---|---|---|---|---|---|
Audio Converter Plus | v6.3.0 | delphi | 无壳 | 简单 | 好定位,好修改 | 2023.03.10 |
功能:音频格式转换器
破解过程:
暴力破解:
在启动弹窗的时候,根据调用堆栈,定位弹窗函数:
这里整个流程大概是:
获取用户输入,处理一下,用序列号计算md5,然后跟内置的100组md5比较,如果有一组是相同的,给bl设置为1,表示验证通过
点击Register进行注册,发现没有任何提示说明是否注册成功,点击帮助的注册,依然是这个界面:
再次定位这个界面的逻辑:
可以看到,这里的逻辑和之前启动NAG弹窗的处理逻辑是一样的,但是不在一个地址
一份代码写了很多遍看来
搜索一个这个验证逻辑的特征:就是进行100个比较:
发现,这里搜出来了5次这样的操作
patch思路1:对5段代码分别进行patch,让这个对比跳转失效,nop掉
能不能改的字节少一点呢?
这里观察这里的跳转条件:call之后直接jne指令,执行到call指令的时候,ZF=0,执行完出来的时候,ZF=1,那是不是可以去修改这个call呢?
查看引用得知,这个call被8次地方调用,其中5次是验证逻辑里需要的
经观察,剩下三个调用不用管他好像也没啥问题
patch思路2:patch这个比较call,进去之后直接ret
完成爆破:
经测试,转换音频之后,大小没有缩为50%,表明爆破成功
去除更新提示
完成爆破后,虽然没有注册NAG了,但还有个更新提示弹窗:
用同样的方法去调用堆栈定位弹窗逻辑,然后一层一层向上追,追到没有弹窗信息的那一层:
发现这里就是一个跳转来选择是否调用这个最终会显示弹窗的call,所以只要patch这里,就不会弹出更新提示了
再往上看看:
启动代码一般就启动的时候执行一遍,这里对比版本更新信息,然后判断是否弹窗,这里的思路是直接修改je跳转为jmp,强制跳过弹窗环节
通过查软件的流量,发现发送的请求地址是域名:
如果想要禁用该软件的网络连接,可以去patch网络相关的函数调用,或者对程序里保存的域名进行篡改,变成无效域名进行访问