CN116340082A - 一种基于硬件虚拟化的riscv应用程序动态分析方法及装置 - Google Patents

一种基于硬件虚拟化的riscv应用程序动态分析方法及装置 Download PDF

Info

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
Application number
CN202111581459.1A
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.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
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 Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN202111581459.1A priority Critical patent/CN116340082A/zh
Publication of CN116340082A publication Critical patent/CN116340082A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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应用程序动态分析方法及装置。
背景技术
动态分析是二进制程序分析的重要技术手段之一,目前针对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中任一所述方法。
CN202111581459.1A 2021-12-22 2021-12-22 一种基于硬件虚拟化的riscv应用程序动态分析方法及装置 Pending CN116340082A (zh)

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)

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