理解了VMP保护的原理
把X86指令 push(入栈) 之后 加密 然后 jmp到虚拟机 然后通过解释器,模拟CPU对指令进行执行
比如
VMProtectBegin
push 2
push 3
call 0x123456
VMProtectEnd
把这段代码进行加密 变成
jmp 到虚拟机中
利用解释器进行解释执行
把X86指令 push(入栈) 之后 加密 然后 jmp到虚拟机 然后通过解释器,模拟CPU对指令进行执行
比如
VMProtectBegin
push 2
push 3
call 0x123456
VMProtectEnd
把这段代码进行加密 变成
jmp 到虚拟机中
利用解释器进行解释执行
加密的时候先把你加密的代码加密成他解释器的代码,然后在你的程序中嵌入一个解释器
VMP 是从指定位置提取 x86 机器码分解为对应的 vm_byte ,然后jmp到虚拟机后,通过 vm_dispatcher 引擎,执行对应的 vm_byte , 有了 NP 的 FKVMP 后,方便了提取各个 H 的分部位置(仅此而尔,如果你原来不懂它的,那么这个插件对你来说还是没用的)
,出来后从有限的几个 H 中就可以还原出原始指令的真实意图(就我感觉,无须还原出(暂时我自己也不能还原出)与原始指令真一一对应的 x86 指令),只能抽象模拟出原始模样(但这样对了解算法和破解就已经足够了)