[加壳脱壳] VMP壳原理简介

   日期:2020-08-31     浏览:446    评论:0    
核心提示:特点不同的压缩壳会先将 pe 文件压缩,载入内存后进行解压缩(TLS函数内)然后运行,而 vmp 是修改 pe文件中的汇编指令为一种 “伪指令” ,这些伪指令被虚拟机引擎解析,代替cpu去执行这些指令,一般一条正常指令会对应多条伪指令(多是些无意义的跳转),所以被 vmp 加壳的程序速度会变慢。...

特点

不同的压缩壳会先将 pe 文件压缩,载入内存后进行解压缩(TLS函数内)然后运行,而 vmp 是修改 pe文件中的汇编指令为一种 “伪指令” ,这些伪指令被虚拟机引擎解析,代替cpu去执行这些指令(如JVM和.NET),一般一条正常指令会对应多条伪指令(多是些无意义的跳转),所以被 vmp 加壳的程序速度会变慢。

不同的虚拟机支持的 “伪指令” 不同,原则上只要虚拟指令集一变动,那原本的伪指令的解释就会发生变化。,所以很难针对所有 vmp 壳写出一个通用的注册机。要逆向被VM SDK保护起来的原始代码,只有手工分析这段虚拟指令,找到虚拟指令和原始汇编的对应关系,然后重写出原始程序的代码,完成算法的逆向和分析。

举例

比如这是一个正常的x86函数调用:

push uType
push lpCaption
push lpText
push hWnd,
call MessageBox

被 vm 之后:

vPushMem uType
vPushMem lpCaption
vPushMem lpText
vPushMem hWnd,
vCall vCode

此时的虚拟指令只能被VM虚拟解释器执行,普通cpu无法解析,所以我们用调试器看到的被vm后的就是一大堆的无意义的代码。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服