【工具】樱花补丁制作工具使用心得
本帖最后由 MingKing 于 2017-9-4 21:25 编辑之前在小生的破解工具包中看见这个软件,一直没有使用过,不知道是做什么用的,在之后的破解中渐渐学会了内存补丁工具的使用方法
场景1:在破解某个软件时,一查壳,发现是VMP壳,顿时懵逼,我这水平,对付UPX壳勉勉强强,对付强壳哪敢想?
幸好有ximo大大的自动脱壳脚本,od自动跑了一分多钟,可以搜索到字符串了,但是使用PE工具重建之后依然无法运行,也就是脱不掉壳,
分析了一下软件,找到了爆破方法,但是未脱壳的软件无法用od修改,这时可以使用补丁工具间接修改。
内存补丁工具应该是在软件运行时临时修改内存,而不是对软件本身进行修改。
所以工具又在场景2派上了用场。
场景2:前几天在破解豪迪群发软件时,直接修改程序会改变软件的大小,MD5值之类的,软件校验后会触发暗桩,导致使用问题,这时使用
内存补丁就不用再去对付这些暗桩了!
破解笔记链接: https://www.52pojie.cn/thread-640942-1-1.html
此次就以这个软件的修改点为例来说明内存补丁工具的使用方法
文字多,请耐心阅读
四处修改,直接放上修改位置与修改后的代码
------------------------------------------------------------------------------------------
第一处:
00555CDF /75 3F jnz short qqqf.00555D20
修改后:
00555CDF /EB 3F jmp short qqqf.00555D20
第二处:
00555D27 /75 05 jnz short qqqf.00555D2E
修改后:
00555D27 90 nop
00555D28 90 nop
第三处:
00554C33 /0F8C BB010000 jl qqqf.00554DF4
修改后:
00554C33 /E9 BC010000 jmp qqqf.00554DF4
00554C38 |90 nop
第四处:
00554DF8 /75 68 jnz short qqqf.00554E62
修改后
00554DF8 /EB 68 jmp short qqqf.00554E62
------------------------------------------------------------------------------------------
软件如图:
------------------------------------------------------------------------------------------
细碎的一些功能大家自己也能看懂,或是软件自带说明,所以我只说主要功能
第一处:
内存地址:00555CDF (最前面的是内存地址)
原始指令:75 3F (内存地址后的是指令)
修改指令:EB 3F (jnz修改为jmp后指令改变)
第二处:
内存地址:00555D27
原始指令:75 05
修改指令:90 90 (nop都是90)
------------------------------------------------------------------------------------------
注:修改指令与原始指令长度必须相等!!!
示例:
如上图:00586E58 处原始指令为55,修改后却为E9 A391A7FF90,仔细观察发现原本三行指令变为了两行,也就是说修改
这一行会影响之后的两行指令,后面的指令会自动nop掉来腾出空间。如果修改后,后面的指令不再用得上,那么这样改是可以的,
而想要成功修改,原始指令得填55 8BEC83C4F0(之前填错,真的不好意思),这样,前后指令长度才相等,才能成功修改(长度不相等,软件不会同意添加指令)
其他情况注意变通
------------------------------------------------------------------------------------------
第三处:
内存地址:00554C33
原始指令:0F8C BB010000
修改指令:E9 BC010000 90
第四处:
内存地址:00554DF8
原始指令:75 68
修改指令:EB 68
选择要修改的程序,一个个添加上述指令,点击生成补丁即可成功。
(之后我发现我的方法中豪迪软件使用原版程序可能还是会有些问题,而去MD5校验实在是麻烦且难找,
像这样使用内存补丁感觉确实是要方便很多)
最初我使用补丁工具一头雾水,很久才搞明白,写这篇教程方便后来者学习,我学习破解是一时兴趣,不知道会做多久,
所以同时也是防止以后自己忘记,方便别人的同时也是在帮助自己。
可能写得没有尽善尽美,还请见谅,有些用词不当,大神笑看则是。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2017.9.3
by MingKing sy888 发表于 2017-9-4 10:39
00586E58这个原始指令为什么要改成 原始指令得填55 8BEEC83CE EC 代表什么?
修改前后指令长度要相等,修改处指令只有55,修改后E9 A391A7FF90,前后长度不等,所以要填入55 8BEEC83CE 才能修改成功,这只是一个示例,以后遇到就明白了,EC什么的都是指令代码,不需要理解 膜拜大神,学习了,感谢分享心得{:301_993:} 不错 学习了啊做个视频讲解就更好了{:1_918:} 脱壳脚本发一下可好 感谢 前者的执教 请问为什么要填55 8BEEC83CE 这样指令大小字节不会被占用,?不懂这个 乔帮主 发表于 2017-9-3 21:19
请问为什么要填55 8BEEC83CE 这样指令大小字节不会被占用,?不懂这个
后面的指令会自动nop掉来腾出空间,如果你是要跳转到其他地方,后面的指令不再用,这样是没有关系的,要不然就换个地方修改,我只是举个例子。
所以说樱花并不是太方便.
谢谢指导!! 大师。,收徒弟吗。。我想跟你学