首页 > 其他分享 >Sublime Text 4 Build 4126 永久激活破解+汉化

Sublime Text 4 Build 4126 永久激活破解+汉化

时间:2024-09-05 22:57:18浏览次数:13  
标签:Text 补丁 4126 未注册 Build 断点 破解 sublime cmp

不得不说sublime是轻量化IDE性能王者,比vscode要快不少,不过vscode如今胜在生态。

下面正式开始破解教程!


首先x64dbg载入sublime_text.exe主程序,shift+F9跑起来

 

先找个最明显的点入手,例如点击帮助->关于

 

关于信息这里会有注册状态,未注册显示Unregistered,那首先想到字符串大法!直接sublime exe模块搜索字符串

 

双击进去来到

 

可以看到字符串上方有个jmp跳过它,那很明显jmp下面的move ecx,228就是关于界面未注册赋值的入口,ctrl+r找下引用

 

找到一处双击进去来到

 

可以看到下方是Registered to … 注册给某某某,那很明显

cmp byte ptr ds:[rsi],0
je sublime_text_origin.13F7159BE

cmp为关键比较je为关键跳转,cmp处下断点运行,再次点击关于,断下来到断点处,FPU中RSI寄存器值指向了地址13FFD5ED8

 

我们RSI右键->在内存中转到,查看内存

 

很明显这地方为0的时候标识未注册,把值改为1,运行之验证下结果。

 

 

果不其然Registered to Unlimited User License…

经测试,此处的修改是全局的,应该就是某个管理类中的某个布尔值来控制。改完之后ctrl+s也不再弹出提示购买弹出,窗口标题也没有提示UNREGISTERED了。

 

 

不得不说越优秀正规大型的软件往往采用比较优秀的架构设计模式,严格的面向对象风格编写。

好,回归正题,先不着急修改。如果这里只对跳转做爆破的话,那只是打开关于界面显示已注册而已,其他功能限制或者有暗桩啥的都没有破解绕过。网上很多对sublime的破解往往是每个限制的点爆破一下,改改跳转,再加个域名屏蔽防止服务器校验。这样可能没破解完整导致某个条件下又反弹触发校验机制,或者导致功能缺陷。

那我们的思路是,既然找到全局控制的点,那我们只需要找到一个合适的时机,对这个点强制写入值1,实现破解!

那怎么找到这个时机点呢?很简单,我们对地址13FFD5ED8(重新运行后为xxxxD5ED8)下个硬件执行断点。经过测试,有一个比较好的时机点是:每次聚焦或者切换标签的时候都会触发更改窗口标题,我们知道,未注册的时候每次窗口标题变更后面都带有(UNREGISTERED)未注册的字样。所以每次聚焦或切换标题的时候都会触发校验。所以这里是个蛮不错的点。果真我切换标签的时候,硬件断点也命中,来到这里

 

cmp byte ptr ds:[rax],0
sete cl

这里rax指向的就是全局控制是否注册字段的内存地址。这里和0比较了一下之后设置了ZF标志位。那就很简单了,直接操作这两句强制赋值rax指向地址的值为1即可。

 

运气很好,大小一致,接着第二句改下标志位,这里我们找一个空的没用的寄存器比如RCX来做等价替换

 

改完是

 

改完之,运行之,没问题完美破解,帮助->删除注册信息 都没用哈哈。

ctrl+p补丁之。最后用撸个补丁。放出补丁~

补丁已经放到网盘了,需要的自取。

下载:

https://pan.baidu.com/s/18UOx5lPHoB8Fc58jwzmrdA

提取码:vmdc

 

如图

 

标签:Text,补丁,4126,未注册,Build,断点,破解,sublime,cmp
From: https://www.cnblogs.com/shujuyr/p/18399335

相关文章

  • 如何用 ThreadLocal 构建强大的 ContextManager
    在实际开发中,我们经常需要维护一些上下文信息,这样可以避免在方法调用过程中传递过多的参数。例如,当Web服务器收到一个请求时,需要解析当前登录状态的用户,并在后续的业务处理中使用这个用户名。如果只需要维护一个上下文数据,如用户名,可以通过方法传参的方式,将用户名作为参数传......
  • 轻松管理上下文:ThreadLocal 助力 ContextManager
    在实际开发中,我们经常需要维护一些上下文信息,这样可以避免在方法调用过程中传递过多的参数。例如,当Web服务器收到一个请求时,需要解析当前登录状态的用户,并在后续的业务处理中使用这个用户名。如果只需要维护一个上下文数据,如用户名,可以通过方法传参的方式,将用户名作为参数传......
  • 利用 ThreadLocal 打造 ContextManager 的最佳实践1
    在实际开发中,我们经常需要维护一些上下文信息,这样可以避免在方法调用过程中传递过多的参数。例如,当Web服务器收到一个请求时,需要解析当前登录状态的用户,并在后续的业务处理中使用这个用户名。如果只需要维护一个上下文数据,如用户名,可以通过方法传参的方式,将用户名作为参数传......
  • String,StringBuffer,StringBuilder有什么区别?
    1.可变性:String类使用了final关键字字符数组保存字符串,所以String对象是不可变的,也就是我们说的常量。而StringBuffer和StringBuilder均继承了AbstractStringBuilder类,且它们的构造方法都是调用父类的构造方法。AbstractStringBuilder类中也使用了字符数组保存字符串,但是没有使用......
  • 动态引入模块:Webpack require.context 的灵活运用
    require.context是一个非常有用的WebpackAPI,它允许我们在编译时动态地引入模块。这个功能在一些场景下非常有用,比如需要动态加载模块、实现国际化、主题切换等功能时会经常用到。require.contextAPI说明官方文档:依赖管理|webpack中文文档首先,让我们了解一下require......
  • Checking the Text 文本校对
    CheckingtheText文本校对[POJ2758]&&[BZOJ2258]&&[NFLSOJ-文本校对]题面描述为了给Wind买生日礼物,Jiajia不得不找了一份检查文本的工作。这份工作很无聊:给你一段文本要求比对从文本中某两个位置开始能匹配的最大长度是多少。但比无聊更糟糕的是,Jiajia的经理还可......
  • root 添加登录密码(基于buildroot)
    通过以前这篇文章Linux启动后自动登录root进入控制台-f1engmin11-博客园(cnblogs.com) 我们可以知道,Linux启动后,是否自动登录root用户,可以通过修改/etc/inittab文件的 respawn动作来实现。下面记录一下如何添加root登录密码:1.首先 /etc/inittab文件设置为ro......
  • Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点SpannableString在Android开发中是一个非常强大的工具,它允许你在单个字符串范围内应用多种样式。使用SpannableString,你可以为文本中的不同部分设置不同颜色,字体大小,字体......
  • c#判断右键菜单(ContextMenuStrip)是从哪个控件弹出来的方法
    1.方法一:在contextMenuStrip1打开时获取控件名称双击contextMenuStrip1在它的opening事件中写入下面的代码:privatevoidcontextMenuStrip1_Opening(objectsender,CancelEventArgse){stringwhichcontrol_name=(senderasContextMenuStrip).So......
  • [Typescript] Build mode of tsc: tsc -b
    Along-awaitedfeatureissmartincrementalbuildsforTypeScriptprojects.In3.0youcanusethe --build flagwith tsc.Thisiseffectivelyanewentrypointfor tsc thatbehavesmorelikeabuildorchestratorthanasimplecompiler.Running tsc--bui......