VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。
【下载VMProtect最新试用版】
第四章:Handle块优化与壳模板初始化
将Jmp Handle跟Jmp VMDispatcher分别存储
Jmp Handle处理方法
-
首先来看ESI_Matching_Array[0]==6,v52成立的条件
-
然后拿v214->FunAddr去struc_SaveAllDisasmFunData数组里面找到符合
-
DateTimeToStr_2函数查找过程,查找到返回该数组下标,然后用GetItem_7读取出该数组:
条件是:v214->FunAddr == struct_DisassemblyFunction->LODWORD_VMP_Address。基础版(struc_SaveAllDisasmFunData): -
然后判断ESIResults[Number_1]==1,如果成立将找到的DisassemblyFunction结构体保存起来
-
最后将该找到的DisassemblyFunction结构保存到v7->Esi_Addr[4 * Number_1]
Jmp VMDispatcher处理方法
- 直接去struc_SaveAllDisasmFunData数组查找,找到直接保存
-
与Jmp Handle相比少了ESIResults[Number_1]过滤跟将结果保存到*(_DWORD *)&v7->Esi_Addr[4 * Number_1]
执行完毕结果
IDA定义的结构体:
OD显示:
Jmp VMDispatcher与Jmp Handle的含义是什么意思/span>
如图所示:
Jmp VMDispatcher就是:看jmp short 00474989这一句,每个Handle块执行完毕都是跳回到VMDispatcher进行下一轮字节解析
Jmp Handle就是:VmpHandle块,每个Handle对应不同的功能
— 未完待续 —
VMProtect正版授权专享在线订购特享超低价格!还不赶紧加入你的订购清单/span>>>更多详情可点击咨询购买
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!