CN105843667A - 在虚拟机管理器中动态无侵的应用进程函数调用监控方法 - Google Patents

在虚拟机管理器中动态无侵的应用进程函数调用监控方法 Download PDF

Info

Publication number
CN105843667A
CN105843667A CN201610117437.2A CN201610117437A CN105843667A CN 105843667 A CN105843667 A CN 105843667A CN 201610117437 A CN201610117437 A CN 201610117437A CN 105843667 A CN105843667 A CN 105843667A
Authority
CN
China
Prior art keywords
code
trigger
function call
function
eax
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.)
Granted
Application number
CN201610117437.2A
Other languages
English (en)
Other versions
CN105843667B (zh
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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN201610117437.2A priority Critical patent/CN105843667B/zh
Publication of CN105843667A publication Critical patent/CN105843667A/zh
Application granted granted Critical
Publication of CN105843667B publication Critical patent/CN105843667B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/45533Hypervisors; Virtual machine monitors

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

本发明是在虚拟机管理器中动态无侵的应用进程函数调用监控方法,包括函数调用触发器插入算法、触发器代码的构造。在需要监控的时候,从被监控的应用程序的函数的入口地址开始处根据函数调用触发器插入算法选择的位置插入函数调用触发器代码,不需要监控时可以恢复原样,具有动态性和无侵性。优点:可在任何一个被监控函数的入口处开始寻找一个7字节或者9字节的位置,在这个位置根据这个位置原来的代码的情况选择长度分别为7字节和9字节两种函数调用触发代码之一进行插入。

Description

在虚拟机管理器中动态无侵的应用进程函数调用监控方法
技术领域
本发明涉及的是一种在虚拟机管理器中动态无侵的应用进程函数调用监控方法,能够监控任何一个用户进程中任何一个函数的调用。监控行为是可以动态设置的,只有在管理者需要的时候才在被监控的应用程序的被调用函数中插入函数调用触发器,函数调用触发器插入后一旦需要被监控的函数被调用,则函数调用触发器触发异常、陷入虚拟机管理器;在应用程序中的函数不需要被监控时,这个函数的代码保持原样。因此,该监控方法是动态的和无侵的,属于计算机应用技术领域。
背景技术
现有的监控方法有的采用对注册的函数指针表进行修改,使得函数被调用的时候能跳转到监控函数处进行监控,这样的方法对没有注册的函数就无法监控;有的监控方法采用在函数调用处插入监控代码,这样的方法难以实现动态地进行配置,对应用程序要进行修改、编译等,不是无侵的。
在软件行为监控、软件测试中需要一种动态无侵的函数调用监控方法,本发明正是提供了这样一种方法。
发明内容
本发明提出的是一种在虚拟机管理器中动态无侵的应用进程函数调用监控方法,可在任何一个被监控函数的入口处开始寻找一个7字节或者9字节的位置,在这个位置根据这个位置原来的代码的情况选择长度分别为7字节
和9字节两种函数调用触发代码之一进行插入。
本发明的技术解决方案:在虚拟机管理器中动态无侵的应用进程函数调用监控方法,其特征是包括函数调用触发器插入算法、触发器代码的构造,在需要监控的时候,从被监控的应用程序的函数的入口地址开始处根据函数调用触发器插入算法选择的位置插入函数调用触发器代码,不需要监控时可以恢复原样,具有动态性和无侵性。
本发明的优点:
1)虚拟化机制用于触发器中的某些代码在具有硬件虚拟化机制的CPU上一定可以产生异常进而陷入虚拟机管理器中,不会被旁路;
2)动态无侵的监控方法可以只在管理者需要的时候才在被监控的应用程序的被调用函数中插入函数调用触发器。在应用程序中的函数不需要被监控时,这个函数的代码可以恢复到原样;
3)插入函数调用触发器后,一旦需要被监控的函数被调用,则触发器触发异常、陷入虚拟机管理器;在虚拟机管理器中进行分析与控制,具有更高的安全性;
4)函数调用触发器插入位置的选择是在被监控的函数的开始的一段代码中选择若干可以的被覆盖字节用于插入函数调用触发器,并且在虚拟机管理器中准确地模拟运行这些被覆盖的代码;
5)触发器代码的构造包括通常的产生陷入虚拟机管理器的代码和相关寄存器保存与恢复。这样可以保持应用程序的功能不收到任何影响,实现了无侵性;
6)可在任何一个被监控函数的入口处开始寻找一个7字节或者9字节的位置,在这个位置根据这个位置原来的代码的情况选择长度分别为7字节
和9字节两种函数调用触发代码之一进行插入。
具体实施方式
在虚拟机管理器中动态无侵的应用进程函数调用监控方法,包括函数调用触发器插入算法、触发器代码的构造,在需要监控的时候,从被监控的应用程序的函数的入口地址开始处根据函数调用触发器插入算法选择的位置插入函数调用触发器代码,不需要监控时可以恢复原样,具有动态性和无侵性。
在需要监控的时候,从被监控的应用程序的函数的入口地址开始处根据函数调用触发器插入算法选择的位置插入函数调用触发器代码,不需要监控时可以恢复原样,具有动态性和无侵性。
所述的函数调用触发器代码如下:
(1)如果在被监控的函数的入口代码到函数调用触发器代码插入点之前寄存器eax没有被改写,则触发器代码codeA为:
mov eax, constant;
cpuid
(2)在被监控的函数的入口代码到函数调用触发器代码插入点之前寄存器eax被改写,触发器代码codeB如下,其中register是从触发器插入点开始没有被改写过的一个通用寄存器:
mov register, eax
mov eax, constant
cpuid
mov eax, register 。
所述的函数调用触发器插入算法:
1)令插入点位置a=0,下一条被检查指令位置 b=0,检查通过的指令长度L=0,状态s=0,插入点之前被改写过的通用寄存器集合RW=∅,在插入点之前没有被该写过可以用来保存eax原来的值的通用寄存器集合R={ eax, ebx, ecx, edx, esi, edi };
2)在b处读取一条指令,设指令的长度为k,指令中的作为源操作数的通用寄存器的集合为rr,作为目的操作数的通用寄存器的集合为rw;L + k → L, b + k → b, RW ⋃ rw→RW;
3)如果rr ∩ R ≠⌽ 转VI
4)如果 L ≥ 7 并且 eax ∊ R,则令 s=1 转IX;
5)如果 L ≥ 9 则令 s=2 转IX;否则转II;
6)R \ ( rr ⋃ RW ) → R;
7)如果 R ≠⌽, 则转II;
8)L = 0, a = b, 转II;
9)如果s=1 则报警代码为代码序列codeA;如果s=2 则报警代码为代码序列codeB;报警代码插入位置a。
工作时,函数调用触发代码插入后,一旦这个函数被调用,函数调用触发代码就被执行,继而产生异常陷入虚拟机监控器,在虚拟机监控器中对函数被调用的情况进行分析与控制。同时,在返回前,为被监控的应用进程模拟执行被覆盖的相应的代码,使得应用进程在功能上与未被监控的情况完全一样。函数调用触发代码的插入可以进行动态地管理,在管理者发出监控命令时,执行函数调用触发代码插入算法,插入相应的函数调用触发代码。在管理者发出停止监控命令时,可以撤销插入的函数调用触发代码,被监控的函数的原样。
函数调用触发代码插入算法:
令插入点位置a=0,下一条被检查指令位置 b=0,检查通过的指令长度L=0,状态s=0,插入点之前被改写过的通用寄存器集合RW=∅,在插入点之前没有被该写过可以用来保存eax原来的值的通用寄存器集合R={ eax, ebx, ecx, edx, esi, edi };
在b处读取一条指令,设指令的长度为k,指令中的作为源操作数的通用寄存器的集合为rr,作为目的操作数的通用寄存器的集合为rw;L + k → L, b + k → b, RW ⋃ rw →RW;
如果rr ∩ R ≠ ⌽ 转VI
如果 L ≥ 7 并且 eax ∊ R,则令 s=1 转IX;
如果 L ≥ 9 则令 s=2 转IX;否则转II;
R \ ( rr ⋃ RW ) → R;
如果 R ≠ ⌽, 则转II;
L = 0, a = b, 转II;
如果s=1 则报警代码为代码序列codeA;如果s=2 则报警代码为代码序列codeB;报警代码插入位置a。
函数调用触发代码codeA:
mov eax, constant;
cupid
函数调用触发代码codeB:
mov register, eax
mov eax, constant
cupid
mov eax, register

Claims (3)

1.在虚拟机管理器中动态无侵的应用进程函数调用监控方法,其特征是包括函数调用触发器插入算法、触发器代码的构造,在需要监控的时候,从被监控的应用程序的函数的入口地址开始处根据函数调用触发器插入算法选择的位置插入函数调用触发器代码,不需要监控时可以恢复原样,具有动态性和无侵性。
2.根据权利要求1所述的在虚拟机管理器中动态无侵的应用进程函数调用监控方法,其特征是所述的函数调用触发器代码如下:
(1)如果在被监控的函数的入口代码到函数调用触发器代码插入点之前寄存器eax没有被改写,则触发器代码codeA为:
mov eax, constant;
cpuid
(2)如果在被监控的函数的入口代码到函数调用触发器代码插入点之前寄存器eax被改写,触发器代码codeB如下,其中register是从触发器插入点开始没有被改写过的一个通用寄存器:
mov register, eax
mov eax, constant
cpuid
mov eax, register 。
3.根据权利要求1所述的在虚拟机管理器中动态无侵的应用进程函数调用监控方法,其特征是所述的函数调用触发器插入算法:
1)令插入点位置a=0,下一条被检查指令位置 b=0,检查通过的指令长度L=0,状态s=0,插入点之前被改写过的通用寄存器集合RW=∅,在插入点之前没有被该写过可以用来保存eax原来的值的通用寄存器集合R={ eax, ebx, ecx, edx, esi, edi };
2)在b处读取一条指令,设指令的长度为k,指令中的作为源操作数的通用寄存器的集合为rr,作为目的操作数的通用寄存器的集合为rw;L + k → L, b + k → b, RW ⋃ rw→RW;
3)如果rr ∩ R ≠ ⌽ 转VI
4)如果 L ≥ 7 并且 eax ∊ R,则令 s=1 转IX;
5)如果 L ≥ 9 则令 s=2 转IX;否则转II;
6)R \ ( rr ⋃ RW ) → R;
7)如果 R ≠⌽, 则转II;
8)L = 0, a = b, 转II;
9)如果s=1 则报警代码为代码序列codeA;如果s=2 则报警代码为代码序列codeB;报警代码插入位置a。
CN201610117437.2A 2016-03-02 2016-03-02 在虚拟机管理器中动态无侵的应用进程函数调用监控方法 Active CN105843667B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610117437.2A CN105843667B (zh) 2016-03-02 2016-03-02 在虚拟机管理器中动态无侵的应用进程函数调用监控方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610117437.2A CN105843667B (zh) 2016-03-02 2016-03-02 在虚拟机管理器中动态无侵的应用进程函数调用监控方法

Publications (2)

Publication Number Publication Date
CN105843667A true CN105843667A (zh) 2016-08-10
CN105843667B CN105843667B (zh) 2019-01-15

Family

ID=56586851

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610117437.2A Active CN105843667B (zh) 2016-03-02 2016-03-02 在虚拟机管理器中动态无侵的应用进程函数调用监控方法

Country Status (1)

Country Link
CN (1) CN105843667B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154257A (zh) * 2007-08-14 2008-04-02 电子科技大学 基于漏洞特征的动态执行补丁方法
CN101162491A (zh) * 2007-08-14 2008-04-16 电子科技大学 基于代码切片的虚拟执行系统与方法
US20080172499A1 (en) * 2007-01-17 2008-07-17 Toshiomi Moriki Virtual machine system
CN101814049A (zh) * 2010-03-23 2010-08-25 北京大学 一种内存泄漏探测方法
US20110213687A1 (en) * 2010-02-26 2011-09-01 James Michael Ferris Systems and methods for or a usage manager for cross-cloud appliances

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080172499A1 (en) * 2007-01-17 2008-07-17 Toshiomi Moriki Virtual machine system
CN101154257A (zh) * 2007-08-14 2008-04-02 电子科技大学 基于漏洞特征的动态执行补丁方法
CN101162491A (zh) * 2007-08-14 2008-04-16 电子科技大学 基于代码切片的虚拟执行系统与方法
US20110213687A1 (en) * 2010-02-26 2011-09-01 James Michael Ferris Systems and methods for or a usage manager for cross-cloud appliances
CN101814049A (zh) * 2010-03-23 2010-08-25 北京大学 一种内存泄漏探测方法

Also Published As

Publication number Publication date
CN105843667B (zh) 2019-01-15

Similar Documents

Publication Publication Date Title
US10380343B1 (en) System and method for programmatic runtime de-obfuscation of obfuscated software utilizing virtual machine introspection and manipulation of virtual machine guest memory permissions
CN108090346B (zh) 一种基于数据流监控的代码复用攻击防御方法及系统
Kawakoya et al. Memory behavior-based automatic malware unpacking in stealth debugging environment
US9195476B2 (en) System and method for aggressive self-modification in dynamic function call systems
US8561033B2 (en) Selective branch-triggered trace generation apparatus and method
US20090037888A1 (en) Simulation of program execution to detect problem such as deadlock
US9459991B2 (en) Heap dump object identification in a heap dump analysis tool
CN104077220A (zh) Mips架构操作系统内核的调试方法和装置
US10089474B2 (en) Virtual machine introspection
US9244821B2 (en) Latent defect indication
US7657792B2 (en) Identifying race conditions involving asynchronous memory updates
CN113760770A (zh) 基于自动静态资源检测的反调试方法和系统
CN111913742B (zh) 一种程序处理方法及相关设备
CN110737888A (zh) 虚拟化平台操作系统内核数据攻击行为检测方法
Abrath et al. Resilient self-debugging software protection
CN111931191A (zh) Linux平台二进制软件堆溢漏洞动态检测方法及系统
CN105843667A (zh) 在虚拟机管理器中动态无侵的应用进程函数调用监控方法
WO2020101928A1 (en) Efficient register breakpoints
Shosha et al. Digital forensic reconstruction of a program action
US6772372B2 (en) System and method for monitoring unaligned memory accesses
Gu et al. {COMRace}: detecting data race vulnerabilities in {COM} objects
KR102462864B1 (ko) 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법
US10296432B2 (en) Systems and methods for invasive debug of a processor without processor execution of instructions
BR102015030217A2 (pt) método para monitoramento de processos independentes alocados em acesso a banco de dados de uma máquina virtual java
Lin et al. VMRe: A reverse framework of virtual machine protection packed binaries

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant