[发明专利]针对软件虚拟机保护的反混淆系统及方法有效
申请号: | 201810820633.5 | 申请日: | 2018-07-24 |
公开(公告)号: | CN109145534B | 公开(公告)日: | 2022-11-11 |
发明(设计)人: | 张媛媛;李华懿;李卷孺;谷大武;杨文博;张新鹏 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F9/455 |
代理公司: | 上海交达专利事务所 31201 | 代理人: | 王毓理;王锡麟 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 针对 软件 虚拟机 保护 混淆 系统 方法 | ||
1.一种针对软件虚拟机保护的反混淆系统,其特征在于,包括:程序追踪模块、结构分析模块、语义分析模块以及优化编译模块,其中:程序追踪模块与结构分析模块相连并输出程序执行的记录信息,结构分析模块根据记录信息将原程序的结构进行拆分并提取受虚拟机保护的函数和虚拟机实现的指令集,结构分析模块分别与语义分析模块相连并输出虚拟机实现的指令集中每一个指令的代码实现、与优化编译模块相连并输出程序结构信息,语义分析模块从代码实现中分析得到指令语义后输出至优化编译模块,优化编译模块汇总程序结构信息和指令语义并输出受保护程序的语义表示,同时编译生成优化后的程序;
所述的反混淆是指:通过对程序追踪并获得追踪文件后,采用启发式分析策略分析trace文件得到软件虚拟机指令集;然后通过对虚拟机指令集提取语义;最后经重写和优化编译实现反混淆;
所述的对程序追踪是指:确定分析目标后通过运行程序和调试的方法对于确定待分析程序达到分析目标所需要的输入,使用具有程序追踪功能的工具对程序执行过程进行记录,获取trace文件;
所述的采用启发式分析策略分析是指:利用待分析程序执行生成的trace文件,对程序进行控制流分析,还原其控制流图,从而在trace文件中识别并提取出受软件虚拟机保护的代码,并从提取的代码中分离得到分发器及其对应的句柄,从而组合作为一个虚拟机指令的软件实现;然后使用一个程序执行窗口对trace文件进行顺序遍历,程序执行窗口中包含程序执行过程中的指令,对于每一个程序执行窗口,统计其中指令执行次数并进行排序,将高频指令所在的程序块作为疑似的dispatcher,对这些程序块附近的指令产生的控制流图进行模式匹配,符合之前虚拟机控制流特征的程序块即是软件虚拟机的指令集;
所述的虚拟机指令集中每条指令均为对软件虚拟机中虚拟寄存器或者虚拟堆栈进行的操作;每条指令功能都由软件代码实现,其语义即为虚拟机指令语义;
所述的提取语义是指:使用符号执行方法对虚拟机指令代码进行模拟执行,模拟执行结果为多个寄存器、内存值的表达式,将这些表达式转化为底层虚拟机中间表示的形式,这些中间语言表示即代表了虚拟机指令集语义;
所述的重写和优化编译是指:将软件虚拟机指令语义转化为LLVM中的函数形式的语义表示,按照trace文件中执行虚拟机指令的顺序,调用虚拟机指令对应的LLVM函数,通过LLVM提供的编译器支持对生成的LLVM IR进行编译,得到一个重写后的程序;
所述的符号执行方法包括:
①符号执行的目标为一个handler+dispatcher组合,它是软件虚拟机中一条指令的代码实现;
②在进行符号执行前,符号化全部用户态内存和通用寄存器;
③对于符号执行中遇到的条件跳转指令,默认使用trace文件中同样的条件判断结果处理;
④符号执行的结果表达为一个集合,集合中的每个元素都是一个键/值对,键为寄存器或者内存地址,对应的值为寄存器或内存中内容的符号表达式,这些键/值对将在后续被转化为LLVM IR形式的语义,用于表示该软件虚拟机指令执行的操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810820633.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种使用随机密码保护代码的方法及装置
- 下一篇:一种前端页面提供方法及装置