CN112527457A - 一种通用Unicorn模拟指令执行的虚拟机实现方法 - Google Patents

一种通用Unicorn模拟指令执行的虚拟机实现方法 Download PDF

Info

Publication number
CN112527457A
CN112527457A CN202011438234.6A CN202011438234A CN112527457A CN 112527457 A CN112527457 A CN 112527457A CN 202011438234 A CN202011438234 A CN 202011438234A CN 112527457 A CN112527457 A CN 112527457A
Authority
CN
China
Prior art keywords
instruction
software
virtual machine
simulation
unicorn
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011438234.6A
Other languages
English (en)
Inventor
刘柏江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Yunyuzi Network Technology Co ltd
Original Assignee
Chengdu Yunyuzi Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Yunyuzi Network Technology Co ltd filed Critical Chengdu Yunyuzi Network Technology Co ltd
Priority to CN202011438234.6A priority Critical patent/CN112527457A/zh
Publication of CN112527457A publication Critical patent/CN112527457A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种通用Unicorn模拟指令执行的虚拟机实现方法,步骤10、CPU指令集分类:将目标二进制代码分类为模拟指令和软件指令并分别进行编码,如目标二进制代码为模拟指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;步骤20、模拟指令处理:保持硬件指令类型不变,用Unicorn模拟执行CPU,进入步骤40;步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的模拟指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。本发明能快速准确的实现CPU指令模拟执行式的虚拟机化。

Description

一种通用Unicorn模拟指令执行的虚拟机实现方法
技术领域
本发明属于软件安全领域,具体涉及一种通用Unicorn模拟指令执行的虚拟机实现方法。
背景技术
在软件安全领域,代码保护效果最好的形式即为虚拟机代码保护。这种方案由于存在私有的指令编码和CPU解释器,所以可以很好的保护目标代码不被逆向工程。在Windows平台,由于只需要考虑x86/x64架构,因此实现自定义的虚拟机相对容易,典型的产品如VMProtect。而在移动平台比如iOS/Android,需要考虑x86/x64/arm/arm64/arm64e等一系列架构,因此需要设计一种相对通用的虚拟机实现方案。
发明内容
本发明所要解决的技术问题便是针对上述现有技术的不足,提供一种通用Unicorn模拟指令执行的虚拟机实现方法,能快速准确的实现CPU指令模拟执行式的虚拟机化。
本发明所采用的技术方案是:一种通用Unicorn模拟指令执行的虚拟机实现方法,包括以下步骤:
步骤10、CPU指令集分类:将目标二进制代码分类为模拟指令和软件指令并分别进行编码,如目标二进制代码为模拟指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;
步骤20、模拟指令处理:保持硬件指令类型不变,用Unicorn模拟执行CPU,进入步骤40;
步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;
步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的模拟指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。
其中一个实施例中,步骤10中,所述的软件指令包括断点指令、结束指令和PC依赖指令。
其中一个实施例中,步骤10中,将所述的目标二进制代码按照逻辑控制指令、普通指令和依赖PC的普通指令进行分类。
其中一个实施例中,步骤40中,调取当前CPU对等的寄存器上下文使用Unicorn模拟执行指令时去掉Unicorn内置Qemu的MMU功能。
本发明的有益效果在于:
1、可以快速的实现出一个完备的虚拟机;
2、可以快速迁移至不同计算机体系架构。
附图说明
图1为本发明虚拟机实现原理图。
具体实施方式
下面将结合附图及具体实施例对本发明作进一步详细说明。
如图1所示,本发明公开了一种通用Unicorn模拟指令执行的虚拟机实现方法,包括以下步骤:
步骤10、CPU指令集分类:将目标二进制代码分类为模拟指令和软件指令并分别进行编码,如目标二进制代码为模拟指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;
步骤20、模拟指令处理:保持硬件指令类型不变,用Unicorn模拟执行CPU,进入步骤40;
步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;
步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的模拟指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。
本实施例中,步骤10中,所述的软件指令包括断点指令、结束指令和PC依赖指令。
本实施例中,步骤10中,将所述的目标二进制代码按照逻辑控制指令、普通指令和依赖PC的普通指令进行分类。
本实施例中,步骤40中,调取当前CPU对等的寄存器上下文使用Unicorn模拟执行指令时去掉Unicorn内置Qemu的MMU功能。
本发明中,所述的Unicorn指一个基于qemu实现的虚拟cpu;所述的Qemu指一个纯软件实现的多架构模拟器;所述的模拟指不依靠外部实现,而仅仅靠自身的翻译功能实现指令集的功能;所述的指令执行指CPU的单条指令的执行,比如add、sub等指令的执行;所述的虚拟机指使用纯软件模拟出的带执行上下文和指令集的虚拟处理器;所述的PC指CPU执行时的程序地址计数器Program Counter;所述的MMU指Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory managementunit,缩写为PMMU)。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。本文特指Unicorn集成的qemu自带的软件实现的MMU。
本发明所述的模拟指令如add、sub或xor,利用Unicorn模拟执行;所述的断点指令如int 3或bkpt#8;所述的结束指令如ret或retn;所述的PC依赖指令如call、jmp、bl、adr或adrp。
本发明应用于软件安全攻防领域,同时也可用于应用程序性能剖析。
软件安全攻击一方,可以利用该指令级虚拟机逐条执行目标程序,则可完全掌握目标程序的运行情况,进而可以逆向破解目标程序。软件安全防守一方,可以利用该指令级虚拟机将核心的软件代码用本虚拟机编码保护起来,进而可以阻止逆向破解的人分析核心代码。
应用程序性能剖析时,可以利用该指令级虚拟机逐条采样程序的运行过程,达到100%精确分析程序运行情况的目的。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

Claims (4)

1.一种通用Unicorn模拟指令执行的虚拟机实现方法,其特征在于,包括以下步骤:
步骤10、CPU指令集分类:将目标二进制代码分类为模拟指令和软件指令并分别进行编码,如目标二进制代码为模拟指令,进入步骤20,如目标二进制代码为软件指令,进入步骤30;
步骤20、模拟指令处理:保持硬件指令类型不变,用Unicorn模拟执行CPU,进入步骤40;
步骤30、软件指令处理:将软件指令拆分成自定义的编码格式,在执行过程中利用软件代码模拟其对应的功能,进入步骤40;
步骤40、虚拟机:调取当前CPU对等的寄存器上下文、步骤20中处理完成的模拟指令和步骤30中处理完成的软件指令并进行组合,得到所述的虚拟机。
2.根据权利要求1所述的一种通用Unicorn模拟指令执行的虚拟机实现方法,其特征在于,步骤10中,所述的软件指令包括断点指令、结束指令和PC依赖指令。
3.根据权利要求1或2所述的一种通用Unicorn模拟指令执行的虚拟机实现方法,其特征在于,步骤10中,将所述的目标二进制代码按照逻辑控制指令、普通指令和依赖PC的普通指令进行分类。
4.根据权利要求1或2所述的一种通用Unicorn模拟指令执行的虚拟机实现方法,其特征在于,步骤40中,调取当前CPU对等的寄存器上下文使用Unicorn模拟执行指令时去掉Unicorn内置Qemu的MMU功能。
CN202011438234.6A 2020-12-11 2020-12-11 一种通用Unicorn模拟指令执行的虚拟机实现方法 Pending CN112527457A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011438234.6A CN112527457A (zh) 2020-12-11 2020-12-11 一种通用Unicorn模拟指令执行的虚拟机实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011438234.6A CN112527457A (zh) 2020-12-11 2020-12-11 一种通用Unicorn模拟指令执行的虚拟机实现方法

Publications (1)

Publication Number Publication Date
CN112527457A true CN112527457A (zh) 2021-03-19

Family

ID=74999922

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011438234.6A Pending CN112527457A (zh) 2020-12-11 2020-12-11 一种通用Unicorn模拟指令执行的虚拟机实现方法

Country Status (1)

Country Link
CN (1) CN112527457A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022237098A1 (zh) * 2021-05-14 2022-11-17 统信软件技术有限公司 一种异构程序执行方法、装置、计算设备及可读存储介质
CN115480871A (zh) * 2022-09-14 2022-12-16 北京计算机技术及应用研究所 一种通用的tms320c3x处理器指令集虚拟化仿真方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101438529A (zh) * 2004-12-06 2009-05-20 微软公司 经由动态转换的主动计算机恶意软件保护
CN102831006A (zh) * 2012-07-25 2012-12-19 北京奇虎科技有限公司 虚拟机实现方法与虚拟机
US20160171212A1 (en) * 2014-12-16 2016-06-16 Kyndi, Inc. Method and apparatus for randomizing computer instruction sets, memory registers and pointers
CN108509250A (zh) * 2017-02-28 2018-09-07 英特尔公司 具有受保护的访客机验证主机控制的安全公共云
CN109684794A (zh) * 2018-12-07 2019-04-26 成都盈海益讯科技有限公司 一种代码保护虚拟机kvm系统实现方法、装置、计算机设备及存储介质
CN110348204A (zh) * 2019-06-17 2019-10-18 海光信息技术有限公司 一种代码保护系统、认证方法、装置、芯片及电子设备
CN111123737A (zh) * 2018-11-30 2020-05-08 中国航空工业集团公司沈阳飞机设计研究所 一种数字硬件虚拟仿真系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101438529A (zh) * 2004-12-06 2009-05-20 微软公司 经由动态转换的主动计算机恶意软件保护
CN102831006A (zh) * 2012-07-25 2012-12-19 北京奇虎科技有限公司 虚拟机实现方法与虚拟机
US20160171212A1 (en) * 2014-12-16 2016-06-16 Kyndi, Inc. Method and apparatus for randomizing computer instruction sets, memory registers and pointers
CN108509250A (zh) * 2017-02-28 2018-09-07 英特尔公司 具有受保护的访客机验证主机控制的安全公共云
CN111123737A (zh) * 2018-11-30 2020-05-08 中国航空工业集团公司沈阳飞机设计研究所 一种数字硬件虚拟仿真系统
CN109684794A (zh) * 2018-12-07 2019-04-26 成都盈海益讯科技有限公司 一种代码保护虚拟机kvm系统实现方法、装置、计算机设备及存储介质
CN110348204A (zh) * 2019-06-17 2019-10-18 海光信息技术有限公司 一种代码保护系统、认证方法、装置、芯片及电子设备

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
51CTO博客: ""【代码安全】ARM平台代码保护之虚拟化"", Retrieved from the Internet <URL:URL:https://blog.51cto.com/u_11642030/1788315> *
BLAZYTKO, TIM, ET AL.: ""Syntia: Synthesizing the semantics of obfuscated code"", 《26TH USENIX SECURITY SYMPOSIUM (USENIX SECURITY 17). 2017》 *
刘柏江: ""IoT时代LLVM编译器防护的艺术"", 《2018中国互联网安全大会》 *
博客园: ""vmp壳基础原理"", Retrieved from the Internet <URL:URL:https://www.cnblogs.com/jingcaixf/p/13035849.html> *
张晓寒, 张源, 池信坚等.: ""基于指令虚拟化的安卓本地代码加固方法"", 《电子与信息学报》 *
杜春来;孔丹丹;王景中;谭兴邦;: ""一种基于指令虚拟化的代码保护模型"", 《信息网络安全》, no. 02 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022237098A1 (zh) * 2021-05-14 2022-11-17 统信软件技术有限公司 一种异构程序执行方法、装置、计算设备及可读存储介质
CN115480871A (zh) * 2022-09-14 2022-12-16 北京计算机技术及应用研究所 一种通用的tms320c3x处理器指令集虚拟化仿真方法
CN115480871B (zh) * 2022-09-14 2023-04-28 北京计算机技术及应用研究所 一种通用的tms320c3x处理器指令集虚拟化仿真方法

Similar Documents

Publication Publication Date Title
RU2686552C2 (ru) Системы и способы предоставления результата текущей команды процессора при выходе из виртуальной машины
US10127381B2 (en) Systems and methods for switching emulation of an executable file
EP1939754B1 (en) Providing protected access to critical memory regions
CN109684794B (zh) 一种代码保护虚拟机kvm系统实现方法、装置、计算机设备及存储介质
TW202240383A (zh) 用以保護影子堆疊之處理器、方法、系統和指令
CN105046117A (zh) 一种具有指令集随机化的代码虚拟化软件保护系统
CN112527457A (zh) 一种通用Unicorn模拟指令执行的虚拟机实现方法
JPH07287659A (ja) コンピュータシステムにおいてクロスドメイン通話を検出及び実行するための方法及び装置
CN101964040B (zh) 一种基于PE Loader的软件加壳保护方法
JP2004517390A (ja) 解析仮想マシン
Stüttgen et al. Acquisition and analysis of compromised firmware using memory forensics
TW201227394A (en) Security through opcode randomization
US10127137B2 (en) Methods and systems for increased debugging transparency
CN112163195B (zh) 一种基于堆栈隐藏的虚拟机软件保护方法
CN106815524B (zh) 恶意脚本文件的检测方法及装置
CN107368739B (zh) 一种内核驱动的监视方法和装置
CN112148636A (zh) 对面向返回的编程利用的缓解
CN102831334A (zh) 一种目标地址定位方法和系统
CN103106356B (zh) 一种在安全环境中生成代码提高软件保护强度的方法
EP3341834B1 (en) Exception handling
US20030115578A1 (en) PC platform simulation system employing efficient memory access simulation in a direct execution environment
Ferguson Reverse engineering code with IDA Pro
CN112540828A (zh) 一种通用cpu自解释指令执行的虚拟机实现方法
KR102430335B1 (ko) 가상화 코드의 난독화를 강화하는 방법 및 그 장치
CN110909347B (zh) 一种基于Mcsema的Remill库栈污染分析方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination