记录第一次逆向破解
本文记录第一次使用x64dbg破解Sublime Text 4,具体流程是按照吾爱破解的文章[1]进行。
由于是参考文章的复现,因此,本文记录简单一些,如果希望了解具体过程,可以参考原文。
找到重要标志文本
安装Sublime Text 4,或者下载解压便携版程序,到已经路径下。
选中应用程序sublime_text.exe,右键,点击“用x64dbg调试”。
点击菜单栏的运行,使程序运行。
在关于中,可以看到字符串“Unregistered”,以此作为标志文本。
找到关键地址
在反汇编区域中,右键,搜索字符串“Unregistered”。
选中,右键,点击“在反汇编中转到”。
可以在上文,找到关键字符串“Unregistered”,以及在上面部分位置可以看到字符串“Registered to”,根据之前学习的汇编代码可知,需要改变此前的跳转,而本文可以看到,关键跳转为
1 | cmp byte ptr ds:[rsi+5],0 |
以上汇编的代码意为,比较寄存器中rsi的第六位与0是否相等,若相等则跳转,反之则不跳转。
若只是想修改关于处的文本,可以选择修改跳转语句,使之反向即可。
参考的原文,在该处提前修改rsi寄存器中的值。
设置断点,确定寄存器中值的地址
在cmp byte ptr ds:[rsi+5],0
,处设置断点。
再点击关于,可以使程序运行到该断点处停下,可以在右侧的FPU看到RSI寄存器的地址。
右键,点击“在内存窗口中传到”,此处,应该提前在call一行设置断点,然后修改寄存器中的值,但为了记录方便,进行下一步操作。
在内存窗口中,右键设置断点,在不同版本中所需的断点设置不同,在原文中,只需要设置1个字节,但本人所涉及4152,需要设置8个字节。
运行程序,使用不同页面切换,会检查该符号位的方式,通过修改内存,强行赋值的方法,破解该程序。将之前的反汇编区域中的断点删除,运行之后,在以下地址暂停。
首先是检查更新,由于4152是当前最新版本,因此跳过。
在该位置,修改反汇编代码,为以下内容:
1 | mov byte ptr ds:[rax+5],0 |
即可,得到注册之后的Sublime Text 4。右键,补丁,即可。