VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。
【下载VMProtect最新试用版】
第四章:Handle块优化与壳模板初始化
构造出PushRegister那几条指令
1、将不符合条件的全部删除,直到找到push 0xFACE0002这条为止
2、因为Vmp保存寄存器环境代码是随机性的,原始壳模板的是固定的所以要替换掉
3、因为 pushfd pushad模板后面必然是push 0xFACE0002
4、根据寄存器不同而设置不同的VmpOpcode,进行构造填充struct_DisassemblyFunction结构
5、返回:lods byte ptr ds:[esi]在数组第几个元素
OD最终效果图如下:
OD数组struc_SaveAllDisasmFunData->ArrayAddress排列顺序如下:(注意 struc_SaveAllDisasmFunData->ArrayAddress排列顺序 就是最终代码显示顺序)
处理lods byte ptr ds:[esi]指令
1、初始化v245跟v246数组,具体用处待定
2、找到处理的地方Vmp == 0x36
3、struct_DisassemblyFunction结构重新赋值
4、找到该struct_DisassemblyFunction所在的数组位置
5、并重新new个新的struct_DisassemblyFunction
6、根据随机数构造命令:INC、Add、lea,实际上只要实现esi+1都行
7、OD最终效果图:
8、原始模板
9、前面的构造出了inc esi(add lea),那么还差一句mov al,[esi]
10、注意v158 = GetRandInt0123((int)&savedregs);这一句是随机获取0~3,也就是Reg:0=al、1=cl、2=dl、3=bl
11、注意这一句跟后面的指令都是有关联的,换了后面影响的指令都要换不同的Reg
— 未完待续 —
VMProtect正版授权专享在线订购特享超低价格!还不赶紧加入你的订购清单/span>>>更多详情可点击咨询购买
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!