CN105573818B - 一种虚拟化环境中的windows内核基地址及编译版本识别方法 - Google Patents
一种虚拟化环境中的windows内核基地址及编译版本识别方法 Download PDFInfo
- Publication number
- CN105573818B CN105573818B CN201510921489.0A CN201510921489A CN105573818B CN 105573818 B CN105573818 B CN 105573818B CN 201510921489 A CN201510921489 A CN 201510921489A CN 105573818 B CN105573818 B CN 105573818B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- page
- address
- kernel
- memory
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
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
本发明涉及一种虚拟化环境中的windows内核基地址及编译版本识别方法,基于虚拟机反省技术的内核定位是以虚拟机反省技术为基础,分析出当前操作系统使用的内存架构和当前虚拟机内核空间地址对应的物理内存;以内存页为单位读取PE文件信息,分析属于内核空间的物理内存页,判断页开始是否为可执行文件的魔数“MZ”;基于PE结构分析的加载镜像识别是根据所述的基于虚拟机反省技术的内核定位步骤中定位的PE起始地址,获取镜像调试段数据;通过对内存中调试信息段的分析获取在编译时生成的调试文件名称和PE文件唯一编译标示。本发明的有益效果是:稳定的获取开启内存地址空间随机化的Windows虚拟机内核基地址;实现了获取Windows虚拟机运行操作系统的详细编译版本。
Description
技术领域
本发明涉及一种通过虚拟机内存反省技术获取虚拟机中相关信息的方法,具体的涉及一种虚拟化环境中的windows内核基地址及编译版本识别方法,属于计算机应用领域。
背景技术
在虚拟化环境中,可以通过虚拟机反省技术方式获取虚拟机的内存数据,通过对内存数据的分析可以获取虚拟机运行信息。在分析虚拟机运行信息时,首先要获取其内核基地址,目前大多方法都是基于启发式地尝试不同Windows版本的基地址。而在Windows NT6.0(Windows Vista)以后的版本中系统引入了内存空间地址随机化,使得每次启动内核加载的基地址都不一样。这使得原有的方法都无法用在高版本的Windows操作系统上。同时,内存分析需要结合符号表进行,不同的编译版本对应不同的符号表,同一个基础内核版本(如Windows 7)对应着几十个编译版本。而现有的技术大多使用数据分析的方式,根据结构体的特性判断操作系统版本,该类只能获取基础版本,无法获取准确的编译版本。
为此,如何提供一种实现在虚拟机化环境中稳定地获取虚拟机中任意Windows版本的虚拟机的内核基地址和其准确的内核编译版本的识别方法,是本发明研究的目的所在。
发明内容
为解决现有技术的不足,本发明提供一种虚拟化环境中的windows内核基地址及编译版本识别方法,稳定地获取开启内存地址空间随机化的Windows虚拟机内核基地址;实现了获取Windows虚拟机运行操作系统的详细编译版本,帮助建立内核文件与符号信息的一一对应。
为解决现有技术问题,本发明所采用的技术方案是:一种虚拟化环境中的windows内核基地址及编译版本识别方法,包括基于虚拟机反省技术的内核定位和基于PE结构分析的加载镜像识别两个部分;所述的基于虚拟机反省技术的内核定位是以虚拟机反省技术为基础,开始状态下读取CR4寄存器数据,获取当前内存分页结构;所述的内存分页结构包括虚拟机的部分寄存器和内存数据;以这些数据为基础读取CR3寄存器数据,获取当前内核空间对应物理地址范围;从内核空间低地址开始,假设其为PE文件起始地址,分析出当前操作系统使用的内存架构(32位模式、32e模式或64位模式)和当前虚拟机内核空间地址对应的物理内存;之后从PE文件起始地址开始,以内存页为单位读取PE文件信息,分析属于内核空间的物理内存页,判断DOS前两个字节是否为魔数“MZ”,即判断页开始是否为可执行文件的魔数“MZ”;如果是则判定该页起始地址为镜像加载的起始地址,否则以页为单位自增PE文件起始地址后进入重新以页为单位读取PE文件信息状态。
所述的基于PE结构分析的加载镜像识别是根据所述的基于虚拟机反省技术的内核定位步骤中定位的PE起始地址,获取镜像调试段IMAGE_DEBUG_DIRECTORY数据,读取IMAGE_DEBUG_TYPE_CODEVIEW数据段信息并分析其PE头及调试信息段;通过对内存中调试信息段的分析获取在编译时生成的调试文件名称和PE文件唯一编译标示。
进一步的,所述的内存分页结构包括虚拟机的部分寄存器和内存数据。
进一步的,所述的内存中调试信息段的分析包括:判断IMAGE_DEBUG_TYPE_CODEVIEW前四个字符是否为“RSDS”,若是,则读取32位标示符、读取AGE变量数据,进而合成内核编译版本唯一标示,程序结束;否则返回所述的基于虚拟机反省技术的内核定位步骤中的以页为单位自增PE文件起始地址后进入重新以页为单位读取PE文件信息状态。
此外,本发明同时提供了一种虚拟化环境中的windows内核基地址及编译版本识别方法,其特征在于包括以下步骤:
1)利用虚拟机反省技术获取CR4寄存器数据,并分析出该虚拟机运行在32位模式、32e模式或是64位模式下;
2)利用虚拟机反省技术获取CR3寄存器数据,并根据步骤1)获取信息分析出该虚拟机内核空间对应的物理内存范围;
3)搜索内存中PE结构,Windows在加载镜像时每个镜像都会以内对齐的方式加载,同时每个PE文件开始处都有魔数“MZ”,因此通过读取每个内存页前两个字节的信息并与“MZ”魔数对比就可以基本确定该页是否为PE文件加载起始页,如果为加载起始页则进入下一步骤,如果不是则搜索下一内存页;
4)以上一步获取的镜像加载首页地址为基地址,分析加载PE头部,获取调试信息段,该段中保存着对应符号文件的名称,该名称以“.pdb”结尾,如果该调试段中文件名称为“NTOSKRNL.PDB”、“NTKRNLMP.PDB”、“NTKRNLPA.PDB”或“NTKRPAMP.PDB”,则该镜像为内核镜像,该镜像加载地址为内核基地址,如果不是则回到步骤3继续搜索;
5)对第4)步获取的调试段信息进行分析,获取保存在该段中的一个32位的唯一标示,根据该标示就可以建立该镜像与符号表之间的一一对应关系。本发明的有益效果是:稳定的获取开启内存地址空间随机化的Windows虚拟机内核基地址;实现了获取Windows虚拟机运行操作系统的详细编译版本,帮助建立内核文件与符号信息的一一对应。
附图说明
图1为本发明的步骤分析图。
具体实施方式
下面结合附图1对本发明做进一步分析。
如附图1所示,一种虚拟化环境中的windows内核基地址及编译版本识别方法,包括基于虚拟机反省技术的内核定位和基于PE结构分析的加载镜像识别两个部分;基于虚拟机反省技术的内核定位是以虚拟机反省技术为基础,在开始状态下读取CR4数据,获取当前内存分页结构,内存分页结构包括虚拟机的部分寄存器和内存数据;以这些数据为基础读取CR3数据,获取当前内核空间对应物理地址范围;从内核空间低地址开始,假设其为PE文件起始地址,分析出当前操作系统使用的内存架构(32位模式、32e模式或64位模式)和当前虚拟机内核空间地址对应的物理内存;之后从PE文件起始地址开始,以内存页为单位读取PE文件信息,分析属于内核空间的物理内存页,判断DOS前两个字节是否为“MZ”,即判断页开始是否为可执行文件(Portable Executable, PE)的魔数“MZ”;如果是则判定该页起始地址为镜像加载的起始地址,否则以页为单位自增PE文件起始地址后进入重新以页为单位读取PE文件信息状态。
基于PE结构分析的加载镜像识别是根据所述的基于虚拟机反省技术的内核定位步骤中定位的PE起始地址,获取镜像调试段(IMAGE_DEBUG_DIRECTORY)数据,读取IMAGE_DEBUG_TYPE_CODEVIEW数据段信息并分析其PE头及调试信息段;通过对内存中调试信息段的分析获取在编译时生成的调试文件名称和PE文件唯一编译标示。
其中,内存中调试信息段的分析包括:判断IMAGE_DEBUG_TYPE_CODEVIEW前四个字符是否为“RSDS”,若是,则读取32位标示符、读取AGE变量数据,进而合成内核编译版本唯一标示,程序结束;否则返回所述的基于虚拟机反省技术的内核定位步骤中的以页为单位自增PE文件起始地址后进入重新以页为单位读取PE文件信息状态。
调试文件名称以“.pdb”结尾,将该结尾用“.exe”、“.dll”或“.sys”进行替换便是对应的编译时生成的PE文件名称。同时,由于CPU、内存等不同架构的原因,Windows内核文件有若干个名称,分别为“NTOSKRNL.EXE”,“NTKRNLMP.EXE”,“NTKRNLPA.EXE”和“NTKRPAMP.EXE”;系统只要匹配其中任意一个名称则判定为发现内核文件。
本发明利用虚拟机反省技术获取虚拟机基本信息、搜索内核地址内存空间确定加载镜像基地址和通过调试段信息分析镜像名称和编译版本唯一标示。具体实践包括以下步骤:
1.利用虚拟机反省技术获取CR4寄存器数据,并分析出该虚拟机运行在32位模式、32e模式或是64位模式下。
2.利用虚拟机反省技术获取CR3寄存器数据,并根据步骤1获取信息分析出该虚拟机内核空间对应的物理内存范围。
3.搜索内存中PE结构。Windows在加载镜像时每个镜像都会以内对齐的方式加载,同时每个PE文件开始处都有魔数“MZ”。因此通过读取每个内存页前两个字节的信息并与“MZ”魔数对比就可以基本确定该页是否为PE文件加载起始页。如果为加载起始页则进入下一步骤,如果不是则搜索下一内存页。
4.以上一步获取的镜像加载首页地址为基地址,分析加载PE头部,获取调试信息段,该段中保存着对应符号文件的名称,该名称以“.pdb”结尾。如果该调试段中文件名称为“NTOSKRNL.PDB”、“NTKRNLMP.PDB”、“NTKRNLPA.PDB”或“NTKRPAMP.PDB”,则该镜像为内核镜像,该镜像加载地址为内核基地址,如果不是则回到步骤3继续搜索。
5.进一步对第4步获取的调试段信息进行分析,获取保存在该段中的一个32位的唯一标示,根据该标示就可以建立该镜像与符号表之间的一一对应关系。
综上所述,本发明将利用虚拟机反省技术确定内核地址空间所对应的物理地址范围。通过对该地址空间进行搜索,并利用PE结构特有的魔数进行多因素的比对,从而定位内存中的内核镜像及其基地址。这种定位技术是对内核地址空间彻底分析,无需先前获取的地址信息,所以可以针对虚拟机每次启动后特定的地址空间进行搜索,从而实现了在开启内存地址空间随机化之后的内核基地址定位。同时,本发明通过对内存中PE镜像中调试段信息的分析,获取其编译版本标示(该标示是不同编译版本的唯一标示,是编译时由编译器根据当时不同变量数据生成的字符串)。通过该标示可以区分不同的编译版本,从而建立内核文件与符号信息的一一对应关系。本发明所述的一种虚拟化环境中的windows内核基地址及编译版本识别方法,可以稳定地获取开启内存地址空间随机化的Windows虚拟机内核基地址;实现获取Windows虚拟机运行操作系统的详细编译版本,帮助建立内核文件与符号信息的一一对应。
Claims (4)
1.一种虚拟化环境中的windows内核基地址及编译版本识别方法,其特征在于:包括基于虚拟机反省技术的内核定位和基于PE结构分析的加载镜像识别两个部分;所述的基于虚拟机反省技术的内核定位包括:虚拟机反省技术为基础,开始状态下读取CR4寄存器数据,获取当前内存分页结构,以这些数据为基础读取CR3寄存器数据,获取当前内核空间对应物理地址范围;从内核空间低地址开始,假设其为PE文件起始地址,分析出当前操作系统使用的内存架构和当前虚拟机内核空间地址对应的物理内存,所述的内存架构包括32位模式、32e模式或64位模式;之后从PE文件起始地址开始,以内存页为单位读取PE文件信息,分析属于内核空间的物理内存页,判断DOS前两个字节是否为魔数“MZ”,即判断页开始是否为可执行文件的魔数“MZ”;如果是则判定该页起始地址为镜像加载的起始地址,否则以页为单位自增PE文件起始地址后进入重新以页为单位读取PE文件信息状态;
所述的基于PE结构分析的加载镜像识别是根据所述的基于虚拟机反省技术的内核定位步骤中定位的PE起始地址,获取镜像调试段IMAGE_DEBUG_DIRECTORY数据,读取IMAGE_DEBUG_TYPE_CODEVIEW数据段信息并分析其PE头及调试信息段;通过对内存中调试信息段的分析获取在编译时生成的调试文件名称和PE文件唯一编译标示。
2.根据权利要求1所述的一种虚拟化环境中的windows内核基地址及编译版本识别方法,其特征在于:所述的内存分页结构包括虚拟机的部分寄存器和内存数据。
3.根据权利要求1所述的一种虚拟化环境中的windows内核基地址及编译版本识别方法,其特征在于:所述的内存中调试信息段的分析包括:判断IMAGE_DEBUG_TYPE_CODEVIEW前四个字符是否为“RSDS”,若是,则读取32位标示符、读取AGE变量数据,进而合成内核编译版本唯一标示,程序结束;否则返回所述的基于虚拟机反省技术的内核定位步骤中的以页为单位自增PE文件起始地址后进入重新以页为单位读取PE文件信息状态。
4.一种虚拟化环境中的windows内核基地址及编译版本识别方法,其特征在于包括以下步骤:
1)利用虚拟机反省技术获取CR4寄存器数据,并分析出该虚拟机运行在32位模式、32e模式或是64位模式下;
2)利用虚拟机反省技术获取CR3寄存器数据,并根据步骤1)获取信息分析出该虚拟机内核空间对应的物理内存范围;
3)搜索内存中PE结构,Windows在加载镜像时每个镜像都会以内对齐的方式加载,同时每个PE文件开始处都有魔数“MZ”,因此通过读取每个内存页前两个字节的信息并与“MZ”魔数对比就可以确定该页是否为PE文件加载起始页,如果为加载起始页则进入下一步骤,如果不是则搜索下一内存页;
4)以上一步获取的镜像加载首页地址为基地址,分析加载PE头部,获取调试信息段,该段中保存着对应符号文件的名称,该名称以“.pdb”结尾,如果该调试段中文件名称为“NTOSKRNL.PDB”、“NTKRNLMP.PDB”、“NTKRNLPA.PDB”或“NTKRPAMP.PDB”,则该镜像为内核镜像,该镜像加载地址为内核基地址,如果不是则回到步骤3继续搜索;
5)对第4步获取的调试段信息进行分析,获取保存在该段中的一个32位的唯一标示,根据该标示就可以建立该镜像与符号表之间的一一对应关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510921489.0A CN105573818B (zh) | 2015-12-14 | 2015-12-14 | 一种虚拟化环境中的windows内核基地址及编译版本识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510921489.0A CN105573818B (zh) | 2015-12-14 | 2015-12-14 | 一种虚拟化环境中的windows内核基地址及编译版本识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105573818A CN105573818A (zh) | 2016-05-11 |
CN105573818B true CN105573818B (zh) | 2018-09-11 |
Family
ID=55883990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510921489.0A Active CN105573818B (zh) | 2015-12-14 | 2015-12-14 | 一种虚拟化环境中的windows内核基地址及编译版本识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105573818B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107807839B (zh) * | 2016-09-09 | 2022-01-28 | 阿里巴巴集团控股有限公司 | 一种修改虚拟机内存数据的方法、装置及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414304A (zh) * | 2008-11-27 | 2009-04-22 | 山东省计算中心 | 基于KPCR结构的Windows系统物理内存分析方法 |
CN104102881A (zh) * | 2014-07-07 | 2014-10-15 | 杭州电子科技大学 | 一种基于内核对象链接关系的内存取证方法 |
-
2015
- 2015-12-14 CN CN201510921489.0A patent/CN105573818B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414304A (zh) * | 2008-11-27 | 2009-04-22 | 山东省计算中心 | 基于KPCR结构的Windows系统物理内存分析方法 |
CN104102881A (zh) * | 2014-07-07 | 2014-10-15 | 杭州电子科技大学 | 一种基于内核对象链接关系的内存取证方法 |
Non-Patent Citations (2)
Title |
---|
《计算机取证物理内存镜像获取技术的研究与实现》;陈恒;《中国优秀硕士学位论文全文数据库》;20100330;全文 * |
《面向Windows 8物理内存镜像文件的内存取证技术研究》;苟木理;<中国优秀硕士学位论文全文数据库>;20140228;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105573818A (zh) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2014275115B9 (en) | Debugging native code by transitioning from execution in native mode to execution in interpreted mode | |
US7150006B2 (en) | Techniques for managed code debugging | |
Case et al. | Dynamic recreation of kernel data structures for live forensics | |
CN113110859B (zh) | 一种嵌入式终端远程在线开发系统 | |
CN103294598B (zh) | 一种源代码检查方法及装置 | |
CN103106132A (zh) | Linux系统崩溃时内核函数调用栈分析调试方法 | |
CN105183592B (zh) | 用于支持性能分析的方法和装置 | |
CN112035443A (zh) | 基于Linux平台的大数据执行方法、系统、设备及存储介质 | |
CN105573818B (zh) | 一种虚拟化环境中的windows内核基地址及编译版本识别方法 | |
CN109426496B (zh) | 程序日志写入文件的方法、存储介质、电子设备及系统 | |
CN113641594B (zh) | 跨端自动化测试方法以及相关装置 | |
CN112363875B (zh) | 一种系统缺陷检测方法、设备、电子设备和存储介质 | |
CN116451271A (zh) | 一种应用软件的隐私政策自动提取方法 | |
CN105243134A (zh) | 一种处理被劫持浏览器的方法及设备 | |
US9495278B2 (en) | Dynamic discovery of data segments within instrumented code | |
Tang et al. | Internet of things security: Principles and practice | |
CN102591669A (zh) | 模块化计算机固件及其实现方法 | |
CN113590133A (zh) | 安卓系统注入检测方法、装置、设备以及计算机存储介质 | |
TW200417924A (en) | WIN F-language interpreter | |
JP3887550B2 (ja) | クロスリファレンス構築装置、クロスリファレンス構築方法及びクロスリファレンス構築用プログラム | |
CN112948010B (zh) | JavaScript模块化HTML文件前端加载方法 | |
CN113190293B (zh) | 一种波形加载方法、装置、设备及可读存储介质 | |
CN115840682B (zh) | 基于sw64指令集的bios层级采样的运维监控方法及装置 | |
US11663064B1 (en) | System and method for generating a guest operating system crash dump | |
CN115981711B (zh) | 一种代码处理方法及电子设备 |
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 |