第一期 18 制作内存补丁

打开软件, 发现要注册, 我们输入 MXYLR123, 程序弹出错误提示

错误提示

我们点击 继续试用, 出现一个登录界面, 但是我们这次不破解登录

我们这次破解这个 未注册

目标

这个软件启动的时候会判断软件是否注册, 它先找一下你的机器码, 注册码和序列号, 然后判断是不是正确的. 是就显示 已注册, 不是就显示 未注册. 我们从 未注册 下手.

查壳, 没壳, 直接 OD 载入

直接搜字符串 未注册, 竟然有意外发现, 我们发现了 已注册, 我们跟进 已注册

找到 已注册

我们找一找有没有跳转, 竟然有三个跳转, 我们一个个下断

竟然有 3 个跳转
1 号跳转
2 号跳转

3 号跳转没影响, 就不下断了

运行, 1 号跳转未实现, 不管它了

1 号跳转未实现

2 号跳转实现了, 它跳过了成功提示

2 号跳转已实现

我们修改标志位测试下, 软件提示已注册

测试成功

现在我们给这个程序打补丁, 我尝试过用樱花补丁制作工具, 但是发现不会用 =_= orz, 所以我这次用视频里面的补丁制作工具 orz

[吾爱也有打补丁教程](https://www.52pojie.cn/thread-405758-1-1.html)

打开工具, 其他 > 制作内存补丁, 然后选择我们要打补丁的软件, 消息标题 随便输入一个 MXYLR, 启动提示写一个 http://www.onetale.xyz, 我们点下面的 添加, 地址 输入 0046F389, 也就是我们要改的那一行的地址, 不管 搜索范围, 然后这个 修改长度, 我们换个行再说.

这个修改长度, 就是指令机器码站的字节, 通俗点就是 0F8489040000 这 12 个数字, 每 2 个数字算一个单位长度, 12 / 2 = 6 个单位长度, 所以我们这里填 6.

`原始指令` 填上机器码 0F8489040000, 修改指令909090909090, 注意这两个长度要一致, 然后我们点 添加, 然后 生成, 随便起个名字.

这个补丁, 运行的时候会在同一目录下搜索被破解的目标软件名, 如果这两个不在同一目录, 这个补丁就不能用了.

生成这个东西

如果你打开源文件的话还是会提示 未注册, 因为我们没有修改源文件.

弹处刚才输入的内容

什么是内存补丁 ? 就是程序打开的时候, 要加载内存, 然后才运行程序, 而内存补丁就是先运行源程序, 然后在加载内存的时候, 把程序代码改了, 达到破解的效果