代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化(七)

VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。

【下载VMProtect最新试用版】

第四章:Handle块优化与壳模板初始化 

处理Jmp Ret指令

1、通过随机数决定jmp ret指令是变换成:

随机数==2
lea exx,dword ptr ds:[eax*4+0x474FCF]
jmp [exx]
随机数==1
push dword ptr ds:[eax*4+0x4051BB]
retn

2、注意v238 = GetRandInt0123((int)&savedregs);这一句,表示它的Mod.Reg寄存器是随机的0~3

代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化

处理Handle里面的Vmp_Ret函数

跟前面一样,将popad复杂化,变成pop eax、pop ecx等等

1、ESI_Matching_Array[2] == VMOpcode,符合条件的是:Vmp_Ret指令(pop xx popad popfd这种)

,{ 0x06,0x01,0x09,0x00,0x00,0x02,0x00,0x00, }//00474FCB 58 pop eax; 123.0047499B//00474FCC 61 popad//00474FCD 9D popfd,{ 0x06,0x00,0x08,0x00,0x00,0x02,0x01,0x00, }//00474FC7 58 pop eax; 123.0047499B//00474FC8 61 popad//00474FC9 9D popfd

2、将popad跟popfd删除,直到遍历到ret就退出

代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化

3、将前面v7->struc_PushRegister保存的寄存器递减方式存储,注意去掉Esp寄存器

代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化

4、总结

原始的:

pop eax

popad

popfd

ret

修改成:

pop eax

pop xx

pop xx

pop xx

xxxxx

ret

—  未完待续  —


VMProtect正版授权专享在线订购特享超低价格!还不赶紧加入你的订购清单/span>>>更多详情可点击咨询购买
标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年4月17日
下一篇 2020年4月17日

相关推荐

发表回复

登录后才能评论