记一次UltraISO 9.7.5的逆向破解
本帖最后由 ZJevon 于 2021-6-3 16:08 编辑## 0x00 前言
在官网下载UltraISO 软碟通的安装包,一顿操作安装好之后,打开程序之后弹出尚未注册的窗口,输入注册码提示需要重启软件,猜测在打开软件之后会通过某些操作比较输入的注册码。
!(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160530.jpeg)
## 0x01 寻找注册码验证方式
既然猜测是在程序启动的时候有一些操作验证注册码,不妨使用火绒剑对主程序(UltraISO.exe)进行监控看看它在启动的时候做了什么事情。
通过简单的观察发现了一处可疑注册表读取操作,大胆猜测我们之前输入的注册码就是通过注册表来保存,并且在程序重启的时候进行验证。 !(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160538.jpeg)
用x32dbg和IDA打开UltraISO.exe进行分析,并在x32dbg中对RegOpenKeyA下断点,通过栈回溯结合IDA的反编译结果定位到了读取注册表中注册码的函数。 !(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160546.jpeg) !(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160550.jpeg)
CTRL+F9跑出这个函数看看后面哪里用到了我们的注册码,在0x0040190C函数里用到了我们输入的Name和Key,这里应该就是验证算法函数了,结合红绡枫叶前辈的帖子(https://bbs.pediy.com/thread-207555.htm)虽然地址不同不过汇编代码都是大致相同的,本文的核心还是在破解部分对于验证算法的分析我就不班门弄斧了,可以去看红绡枫叶前辈的分析帖子。
接着F8往下走,遇到一个比较跳转的部分,先让跳转生效看一下效果。 !(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160553.jpeg)
打开依旧还是未注册版本,我们返回去给0x7C8F84下断点看看后面还有哪些地方用到了,接着跳过未注册窗口运行起来,又断在了一个比较跳转地方,在IDA里面的这一条语句也包含了下一个的跳转。 !(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160556.jpeg) !(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160655.jpeg)
因为我们现在肯定是错误的注册码,所以先以相反的方向执行跳转然后在运行起来看是否注册成功,运气很好这三个跳转修改掉之后就注册成功了。
!(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160609.jpeg)
最后还有一个小坑,上面修改完文件保存会闪退,x32dbg下CreateFileA断点然后栈回溯在结合IDA发现在文件另存为和保存的时候会再次判断注册码。 !(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160613.jpeg) !(https://gitee.com/jev0n/blogimage/raw/master/img/20210603160616.jpeg)
## 0x02 总结
总共就是要Patch 4个地方,生成的新应用程序覆盖掉之前的UltraISO.exe就可以了
```
0x004030A874 -> EB
0x00423C6175 15 -> 90 90
0x00423C7674 -> EB
0x0044BBD0 74 -> EB
```
本程序的验证算法部分还是有难度的,不过结合火绒剑等分析工具破解对于新手试手还是比较友好的,不知道为什么没有遇到网上以前的分析文章遇到的ASPack壳 可能我是个例,patch好之后,尝试把修改过的iso保存,一按ctrl + s程序就闪退了,程序把原文件改名备份,创建了一个空白同名文件,准备写入时就崩了 ZJevon 发表于 2021-2-5 20:05
是我疏忽了😂 ,在0x0044BBD0地方还有一次验证 74 -> EB
另外还有一个与主题无关的问题 不知道楼主知不知道
我换过好几个版本都是一样的 几乎每次修改完iso之后,尝试保存,软件直接不响应用户输入了
并不是程序无响应那种,鼠标移到工具条或者标题栏按钮上还是会有对应动画的,但是点击软件窗口内任何地方都没有任何反应,只有在任务管理器强制关闭 硬核教程。学习了~ ultraiso有时候装不上虚拟光驱驱动,就是虚拟盘符出不来,提示找不到虚拟光驱程序,这是肿么回事?
lg560852 发表于 2021-2-5 13:21
ultraiso有时候装不上虚拟光驱驱动,就是虚拟盘符出不来,提示找不到虚拟光驱程序,这是肿么回事?
软件使用的问题俺就不懂了{:1_907:} 我记得这个是重启验证的。 我想知道用16进制该如何改,?????? 这个一直在用,虚拟光驱有时候用不了,总体来说还是很不错的哦。 软碟通V9.7版本破解教程,学习了。版主辛苦了!!! shuxiang 发表于 2021-2-5 13:46
我想知道用16进制该如何改,??????
可以用x32dbg直接改汇编代码,然后代码补丁生成出来 简洁明了,厉害