892644330 发表于 2016-7-4 16:56:26

Baymax 大白使用技巧之异常中断补丁

本帖最后由 PYG官方论坛 于 2016-7-5 10:04 编辑

今天遇到一款加壳软件使用大白【Baymax Patch Tools】居然没成功 于是有了下文~这里分享下思路恕不提供程序 长话短说。
程序验证的思路是在启动时读取网页上指定内容(真假)来决定其功能是否启动。

破解的方法也就很简单了:


0041FAD0    A3 604CB700   |mov dword ptr ds:,eax \\\\这里只需把eax指向的内容改为“真”即可,它从网页解密出来的文本内容是“假”
0041FAD5    8B5D F4         |mov ebx,dword ptr ss:
0041FAD8    E8 0E25FEFF   |call XXX.00401FEB
0041FADD    53            |push ebx
0041FADE    51            |push ecx





于是我的补丁方案也出来了:




大家仔细看看也没什么问题 然而就是没效果,在OD里测试却是没问题的。
这里我也hook了相应的函数同样还是无济于事。

于是生成调试补丁   用DebugView测试却也找不出原因来:




于是只要请教@Nisy 校长了 (⊙﹏⊙)b(⊙﹏⊙)b(⊙﹏⊙)b

哈哈哈哈 发给校长试试 果然校长不愧是校长 马上就找出问题来了。。

校长三言两语就解释完了 而我还在懵比中测试。最终测试确实如此!!!▄︻┻┳═一


总结来说 就是对于需要patch的地址如果是在线程中(非程序的主线程)执行的程序而言设置硬件断点是无效的而默认的【智能】选择的是硬件断点。
此时必须改为INT3断点而INT3 需要程序解码后 设置代码为CC所以需要hook。
而如果有的程序采用默认的【智能】硬件断点能成功的话就不需要hook也能破解加壳程序。



希望更多的坛友来发扬光大咱PYG的大白工具!
最后还是那句话 :
大白真是好 不怕有壳 还能做通杀补丁~
大白真是好 不怕有壳 还能做通杀补丁~
大白真是好 不怕有壳 还能做通杀补丁~



PYG官方论坛 发表于 2016-7-4 17:03:39

对于有壳的程序,大白在异常断点补丁中若采用偏移地址方式是无需设置API HOOK等待解码时机的,因为硬件断点坐等进程执行即可。而Baymax中的异常断点位于主线程,当新线程创建时并未将该硬件断点设置给新线程,导致若断点地址不在主线程的时候将不会触发中断,补丁无效。解决方案就是设置INT3断点,INT3断点就不再受到线程的约束,由于程序带壳所以需要等待解码后在进行CC断点的设置,所以需要API HOOK。

本帖中的目标程序验证点就位于新线程中,所以我们用硬件断点无法触发,只能用INT3断点来实现破解。

PYG官方论坛 发表于 2016-7-4 17:07:01

每个线程对应4个硬件断点Baymax 只设置了主线程的硬件断点 所以新线程调用那个代码地址的时候硬件断点就中断不下来了

动物凶猛 发表于 2016-7-4 17:33:27

也来个API HOOK技巧的文章给我们真正的大白学习了,大神的教程一略而过,看不懂。

erui 发表于 2016-7-4 22:39:40

学习了,真是受益匪浅

艺缤 发表于 2016-7-5 21:26:45

学习学习,感谢分享!
页: [1]
查看完整版本: Baymax 大白使用技巧之异常中断补丁