这次要破解的软件是这个: 首先分析其行为,打开软件: 按照以往的经验,程序有个字段用于维护注册状态,我们可以通过字符串快速定位到它。我们将其载入 AK: 搜索“软件未注册”,在 中找到: 然后在 中找到,字符串的 ID 是 0x7f060003 。之后搜索这个数字。 我们在 main ,也就是入口的 MyInit 函数中找到了这个数值: 我们猜想 :cond_b 是失败分支,我们往上找: 我们可以得出 ChkNumA/B/C 是三个关键判断。下面的 if-eqz 是关键跳。成功各分支将 m_regFlag 设为 1,说明它是保存注册状态的字段。 我们可以将这三个 if-eqz 都给注释掉,但是我们可以采取另一种方式,在最后一个 if 的下面添加 :goto_100 标签,然后在第一个 if 上面添加 goto :goto_100 。 重新打包、安装软件后,打开软件,我们发现不再弹出注册提示了。访问菜单->更多->注册之后,在注册界面中我们可以看到“已注册”。