sublime4 hex注册笔记

  • Post author:
  • Post category:其他


目前使用的是 x64dbg 还算好用 默认中文好评

有两种方式可以 查看exe hex 十六进制流

在这里插入图片描述

我用的sublime 版本是4126 这个版本目前不太好找补丁,所以我就打算自己做一个简单的补丁。

第一种 直接打开(但是我的电脑直接打开4126版本会直接在开始运行的时候卡死,不知道是不是寄存器的问题还是官方做了 防调试)

第二种直接附加 当前sublime.exe 进程,类似进程注入 这个很多都可以用。

在这里插入图片描述

本身目的是为了跳过注册,所以需要全局找到控制 注册布尔值的寄存器位置 和指令,一般作为判断来讲,用if判断,主要命令 就是 cmp 对比 和 je 或者jre判断结果 mov 赋值或者转换 这些指令,好歹当初为了能更好操作系统也学过一段时间寄存指令。

有了目标和大概要找的东西,那就开干。

在这里插入图片描述

既然要找 Unregistered 肯定就是首要目标了,这个是判断结果,那么肯定是作为 字符串暂存的,

不出所料,果然找到了

在这里插入图片描述

而且还有意外收获,首先第一行就是 返回的结果信息,第二三行是 提示去注册购买的那个弹窗里面的信息,第四行就是 删除本地license的 那个提示弹窗的文案,当初开发的代码意外的很好看懂,这样就方便多了,双击进入CPU窗口的指令层里面

在这里插入图片描述

查看上下文可以发现 Unregistered 这一行是去偏移地址肯定就不是 主要控制 是否注册的逻辑区域,但是上面那行有个 jmp 就很有意思了,这个指令的直接作用 就是跳转,相当于调用回调,不用判断,而且跳转的位置是 Unregistered 后面,就说明跟 Unregistered 关系不大了,

看上面mov指令其实可以看出 是在显示 Unregistered 之前的一次赋值操作,只要 Unregistered 这行指令调用了 mov那行肯定也会调用,用 ctlr+r去到调用命令的 触发命令位置。

在这里插入图片描述

拿到了 很幸运只有一个,

在这里插入图片描述

双击进入可以看到 确实是 注册相关的逻辑线,由此可以看出 如果筛选字符串直接筛选 registered 也是可以找到这里的,但是 我总不能未卜先知的知道后面的 逻辑线上会有这个,所以这个过程还是有的。

其实找到je 这里其实就可以很清楚看懂 sm关于弹窗的注册的逻辑判断大概是怎么个情况了,既然je判断了肯定是cmp后面的判断等式 相等了才会跳出,那么说明 只要不相等 我就相当于已经注册过了,

那么 我就需要找到 cmp byte ptr ds:[rsi+5],0 里面的 rsi+5 的地址了,所幸

在这里插入图片描述

在指令窗口旁边有个 当前指令寄存器值的存储 窗口 等我打个断点 触发一次就可以知道 rsi+5的地址了,

在这里插入图片描述

看 rsi寄存的地址 我已经拿到了,那么 我到地址里面手动+5就可以看到 存放注册状态的值了,

在这里插入图片描述

当当,第一个竖框是 找到 的rsi的寄存的值,第二个就是 rsi+5的值了,其实可以手动忘当前地址后面查5个地址,或者自己计算一下十六进制也能拿到对应的值。

既然默认是 00 那么 我肯定要修改成 01的,双击修改,修改完成,重新触发。

在这里插入图片描述

就自动 有了注册状态了,那就说明这里是 控制 关于弹窗部分的 注册状态,那么我要测试一下其他 注册判断是否引用了这里的值。但是我重新删除了 注册状态,也没有触发让我去注册的那个弹窗,那么就可以默认看做对方开发的时候是用的同一个值。

ok,到这里就完成了一多半了。

在这里插入图片描述

重新覆写一下 cmp的指令,让他强制去对比 1 而不是0 即可,也可以把第二个指令 je 给 置空nop或者 直接用空寄存器转换一下可以。

剩下的就是用 x64dbg 去打个补丁保存一下 或者去用 AT4RE 去撸一个补丁,我看对方官网好像关了也就没有去试。

其实有兴趣的可以研究一下 提示注册的弹窗是被什么命令给触发的 用哪里去控制当前sublime的注册状态,而不是由打开 关于 窗口的时候触发修改当前的注册信息。



版权声明:本文为u012319059原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。