160 个 CrackMe 之 102,103 - Acid_Cool_178 系列去 NAG 新方法应用!

160 个 CrackMe 之 102,103 - Acid_Cool_178 的两个 CrackMe 都是去除 NAG 弹窗,并且,两个 CrackMe 都是 P-code 形式的 VB 代码,我们这次不采用修改 p-code 代码的方式来破解,而是采用修改 VB 程序的数据结构中的数据来破除 NAG。理论则来自于我的另一个帖子。


https://www.52pojie.cn/thread-1000513-1-1.html


上面的帖子中有对这方面的说明,这里只应用其方法。


首先看看第 102 个 CrackMe。


一、102 - Acid_Cool_178.vb1 的破解


方式1 - 删除事件法


我们用 VB Decompiler 打开该 CrackMe,如下图所示:

可以看到,是在 Form_Load() 事件中弹出的 NAG 弹窗,而且该事件没有其它可用代码,只有 NAG 弹窗的代码,我们只要去掉 Form 的 Load () 事件处理,就可以去除 NAG 弹窗。


按照我在 101 - CrackMe 的方法,找到 Form 的事件地址块,如下图所示:

将上面的事件地址清除,用 0 填充即可,如下图所示,就可以去除事件了:

保存后,我们再次反编译,如下图所示,Form_Load() 事件处理函数没有了,变成了一个未使用的函数了:

这样,就可以去除 NAG 弹窗,这种方式,适于方法代码可以全部去除的情况。

方式2 - 修改代码长度法

现在,我们使用另一种方式来去除该 NAG 弹窗,还是用 VB Decompiler 打开,如下图所示:

可以看到,事件代码开始地址为 0x00401A48,另外除了最后一条指令,前面的代码指令都是用来进行弹窗处理的。我们通过修改该事件的 p-code 代码长度来跳过弹窗代码。
在 VB Decompiler 中,Form_Load() 事件的名称显示为 Form_Load_401A74,而这个 401A74 就是在 101 CrackMe 中讲到的事件信息块的地址,这个地址指向事件代码的结束位置。
因此,我们可以算出该方法的  p-code 代码长度为:
0x00401A74 - 0x00401A48 = 0x002C
就是説该事件的代码长度为 0x2C,如下图所示,也证实了这个数据:

我们就是要修改这个数据,从前的指令区可以看到,最后一条指令的地址是 0x00401A71,因此,最后的代码长度为:
0x00401A74 - 0x00401A71 = 0x0003
所以,我们只要把 0x002C 改成 0x0003,就可以完美跳过 NAG 弹窗的代码,如下图所示:

在 VB Decompiler 中点“保存”后就可以了。


这种方式适于事件或函数代码中最前面的代码为 NAG 代码的情况,也就是可以去除函数中最前面的代码,如果在中间或后面则不行。

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
管埋员的头像-小北的自留地

昵称

取消
昵称