Sublime Text 逆向之旅
本帖最后由 jwzyjwzy 于 2022-10-20 19:16 编辑# Sublime Text 逆向之旅
## 0x1 准备材料
+ x64dbg
+ frida
+ 最新版Sublime text 4(Build 4126)
## 0x2 信息收集
首先运行软件能看到标签框“**(UNREGISTERED)**“
其次在菜单栏 帮助-关于也有相同字样
## 0x3 逆向分析
拖入x64dbg
右键-搜索-当前模块-字符串
搜索关键字”unregistered“找到4个结果选择第一个
跟进去
发现这个字符串上面有个jmp跳转跳过了”未注册“说明没有执行这个jmp,要找的指令还在上面
往上找到这里发现je刚好跳转到”未注册“,上面的cmp比较了rsi+5和0的值是否相等如果相等则跳转到未注册,尝试修改rsi+5的值为1,(这里的rsi+5其实是这个函数的第二个参数),这里我用的frida hook了这个函数的第二个参数,其实直接用x64dbg修改也可以。本来以为cmp上面的call是关键call最后发现并不是,而且被断了5次没有一次返回值一样,之后索性hook这个函数,只是分析后的产物罢了
将其置1,发现软件已经没有未注册字样
当打完补丁以为没有事的时候发现再次打开软件需要点击 帮助-关于后才能去除未注册,这并不是想要的结果,继续分析,重新调试程序,回到rsi+5这里下一个访问断点,稍微改一下脚本拿到rsi+5的地址
访问断点
第一次断下来的没有啥用放了,看第二次段下来的地方
发现rax+5=rsi+5可以得到这里也需要修改,我们将其修改为 `mov byte ptr ds:, 0x1 `
下一条语句已经没有用了我们把他nop掉
当然之前的rsi+5那里也是如法炮制
打补丁看结果
这时重启后也没有未注册,大功告成
## 0x4 结语
教程很简单,给大家一个思路,功能什么的目前没有发现限制,菜鸟分析,如有错误,还请大牛斧正 本帖最后由 longs75 于 2022-10-13 01:26 编辑
lies2014 发表于 2022-10-13 00:14
其实不用这么麻烦,直接在的地址下硬件写入断点,找到写入的地方直接改成如下就可以了:
仅仅这么修改是有问题的,软件运行时会检测注册状态,发现非法注册后会重新将标志位置0,变成未注册:
不过好象就这一处检测,把这里修改一下,标志置1,就没什么问题了。
这个软件启动时先检查是否有注册文件:License.sublime_license,只有找到注册文件,读取文件中的数据后,才能执行到关键CALL。CALL执行完毕后,当出口参数EAX=0时,才会将标位置1,表示注册成功。也就是说,在软件启动过程中,如果对标志只下“写断点”,只能拦截到初始化的时候对标志有写操作,其它发现不了什么有用信息,也拦不到关键CALL。所以楼主对标志下“访问断点”是还是正确的。
楼主第一个修改处确实比较重要,软件频繁调用这一段指令,修改这里就相当于频繁将标志置1,达到破解效果。 FSociety 发表于 2022-11-1 15:47
大佬,想知道怎么分析出会重新将标志位置0
很简单,先发现有问题,然后对标志下写断点。 longs75 发表于 2022-10-12 09:24
仅仅这么修改是有问题的,软件运行时会检测注册状态,发现非法注册后会重新将标志位置0,变成未注册:
...
老哥,你这用的是什么应用软件? 不错!学习了! 大佬牛,观摩学习。 谢谢楼主分享~~ 感谢楼主分享{:301_997:} 我看不懂,但我大为震撼 学习了,这就实践一下。 学到了,这就试试 很棒 按照这个思路,岂不是很多软件都能破解? 请问,x64dbg调试的时候,f9运行直接断在TLS那里,之后就没办法运行了,怎么解决呢?