CN116340082A - 一种基于硬件虚拟化的riscv应用程序动态分析方法及装置 - Google Patents
一种基于硬件虚拟化的riscv应用程序动态分析方法及装置 Download PDFInfo
- Publication number
- CN116340082A CN116340082A CN202111581459.1A CN202111581459A CN116340082A CN 116340082 A CN116340082 A CN 116340082A CN 202111581459 A CN202111581459 A CN 202111581459A CN 116340082 A CN116340082 A CN 116340082A
- Authority
- CN
- China
- Prior art keywords
- information
- riscv
- instruction
- target
- operating system
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/301—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种基于硬件虚拟化的RISCV应用程序动态分析方法及装置,包括:逆向RISCV上运行的操作系统内核,获取进程内核数据结构;基于硬件模拟器模拟RISCV CPU,并构建操作系统的基础进程列表;使用sptbr寄存器与进程内核数据结构,获取新进程的特征信息;依据基础进程列表对特征信息进行筛选,得到目标进程;基于目标进程的进程信息与动态运行过程信息进行API检测与指令分析,得到动态分析结果。本发明能够完整、透明的监控在RISCV CPU上程序的运行全过程,提供可配置的高效进程信息获取、API调用信息获取、指令执行信息获取,监控过程不依赖于系统接口,能够实现透明的进程监控,不影响被监控目标的运行过程。
Description
技术领域
本发明属于计算机科学与技术领域,具体涉及一种基于硬件虚拟化的RISCV应用程序动态分析方法及装置。
背景技术
动态分析是二进制程序分析的重要技术手段之一,目前针对RISCV平台上程序动态分析的研究刚刚起步,主要依赖于Linux系统提供的调试库ptrace,以及Linux调试器gdb。由于程序混淆和对抗技术的发展,基于系统调试库和调试器的方法与分析目标产生平台竞争,容易受到对抗手段的干扰,且动态分析过程需要侵入到目标程序中实现,对目标程序的执行过程和上下文产生影响,难以获得准确的动态分析结果。
当前针对RISCV的动态监控技术刚刚起步,通常使用如下的几种方法:
1.基于调试器的动态分析
当前针对RISCV的动态分析主要基于调试器,即使用gdb调试器提供的加入int3断点功能,以及使用调试器调用CPU硬件的单步执行功能实现。但gdb和被分析的目标程序在同一个平台上,容易被目标程序检测和反制,并且gdb附加在进程上进行调试时,会改变进程的内存分配和堆栈,在分析带有漏洞的程序时,影响运行上下文,进而干扰漏洞触发和利用过程分析,具有较大的局限性。
2.基于ptrace库的动态分析
目前也有部分工作基于ptrace库,针对与RISCV的程序开展动态分析,由于gdb等调试工具本身就基于ptrace库实现,因此基于ptrace库的动态分析过程,其核心也是在函数入口处加入int3断点和单步执行,同样容易受到目标代码对抗手段的干扰,并且由于和目标代码处于同一平台,容易被目标代码检测和规避。
综上,目前在RISCV硬件之上,对程序进行动态分析的方法主要缺陷在于:依赖于操作系统提供的int3断点和硬件提供的单步执行功能,分析程序和被分析程序处于同一平台,容易被分析目标检测并反制。并且在部分情况下分析程序侵入到被分析程序中,干扰被分析程序的执行过程,影响信息获取。
发明内容
针对现有针对RISCV的动态分析方法依赖于gdb和ptrace等调试工具和库实现,对分析目标运行过程产生干扰,并且分析程序和分析目标处于同一平台,容易受到反制手段干扰的问题。本发明的目的在于提供一种基于硬件虚拟化的RISCV应用程序动态分析方法及装置,该方法通过修改硬件模拟器,在翻译执行RISCV指令的同时,以RISCV的寄存器为线索,在物理内存中定位并解析操作系统内核数据结构,提取进程、线程、模块、API调用和指令执行信息,实现RISCV上进程的透明动态监控。
本发明的技术内容包括:
一种基于硬件虚拟化的RISCV应用程序动态分析方法,其步骤包括:
逆向RISCV上运行的操作系统内核,获取进程内核数据结构;
基于硬件模拟器模拟RISCV CPU,并构建操作系统的基础进程列表;
使用sptbr寄存器与进程内核数据结构,获取新进程的特征信息,并依据基础进程列表对特征信息进行筛选,得到目标进程;
基于目标进程的进程信息与动态运行过程信息进行API检测与指令分析,分别得到API调用信息与指令信息;
根据API调用信息与指令信息,得到动态分析结果。
进一步地,所述操作系统包括:Linux操作系统或Windows操作系统。
进一步地,所述硬件模拟器的类型包括:Qemu硬件模拟器。
进一步地,通过以下步骤获取新进程的特征信息:
1)监控sptbr寄存器的变化,并当出现新的地址时,得到新进程;
2)然后以sptbr指向的物理页为起点,通过特征搜索进程内核数据结构,获得新进程的特征信息。
进一步地,所述特征信息包括:模块加载地址、长度,线程信息和内存信息。
进一步地,目标进程的进程信息包括:进程结构地址、页表物理地址、进程名、模块结构信息列表和进程当前模块结构指针。
进一步地,通过以下步骤得到API调用信息:
1)针对目标进程,拦截所有的ecall指令;
2)在ecall指令中基于目标进程的进程信息与动态运行过程信息,得到API调用信息,其中通过检测调用ecall时是否发生了特权级转换,判断该API调用信息为系统调用的API调用信息或用户态调用的API调用信息。
进一步地,API调用信息包括:调用地址、函数名、输入/输出参数和返回值。
进一步地,通过以下步骤得到指令信息:
1)针对目标进程,拦截所有的指令;
2)在指令翻译的前后加入回调函数实施分析,并基于目标进程的进程信息与动态运行过程信息,得到指令信息。
进一步地,指令信息包括:操作码、操作数、寄存器、内存地址和内存内容。
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行以上所述方法。
一种电子装置,包括存储器和处理器,其中存储器存储执行以上所述方法的程序。
与现有技术相比,本发明能够完整、透明的监控在RISCV CPU上程序的运行全过程,提供可配置的高效进程信息获取、API调用信息获取、指令执行信息获取,监控过程不依赖于系统接口,能够实现透明的进程监控,不影响被监控目标的运行过程。
附图说明
图1为本发明一种基于硬件虚拟化的RISCV应用程序动态分析方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明的RISCV应用程序动态分析方法,包括:
·在Qemu硬件模拟器上安装操作系统;
·基于Qemu硬件模拟器,以虚拟的sptbr寄存器为线索,区分不同的进程,其中sptbr是RISCV专用的寄存器;
·基于Qemu硬件模拟器,构建虚拟的进程内核数据结构寄存器,解析物理内存内容,搜索进程内核数据结构;
·基于Qemu硬件模拟器,通过修改译码引擎,在用户态执行指令ecall指令时,检测是否进行了特权级切换,以实现用户态调用和系统调用的信息获取;
·基于Qemu硬件模拟器,通过修改译码引擎,在指令翻译的前后加入回调函数实施分析,实现指令执行信息的获取。
具体地,如图1所示,本发明的步骤描述如下:
1)手工逆向RISCV上运行的操作系统内核,解析内核数据结构,相关数据结构主要用于在物理内存中,通过多级指针相互验证(操作系统内核数据结构使用双向链表连接,通过内核数据结构间两个值是否指向关联的合法地址,可以检测是否为合法的内核数据结构)的方式找到进程内核数据结构,进入步骤2);
2)基于Qemu硬件模拟器模拟的RISCV CPU,并安装Linux操作系统,记录一个通用Linux操作系统所需要启动的基础进程,构建基础进程列表,在后期分析中不监控此类进程进入步骤3);
3)启动Linux操作系统和目标进程,构建进程内核数据结构寄存器,进入步骤4);
4)监控系统中sptbr寄存器的变化:当出现新的地址时,认为出现了新的进程,然后以sptbr指向的物理页为起点,通过特征搜索进程内核数据结构,获得当前进程的信息,包括模块加载地址、长度,线程信息、内存信息等,并判定该进程是否属于基础进程列表,如果属于则忽略。如果不属于,则记录进程信息,进程信息包括:进程结构地址、页表物理地址、进程名、模块结构信息列表、进程当前模块结构指针,并进入步骤5);
5)对目标进程修改译码引擎,即在Qemu的译码机制中加入API检测和指令分析代码。其中,在Qemu实际执行时,除进程信息外,进一步提取动态运行过程信息进入步骤6);
6)针对目标进程,拦截所有的ecall指令,并利用API检测获得API调用的地址、函数名、输入/输出参数、返回值,同时检测在调用ecall时是否发生了特权级转换,如果发生了转换,则为系统调用,如果没有,则为用户态调用,进入步骤7);
7)针对目标进程,拦截所有的指令,通过在指令翻译的前后加入回调函数实施分析(指令分析代码),获得指令的操作码、操作数、寄存器、内存地址和内存内容等信息,进入步骤8);
8)判定目标进程是否退出,若退出,将动态信息以JSON文件的方式输出,若没有退出,进入步骤4)。
进一步地,步骤2)中,由于Windows系统尚不支持RISCV CPU,当前仅为Linux系统。但针对Windows操作系统的监控过程与Linux系统监控过程原理一致,本发明方法也可支持Windows操作系统。
进一步地,步骤3)中sptbr为每个进程的页表物理地址,由于不同进程使用不同的页表,该页表信息能够唯一的标志进程,通过在内存中构建以页表地址为索引的HASH表,记录进程信息。
进一步地,步骤5)中虚拟进程内核数据结构寄存器的构建方法由逆向操作系统得到,实体通过在Qemu中加入模拟功能实现。
本发明提出的一种通过修改硬件模拟器,针对RISCV CPU,通过分析虚拟CPU中的寄存器、定位和读取物理内存中的操作系统关键数据结构,实现在模拟RISCV CPU基础上的全系统动态监控,根据用户的选择,对指定的进程展开动态分析,捕获API调用、执行指令等信息。本发明能够完整、透明的监控在RISCV CPU上程序的运行全过程,提供可配置的高效进程信息获取、API调用信息获取、指令执行信息获取,监控过程不依赖于系统接口,能够实现透明的进程监控,不影响被监控目标的运行过程。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (10)
1.一种基于硬件虚拟化的RISCV应用程序动态分析方法,其步骤包括:
逆向RISCV上运行的操作系统内核,获取进程内核数据结构;
基于硬件模拟器模拟RISCV CPU,并构建操作系统的基础进程列表;
使用sptbr寄存器与进程内核数据结构,获取新进程的特征信息,并依据基础进程列表对特征信息进行筛选,得到目标进程;
基于目标进程的进程信息与动态运行过程信息进行API检测与指令分析,分别得到API调用信息与指令信息;
根据API调用信息与指令信息,得到动态分析结果。
2.如权利要求1所述的方法,其特征在于,所述操作系统包括:Linux操作系统或Windows操作系统;所述硬件模拟器的类型包括:Qemu硬件模拟器。
3.如权利要求1所述的方法,其特征在于,通过以下步骤获取新进程的特征信息:
1)监控sptbr寄存器的变化,并当出现新的地址时,得到新进程;
2)然后以sptbr指向的物理页为起点,通过特征搜索进程内核数据结构,获得新进程的特征信息。
4.如权利要求1所述的方法,其特征在于,所述特征信息包括:模块加载地址、长度,线程信息和内存信息。
5.如权利要求1所述的方法,其特征在于,目标进程的进程信息包括:进程结构地址、页表物理地址、进程名、模块结构信息列表和进程当前模块结构指针。
6.如权利要求1所述的方法,其特征在于,通过以下步骤得到API调用信息:
1)针对目标进程,拦截所有的ecall指令;
2)在ecall指令中基于目标进程的进程信息与动态运行过程信息,得到API调用信息,其中通过检测调用ecall时是否发生了特权级转换,判断该API调用信息为系统调用的API调用信息或用户态调用的API调用信息。
7.如权利要求1所述的方法,其特征在于,通过以下步骤得到指令信息:
1)针对目标进程,拦截所有的指令;
2)在指令翻译的前后加入回调函数实施分析,并基于目标进程的进程信息与动态运行过程信息,得到指令信息。
8.如权利要求1所述的方法,其特征在于,API调用信息包括:调用地址、函数名、输入/输出参数和返回值;指令信息包括:操作码、操作数、寄存器、内存地址和内存内容。
9.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-8中任一所述方法。
10.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-8中任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111581459.1A CN116340082A (zh) | 2021-12-22 | 2021-12-22 | 一种基于硬件虚拟化的riscv应用程序动态分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111581459.1A CN116340082A (zh) | 2021-12-22 | 2021-12-22 | 一种基于硬件虚拟化的riscv应用程序动态分析方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116340082A true CN116340082A (zh) | 2023-06-27 |
Family
ID=86879236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111581459.1A Pending CN116340082A (zh) | 2021-12-22 | 2021-12-22 | 一种基于硬件虚拟化的riscv应用程序动态分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116340082A (zh) |
-
2021
- 2021-12-22 CN CN202111581459.1A patent/CN116340082A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8850581B2 (en) | Identification of malware detection signature candidate code | |
TWI553503B (zh) | 產生候選鈎點以偵測惡意程式之方法及其系統 | |
US8776029B2 (en) | System and method of software execution path identification | |
CN108469984B (zh) | 一种基于虚拟机自省函数级虚拟机内核动态检测系统与方法 | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
US20060143596A1 (en) | Program analyzing apparatus and testing apparatus, and analyzing method and program therefor | |
CN110741354A (zh) | 呈现代码实体调用之间的差异 | |
KR101979329B1 (ko) | 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치 | |
CN112149136A (zh) | loT设备固件漏洞的检测方法、系统及电子设备 | |
US20080307397A1 (en) | Program Analysis by Partial Emulation | |
CN113468525A (zh) | 针对二进制程序的相似漏洞检测方法及装置 | |
CN114500043A (zh) | 基于同源性分析的物联网固件漏洞检测方法及系统 | |
KR20180129623A (ko) | 연관된 다중 파일 정적 분석 장치 | |
CN115686961A (zh) | 处理器测试方法、装置及电子设备 | |
US9189372B2 (en) | Trace coverage analysis | |
CN114490394A (zh) | 测试范围确定方法、装置、设备和介质 | |
Chen et al. | ARMORY: An automatic security testing tool for buffer overflow defect detection | |
Pettersson | Measuring precision for static and dynamic design pattern recognition as a function of coverage | |
CN109726115B (zh) | 一种基于Intel处理器跟踪的反调试自动绕过方法 | |
US8464103B2 (en) | Generating a functional coverage model from a trace | |
CN112861138A (zh) | 软件安全性分析方法及分析装置、电子设备及存储介质 | |
CN116521231A (zh) | 一种用于sparc v8指令集动态仿真验证的参考模型 | |
CN116340082A (zh) | 一种基于硬件虚拟化的riscv应用程序动态分析方法及装置 | |
Wang et al. | Detecting data races in interrupt-driven programs based on static analysis and dynamic simulation | |
CN114443418A (zh) | 一种基于硬件虚拟化的riscv内存溢出漏洞检测方法及装置 |
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 |