特点

不同的压缩壳会先将 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后的就是一大堆的无意义的代码。

[加壳脱壳] VMP壳原理简介相关推荐

  1. 某vmp壳原理分析笔记----ELF文件的加载,链接,IDAPYTHON

    某vmp壳原理分析笔记 分析的样本为某数字公司最新免费壳子.之前的壳子已经被很多大佬分析了,这篇笔记的主要目的是比较详细的分析下该vmp壳子的原理,数字壳子主要分为反调试,linker,虚拟机三部分. ...

  2. 加壳软件的实现原理篇

    加壳软件的实现原理篇           Author: x0R     Heap       Heap 棕色:代表HEAP区,也就是动态分配的内存区域.       Protected Progra ...

  3. 壳与加壳脱壳基础知识

    在自然界中,我想大家对壳这东西应该都不会陌生了,由上述故事,我们也可见一斑.自然界中植物用它来保护种子,动物用它来保护身体等等.同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程 ...

  4. PE结构详解(加壳脱壳必备知识)第二篇·存储地址介绍

    昨天分享了一篇PE结构详解(加壳脱壳必备知识),本篇是上一篇续篇,主要介绍关于PE结构的三种存储地址 VA.RVA.FILEOFFSET及转换方式,希望对你有所帮助. 一.关于VA.RVA.FILEO ...

  5. 壳学习一:PECompact 2.x 加壳脱壳

    壳学习一:PECompact 2.x 加壳脱壳 SkyJacker Http://blog.csdn.net/skyjacker Email:HeMiaoYu <At> gmail.com ...

  6. 吾爱软件加壳脱壳工具箱 v 1.0

    集整理一些常用软件加壳脱壳工具制作成工具箱,希望大家喜欢. 下载地址 本文转自haiyang45751CTO博客,原文链接:http://blog.51cto.com/haiyang457/19288 ...

  7. PE结构详解(加壳脱壳必备知识)

    近期太忙一直没有抽出时间来更新文章,周末抽空写一篇关于PE结构相关知识,PE结构是windows下的可执行文件的标准结构.可执行文件的装载.内存分步.执行等都依赖于PE结构.如果要掌握反病毒.免杀.权 ...

  8. 【胖虎的逆向之路】03——Android一代壳脱壳办法罗列实操

    [胖虎的逆向之路]03--Android脱壳办法罗列&脱壳原理详解 [胖虎的逆向之路]01--动态加载和类加载机制详解 [胖虎的逆向之路]02--Android整体加壳原理详解&实现 ...

  9. 什么是壳 - 脱壳篇01

    什么是壳 - 脱壳篇01 让编程改变世界 Change the world by program 壳 在自然界中,植物用壳来保护种子,动物用壳来保护身体,我们人类没有壳,但我们有衣服,房子也起到了壳的 ...

  10. DLL巧妙的绕过被VMP壳HOOK的ZwProtectVirtualMemory

    被VMP HOOK的ZwProtectVirtualMemory介绍 ZwProtectVirtualMemory,是一个修改内存输入的API函数,VirtualProtect和VirtualProt ...

最新文章

  1. Python2 Python3 爬取赶集网租房信息,带源码分析
  2. 一些自己关注的人工智能杂志(注意:这里所列的影响因子是08年的IF)
  3. java在线编译器_什么是Java内存模型
  4. CSS 实现隐藏滚动条同时又可以滚动
  5. 另一种无法enable ABAP source code tool的原因
  6. Sharepoin学习笔记 —架构系列--02 Sharepoint的处理(Process)与执行模型(Trust Model) 1
  7. web api添加拦截器
  8. selinux= 为 disabled_Selinux安全加固
  9. 学习oracle的感悟,随笔:最近关于Oracle学习思考的一些感悟
  10. 列表与元组——Python基础语法
  11. android textView 折叠 展开 ExpandableTextView
  12. 【R图秀-2】社交网络数据可视化(一)
  13. python - list 列表推导式
  14. ASP.NET Web应用程序和ASP.NET网站的区别
  15. Lottie动画的优劣及原理
  16. 林业局计算机考试试题,汕头市农业局林业局计算机信息网络安全保护管理制度...
  17. windows设置定时任务(win10任务计划程序)
  18. python自回归_向量自回归模型(VAR)到底厉害在哪里?
  19. 卡内基梅隆计算机专业,卡内基梅隆大学计算机科学专业全面解析
  20. AI插画师:生成对抗网络

热门文章

  1. 直接下载Google Play上APP的安装包
  2. python修改mac地址_python中的MAC地址生成器
  3. 《STM32开发指南》ALIENTEK战舰STM32开发板资料
  4. Apache SOLR and Carrot2集成
  5. Carrot2 在线版 知识图谱:以慢性胰腺炎为例
  6. 《那些年啊,那些事——一个程序员的奋斗史》八
  7. python实现语法分析器_python语法分析器
  8. VSCode下载与安装
  9. AndroidStudio 抓包工具Profiler使用
  10. 微博表情 文本与图片对照表