VMProtect的逆向分析和静态还原课件.ppt
《VMProtect的逆向分析和静态还原课件.ppt》由会员分享,可在线阅读,更多相关《VMProtect的逆向分析和静态还原课件.ppt(31页珍藏版)》请在三一办公上搜索。
1、,VMProtect的逆向分析和静态还原,Bughoho,目录,VMProtect逆向分析(一)VMP简单介绍(二)VMP逆向分析执行流程图全貌VMP的HandlerVMP指令分类逻辑运算指令寄存器轮转字节码加密和随机效验阶段总结VMProtect静态跟踪(一)虚拟执行特点(二)执行引擎的虚拟执行(三)分析条件跳转的两条出边字节码反编译(一)中间表示语言(二)指令化简和优化(三)转换汇编指令树模式匹配(四)归类映射寄存器(五)转换汇编指令动态规划(六)寄存器染色基本块内的寄存器轮转基本块间的寄存器轮转寄存器的二义性问题识别寄存器的二义性的步骤,VMProtect的逆向分析和静态还原,一.VMP
2、rotect逆向分析,一.VMProtect逆向分析,(一)VMP简单介绍VMProtect是一款虚拟机保护软件,是目前最为流行的保护壳之一,与其他类型保护软件不同的是,它使用的是虚拟机保护技术,侧重点在于保护所指定的函数,增加逆向分析的复杂度虚拟机保护特征将由编译器生成的本机代码(Native Code)转换成字节码(Bytecode)将控制权交由虚拟机,由虚拟机来控制执行转换后的字节码非常难以阅读,增加了破解的复杂性,一.VMP逆向分析,(A)VMProtect Demo版本 流程图,虚拟机其实就是一个字节码解释器,它循环的读取指令并执行,并且它只有一个入口和一个出口(vm_exit)。通
3、过静态分析,我们可以分析出整个执行引擎的完整代码,graph.demo.pdf,一.VMP逆向分析,(B)Vmprotect Professional 版本 流程图,所有选项全部开启后的结果虚假跳转垃圾指令大量的fake jcc(虚假跳转)和垃圾指令使原来十分简单的代码变得非常复杂,一.VMP逆向分析,(C)清理了垃圾分支并做了伸直化处理后的结果,设定一些规则,将虚假分支清除后,流程图就跟原来一样清晰了。如果再清除掉垃圾指令,几乎就跟demo版本的代码一样经过清理之后,新的流程图分析起来难度将会降低很多。,一.VMP逆向分析,2.VMP的HandlerVMP是基于堆栈的虚拟机(Stack-Ba
4、sed VirtualMachine)虚拟机指令并不显式的使用某个参数,而是先将参数压入堆栈,然后直接从堆栈中读取表达式:Add eax,ecx可以翻译为:Push ecxPush eaxAddPop eax无论push进来的是谁,Add指令总是读取并弹出堆栈中存放的值,然后Add算出结果再压入堆栈。,一.VMP逆向分析,3.VMP指令分类,汇编指令在转换到虚拟机的指令体系的过程中,被最大限度的化简和归类了,VMP中的指令大体分五类:算术运算和移位运算堆栈操作内存操作系统相关(无法模拟指令)逻辑运算其中最复杂的是逻辑运算指令,一.VMP逆向分析,4.逻辑运算指令Vmp中的逻辑运算只有一条指令:
5、nor。这个指令在电路门中叫NOR门,它由三条指令组成,即not not and,与NAND门一样,用它可以模拟not and xor or这四条逻辑运算指令转换公式:P(a,b)=a&bnot(a)=P(a,a)and(a,b)=P(P(a,a),P(b,b)or(a,b)=P(P(a,b),P(a,b)xor(a,b)=P(P(P(a,a),P(b,b),P(a,b),NOR闸,一.VMP逆向分析,5.寄存器轮转VMP将所有寄存器都存放在了堆栈的结构中(VM_CONTEXT),结构中的每一项代表一个寄存器或者临时变量。但在运行过程中,其中的项所映射的真实寄存器都是不固定的,可以把它比作一个
6、齿轮,每做完一个动作,部分项的映射就互换了一下位置,或者执行完一段指令,齿轮就按不固定的方向和度数转动一下,然后全部的项映射就改变了。VMP在生成字节码的过程中,维护了一份结构中每一项所映射的真实寄存器,但这只存在于编译过程,而在运行时是没有明确的信息的。这直接导致了分析和识别的难度。,R0,R1,R2,R3,R7,R4,R5,R6,一.VMP逆向分析,6.字节码加密和随机效验VMP把解码算法分布到了Dispatch和每个Handler中,只有在取指令和取数据时才会解密,而每个解码的算法也都是不同的,并且它的Seed每次解密都会变化的。要写出字节码的逆算法不是不可以,但是复杂度太高,有些得不偿
7、失。所以如果想要修改数据,还是使用HOOK的方式比较轻松。,一.VMP逆向分析,但是HOOK的方式得解决代码检测的问题,VMP注册版除了会加密字节码以外,还会随机对一段代码做检测,如果有错将无法运行。VMP注册版中有一条叫指令(calchash),就是用来做检测的。VMP会在编译好的字节码中加一些自己的指令,每次执行都会随机对一段代码生成一个Hash结果,然后与另一个随机的数相加,结果必须为0,否则就会出错。如果要爆破或者修改VMP的代码,还需要处理这个过程。,calchash,一.VMP逆向分析,7.阶段总结:VMP作者的原则最简单的正向设计导致最困难的逆向分析,VMProtect的逆向分析
8、和静态还原,二.VMProtect静态跟踪,二.VMProtect静态跟踪,(一)虚拟执行特点虚拟执行是静态分析与动态执行的一个折中办法虚拟执行时对内存访问做了一定的控制以防止出现异常允许读写静态内存与堆栈内存忽略其他内存访问与修改解决了异常问题后,就可以从入口点一直虚拟执行到出口了,记录得到的字节码日志,二.VMProtect静态跟踪,(二)执行引擎的虚拟执行,分析虚拟机的一般传统方法找到关键位置动态执行并使用记录断点记录数据输出记录日志优点:寻找关键位置时间相对较短缺点:多路径时只能走其中一条路径分析多个虚拟机时要重复做相同的工作,虚拟执行方法虚拟执行代码根据已分析字节码灵活控制代码流程输
9、出记录日志优点:虚拟执行不会对系统造成任何伤害完整的字节码流程缺点:指令正确但操作数的值不可靠复杂度较高,开发时间较久,二.VMProtect静态跟踪,(三)分析条件跳转的两条出边因为虚拟执行是不依赖运行时信息的,所以它无法判断应该走哪一条,必须把两条边都走过一遍。在基本块(BasicBlock)执行前备份运行时环境执行到跳转处分析指令流,获得修改路径关键点退回基本块起始位置重新执行并控制路径,true,false,虚拟机,备份环境,分析跳转相关指令,识别出路径后的流程图(pcode.pdf),基本块,跳转指令,分析指令流,VMProtect的逆向分析和静态还原,三.字节码反编译,三.字节码反
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VMProtect 逆向 分析 静态 还原 课件
链接地址:https://www.31ppt.com/p-3726814.html