CN104102881A - 一种基于内核对象链接关系的内存取证方法 - Google Patents
一种基于内核对象链接关系的内存取证方法 Download PDFInfo
- Publication number
- CN104102881A CN104102881A CN201410321616.9A CN201410321616A CN104102881A CN 104102881 A CN104102881 A CN 104102881A CN 201410321616 A CN201410321616 A CN 201410321616A CN 104102881 A CN104102881 A CN 104102881A
- Authority
- CN
- China
- Prior art keywords
- eprocess
- utilize
- kernel
- kernel objects
- peb
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
Abstract
本发明提出了一种基于内核对象链接关系的内存取证方法。本发明首先利用操作系统的蓝屏内存转储技术或者内存转存工具软件获得正在运行的内存镜像文件;其次利用调试工具Windbg获取内核对象的数据结构;第三由内核对象的数据结构得到内核对象的链接关系图;第四利用Windbg调试同版本的系统得到内核对象Eproces的魔数以及每个内核对象的PoolTag;第五利用魔数来定位内存镜像文件中的Eproces数据结构;最后利用在步骤三得到的链接关系图逐步得到系统的各种内核对象信息,从而实现对内存系统的取证。本发明具有很好的准确性、高效性和针对性,克服了以前基于字符串匹配的内存取证存在的不确定性和速度慢的问题。
Description
技术领域
本发明属于计算机取证领域,特别针对Ms-windows的内存取证领域,具体是一种基于内核对象链接关系的内存取证方法。
背景技术
计算机技术的发展,极大提高了人们的工作效率、促进了经济社会的发展同、丰富了人们业余生活,随着计算机技术给社会带来巨大良好效益的同时计算机犯罪也渗入到社会的各个方面。据美国联邦调查局(FBI)统计,为应对各种计算机犯罪如恶意代码、间谍软件、计算机病毒等,美国企业在信息安全的投入高达672亿美元的投入。一些计算机发烧友或者黑客利用各种计算机漏洞、后门和恶意代码等入侵计算机,一些态度恶意的入侵人员很可能还会对数据进行破坏。人们使用电子设备和计算机或多或少都会留下相应的痕迹,在司法上如果可以完整的可信的从计算机中提供证据将极大的缩短取证过程增加证据的可信度。基于对计算机犯罪的地址和信息发现的需求计算机取证技术应运而生。内存作为计算机设备五大组成部分最重要的一部分,从内存中可以获得很多有用的信息如运行着的程序,打开的网络端口,已经使用过的注册表键值,所以内存的取证是当前计算机取证领域中一个重点和难点问题。
发明内容
为了克服现有技术中的不确定性以及偶然性等不足,本发明提供了一种基于内核对象链接关系的Ms-windows内存取证方法,利用本方法可以很好的对运行中的Ms-windows进行内存取证,以获得计算机中运行着的进程以及其重构内存地址空间。
本发明提供了一种基于内核对象链接关系的Ms-windows内存取证方法。该方法包括以下步骤:首先,利用MS-Windows操作系统的蓝屏内存转储技术或者内存转存软件,如DumpIt、win32DD和FTKImager等,获得正在运行的MS-Windows内存镜像,也就是内存的一份快照;其次利用Windbg获取Ms-Windows内核对象的数据结构;第三,由内核数据对象的数据结构得到内核对象的链接关系图;第四,利用Windbg调试同版本的MS-Windows系统得到内核对象Eproces的Magic Number以及每个内核对象的Pool Tag;第五,利用Eproces的Magic Number来定位内存镜像中的Eproces数据结构;最后,利用在步骤三得到的链接关系图可以逐步得到系统的各种内核对象信息而实现对MS-Windows内存系统的取证。
本发明具体包括如下步骤:
步骤(1) 获取正在运行的Ms-windows操作系统的内存镜像。
利用计算机蓝屏内存转储技术或者内存转存工具软件,如MoonSols DumpIt、Win32DD和FTKImager等,获得正在运行的Ms-windows内存镜像文件,也就是内存的一份快照。
步骤(2) 获取计算机内核对象的数据结构。
利用微软公司轻量级的用户态内核调试工具Windbg获取内核对象Eprocess、Peb和Vad的数据结构。这里的Eprocess是指Ms-windows为了进行进程管理而设计的一个内核对象,其保存了进程的各种相关信息和相关结构指针;Peb是指进程环境控制块,其存储了进程运行时的各种环境信息,在Peb里面有一个Ldr项这个结构描述了进程的加载模块信息,它指向的是一个_PEB_LDR_DATA结构,而这个结构中的InLoadOrderModuleList指向的是进程加载模块链表的表头;而Vad是指进程的虚拟地址空间树,为方便系统进行内存管理Ms-windows把进程的虚拟地址空间描述成一棵自适应的平衡二叉树,也就是VAD。
步骤(3) 获取内核对象的链接关系图。
利用步骤(2)中得到内核对象Eprocess、Peb和Vad的数据结构,得到内核对象之间的链接关系图。
步骤(4) 获取Eprcoess的魔数(Magic Number)。
利用Windbg调试同版本的MS-Windows系统得到内核中Eprocess的Magic Number以及每个内核对象的Pool Tag。
步骤(5) 定位Eproces数据结构在内存镜像文件中的位置。
在内存镜像文件中利用步骤(4)获得的Eprocess魔数进行字符串匹配来定位Eprocess结构的物理位置。
步骤(6) 获取系统运行时的信息。
利用步骤(5)中得到的内核对象Eprocess在内存镜像文件中的位置以及步骤(3)中得到的内核对象的链接关系图可以依次遍历出其他的内核对象。接着可以利用这些内核对象对系统运行时信息,如运行中的进程、进程的地址空间、进程所加载的动态链接模块等信息,进行重现。
步骤(2) 所述的获取计算机内核对象的数据结构步骤如下:
①安装工具软件Windbg和Windows Symbol Packages(可以从http://msdn.microsoft.com/下载)。如果之前已经安装跳过此步。
②启动Windbg,File->Symbol File Path,填写上一步中Windows Symbol Packages的安装路径,如“D:\Program Files\Symbols”。
③File->Kernel Debug->Local,选择本地内核调试。
④利用dt命令调试Ms-windows内核对象的数据结构,获得内核对象Eprocess,Kprocess和Peb。如“dt !_Eprocess”可以获取Eprocess的数据结构。
步骤(3) 所述得到内核对象链接关系图的具体步骤如下:
①在获取Eprocess的数据结构之后,利用Eprocess的结构可以依次获取Kprocess、Peb和Vad内核对象的数据结构。如Eprocess第一项为Kprocess,可以用命令“dt !_Kprocess”获取Kprocess的数据结构。
②利用前一步获得的数据结构以及链接关系,根据调试的内核对象时的顺序以及它们之间的包含关系画出内核对象链接关系图。
所述的步骤(4)中获取 Eprcoess魔数的具体步骤如下:
①利用“!process 0 0”命令显示当前系统运行的所有进程信息。对于每个进程,它会显示出它的虚拟地址、SessionId、Peb、和DirBase的值等信息。
②利用“dt !_eprocess 虚拟地址”,如dt !_eprocess 838498a0,可以获取进程的信息。其中虚拟地址是上一步中“!process 0 0”命令得到的结果。
利用“dt !_DISPATCHER_HEADER”命令可以获取Eprocess结构的魔数,如Ms-Win7Sp2版本的Eprocess结构的魔数为“0x00000000002 60003”。
所述的步骤(5)在内存镜像中定位Eproces数据结构的方法具体步骤如下:
①利用步骤(2)调试得到内核对象Eprocess的数据结构,找到其结构中的ActiveProcessLinks项的偏移位置量Location。因为ActiveProcessLinks项将所有Eprocess链接为双链表,而系统内核对象都存储在虚拟地址的高2G部分,所以ActiveProcessLinks的值大于0x80000000。
②利用步骤(2)中得到的魔数为特征字符串,结合ActiveProcessLinks的值要大于0x80000000,定位Eprocess结构在内存镜像文件中的位置。
所述的步骤(6)系统运行时信息获取方法的具体步骤如下:
①获取系统中正在运行着的进程。遍历Eprocess就可以枚举出系统运行着的进程信息。因为在Eprocess中的第一项是Kprocess,而PCB(Process Control Block)就是Kprocess一个子项。所以有多少个Eprocess结构就有多少个正在运行着的进程。
②重构进程地址空间。Eprocess中VadRoot指向自适应平衡二叉树树根,利用VadRoot可以重构进程的物理地址空间。获取Eprocess中VadRoot值之后,利用虚拟地址与物理地址转换方法,递归遍历由VadRoot指向的根节点的二叉树,就可以重构进程的地址空间。
获取进程加载的模块。在Eprocess中Peb指向进程的PEB结构,在Peb结构中存在Ldr项,而Ldr指向_PEB_LDR_DATA结构。在_PEB_LDR_DARA的中的结构InLoaderModulist值指向的进程加载模块双链表的头节点。双链表每一项是_LDR_DATA_TABLE_ENTRY结构,_LDR_DATA_TABLE_ENTRY结构代表着进程加载模块信息,每一个加载模块都对应着一个_LDR_DATA_TABLE_ENTRY结构。利用这个模块结构可以获取进程加载模块信息,如加载模块大小、起始地址和名字等。
在整个取证方法中经常要将虚拟地址转换为物理地址,地址转换方法的步骤如下:
①将虚拟地址分成A、B、C三部分,其中A为虚拟地址的高10个比特位,B为虚拟地址的中间10个比特位,C为虚拟地址的低12个比特位。
②利用步骤(2)获取到的Eprocess的结构,获取DTB(Directory TableBase)的值,这里DTB代表进程页目录的地址。
利用DTB和地址A部分,即DTB+A×4定位页表的基地址,即PTE的值。
④利用PTE的值和地址B部分,即PTE&0Xfffff000+B×4得到一个地址,这个地址的高20位就是物理地址的高20位部分。
⑤将物理地址地址的高20位与虚拟地址的C部分也就是低12位部分组合就可以得到32位的物理地址。
本发明利用Windbg调试工具以及系统的内核对象链接关系图实现对正在运行的MS-windows系统进行内存取证。本取证方法具有很好的准确性、高效性和针对性,克服了以前基于字符串匹配的内存取证存在的不确定性和速度慢的问题。
附图说明
图1 对象链接关系的内存取证方法流程图;
图2得到内核关系链接流程图;
图3得到内核关系链接示意图;
图4虚拟地址与物理地址换算流程图;
图5虚拟地址与物理地址换算示意图;
图6系统运行时信息的获取基本流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例,但不限于此。
图1是本发明一个实施例的一种基于内核对象链接关系的内存取证方法的流程图。如图1所示,根据本发明实施例的一种基于内核对象链接关系的内存取证方法包括:利用DumpIt获取内存镜像、利用Windbg调试待取证系统同版本系统或者取证系统得到系统的数据结构、利用系统数据结构得到内核对象之间的关系图、利用Eprocess的Magic Number成功定位它在内存镜像的物理位置、利用内核对象之间的关系图已经Eprocess的物理位置遍历系统所有的内核对象、利用系统所有的内核对象对计算机的运行时信息进行良好的重现。
以下对本发明实施例的各个步骤进行详细的说明。
步骤(1)、利用DumpIt获取内存镜像
利用计算机蓝屏内存转储技术或者专业的内存转存软件如DumpIt、Win32DD、FTKImager等,获得计算机内存镜像,也就是计算机内存的一份拷贝;其中MoonSols DumpIt是一个同时支持win32和win64的可执行程序,无需终端用户做任何配置,只需双击可执行程序即可在当前目录下生成物理内存的副本。而且它的格式是RAW格式的和蓝屏产生的内存格式一样,可以用Windbg直接调试,本示例就是用DumpIt来做获得计算机内存镜像。
步骤(2)、获取计算机内核对象的数据结构步骤如下:
①安装Windbg和Windows Symbol Packages(可以从http://msdn.microsoft.com/ 下载)。如果之前已经安装可以跳过此步。
②启动Windbg, File->Symbol File Path填写以上Windows Symbol Packages安装路径,如D:\Program Files\Symbols。
③File->Kernel Debug->Local选择本地内核调试,如果这个时候调试显示不能加载Symbols package就将第三步的“Symbol File Path”替换成“D:\ProgramFiles\Symbols;SRV*D:\ProgramFiles\Symbols*http://msdl.microsoft.com/download/symbols”这样它就可以在线获取Symbols Packages。
④利用dt命令调试计算机内核对象的数据结构,获得内核对象Eprocess,Kprocess和Peb。如“dt !_Eprocess”可以获取Eprocess的数据结构,“dt !_ Kprocess”可以获取Kprocess的数据结构。
步骤(3)、所述得到内核对象链接关系图的具体步骤如下,参见图2和图3:
①在获取Eprocess的数据结构之后,利用Eprocess的结构可以依次获取Kprocess、Peb和Vad内核对象的数据结构。如Eprocess第一项为Kprocess,可以用命令“dt !_Kprocess”获取Kprocess的数据结构。
利用前一步获得的数据结构以及链接关系,根据调试的内核对象时的顺序以及它们之间的包含关系画出内核对象链接关系图。
步骤(4)、中获取 Eprcoess魔数的具体步骤如下:
①利用“!process 0 0”命令显示当前系统运行的所有进程信息。对于每个进程,它会显示出它的虚拟地址、SessionId、Peb的值、DirBase的值等信息。
②利用“dt !_eprocess 虚拟地址”,如dt !_eprocess 838498a0,可以获取进程的信息。其中虚拟地址是上一步“!process 0 0”命令得到的结果。
③利用“dt !_DISPATCHER_HEADER”命令可以获取Eprocess结构的魔数,如Ms-Win7Sp2版本的Eprocess结构的魔数为“0x0000000000260003”。
步骤(5)、在内存镜像中定位Eproces数据结构的方法具体步骤如下:
①利用步骤(2)调试得到Eprocess内核对象的数据结构,找到其结构中的ActiveProcessLinks项的偏移位置大小Location。因为ActiveProcessLinks项将所有Eprocess链接为双链表,所以ActiveProcessLinks的值大于0x80000000。
②利用步骤(2)中得到的魔数为特征字符串,结合ActiveProcessLinks的值要大于0x80000000,定位Eprocess结构在内存镜像中物理地址。
步骤(6)、系统运行时信息获取方法的具体步骤如下。
①获取系统中正在运行着的进程。
遍历Eprocess就可以枚举出系统运行着的进程信息。因为在Eprocess中的第一项是Kprocess,而PCB(Process Control Block)就是Kprocess一个子项。所以有多少个Eprocess结构就有多少个运行着的进程。
②重构进程地址空间。
Eprocess中VadRoot指向自适应平衡二叉树树根,利用VadRoot可以重构进程的物理地址空间。 获取Eprocess中VadRoot值之后,可以利用虚拟地址与物理地址转换方法,递归遍历由VadRoot指向的根节点的二叉树,就可以重构进程的地址空间。这里,Eprocess中VadRoot用于指向地址空间的自适应平衡二叉树树根。
③获取进程加载的模块。
在Eprocess中Peb指向进程的PEB结构,在Peb结构中存在Ldr项,而Ldr指向_PEB_LDR_DATA结构。在_PEB_LDR_DARA的中的结构InLoaderModulist值指向的进程加载模块双链表的头节点。双链表每一项是_LDR_DATA_TABLE_ENTRY结构,_LDR_DATA_TABLE_ENTRY结构代表着进程加载模块信息,每一个加载模块都对应着一个_LDR_DATA_TABLE_ENTRY结构。利用这个模块结构可以获取进程加载模块信息,如加载模块大小、起始地址、名字等。
参见图4和图5。在取证过程经常将虚拟地址转换成物理地址,这是因为在Ms-Windows操作系统中为了更好的管理计算机中的内存,对内存管理采取了分页管理机制。将虚拟地址转换成物理地址,其主要步骤包括:
步骤(1)、将虚拟内存分为三部分,Page Directory Index、Page Table Index、Byte Index。
步骤(2)利用CR3和Page Directory Index得到PDE的值,它指向的计算机页表基地址,利用PDE以及Page Table Index可以很容易的得到PTE的值,PTE是物理地址的第一部分。
步骤(3)将PTE的前20位和Byte Index进行拼装就得到了物理地址的值。
图6是运行时信息获取的流程图,其步骤包括:
步骤(1)、利用Eprocess的Magic Number循环遍历内存镜像找到Eproces结构在物理内存中的位置主要包括。
A、利用调试得到Eprocess内核对象的数据结构,找到其结构中的ActiveProcessLinks项的偏移位置大小Location。因为ActiveProcessLinks项将所有Eprocess链接为双链表,所以ActiveProcessLinks的值大于0x80000000。
B、利用上一步得到的魔数为特征字符串,结合ActiveProcessLinks的值要大于0x80000000,定位Eprocess结构在内存镜像中物理地址。
步骤(2)、利用Eprocess得到DirectoryTableBase、PEB以及VADRoot的虚拟地址主要包括。
在Eprocess存在指向其他数据结构的链接指针,所以利用Eprocess可以成功获得如DirectoryTableBase、PEB、VADRoot的虚拟地址的值。
步骤(3)、利用DirectoryTableBase对得到的地址进行虚拟地址到物理地址的转换。
利用前面描述的地址转换方式,这里DirectoryTableBase的值就是进程运行时会拷贝都CR3寄存器里的值。
步骤(4)利用步骤二中得到的虚拟地址和以及步骤三中的DirectoryTableBase得到内核对象的物理地址。
在内存取证过程中得到的地址都是虚拟地址,所以为了再内核对象中成功定位我们要的信息都需要进行地址的转换。
步骤(5)利用得到的物理地址对系统运行时信息进行良好的还原其中包括
A、获取系统的运行着的进程。
遍历Eprocess就可以枚举出系统运行着的进程信息。因为在Eprocess中的第一项是Kprocess,而PCB(Process Control Block)就是Kprocess一个子项。所以有多少个Eprocess结构就有多少个运行着的进程。
B、重构进程地址空间。
Eprocess中VadRoot指向自适应平衡二叉树树根,利用VadRoot可以重构进程的物理地址空间。 获取Eprocess中VadRoot值之后,可以利用虚拟地址与物理地址转换方法,递归遍历由VadRoot指向的根节点的二叉树,就可以重构进程的地址空间。这里,Eprocess中VadRoot用于指向地址空间的自适应平衡二叉树树根。
C、获取进程加载的模块。
在Eprocess中Peb指向进程的PEB结构,在Peb结构中存在Ldr项,而Ldr指向_PEB_LDR_DATA结构。在_PEB_LDR_DARA的中的结构InLoaderModulist值指向的进程加载模块双链表的头节点。双链表每一项是_LDR_DATA_TABLE_ENTRY结构,_LDR_DATA_TABLE_ENTRY结构代表着进程加载模块信息,每一个加载模块都对应着一个_LDR_DATA_TABLE_ENTRY结构。利用这个模块结构可以获取进程加载模块信息,如加载模块大小、起始地址和名字。
Claims (7)
1. 一种基于内核对象链接关系的内存取证方法,其特征在于包括如下步骤:
步骤(1) 获取正在运行的Ms-windows操作系统的内存镜像;
利用计算机蓝屏内存转储技术或者内存转存工具软件获得正在运行的Ms-windows内存镜像文件,也就是内存的一份快照;
步骤(2) 获取计算机内核对象的数据结构;
利用微软公司轻量级的用户态内核调试工具Windbg获取内核对象Eprocess、Peb和Vad的数据结构;
Eprocess是指Ms-windows为了进行进程管理而设计的一个内核对象,其保存了进程的各种相关信息和相关结构指针;
Peb是指进程环境控制块,其存储了进程运行时的各种环境信息,在Peb里面有一个Ldr项这个结构描述了进程的加载模块信息,它指向的是一个_PEB_LDR_DATA结构,而这个结构中的InLoadOrderModuleList指向的是进程加载模块链表的表头;
Vad是指进程的虚拟地址空间树,为方便系统进行内存管理Ms-windows把进程的虚拟地址空间描述成一棵自适应的平衡二叉树,也就是VAD;
步骤(3) 获取内核对象的链接关系图;
利用步骤(2)中得到内核对象Eprocess、Peb和Vad的数据结构,得到内核对象之间的链接关系图;
步骤(4) 获取Eprcoess的魔数(Magic Number);
利用Windbg调试同版本的MS-Windows系统得到内核中Eprocess的Magic Number以及每个内核对象的Pool Tag;
步骤(5) 定位Eproces数据结构在内存镜像文件中的位置;
在内存镜像文件中利用步骤(4)获得的Eprocess魔数进行字符串匹配来定位Eprocess结构的物理位置;
步骤(6) 获取系统运行时的信息;
利用步骤(5)中得到的内核对象Eprocess在内存镜像文件中的位置以及步骤(3)中得到的内核对象的链接关系图依次遍历出其他的内核对象;接着利用这些内核对象对系统运行时信息进行重现。
2.根据权利要求1所述的内存取证方法,其特征在于:步骤(2) 所述的获取计算机内核对象的数据结构步骤如下:
①安装工具软件Windbg和Windows Symbol Packages;
②启动Windbg, File->Symbol File Path,填写上一步中Windows Symbol Packages的安装路径;
③File->Kernel Debug->Local,选择本地内核调试;
④利用dt命令调试Ms-windows内核对象的数据结构,获得内核对象Eprocess,Kprocess和Peb。
3.根据权利要求1所述的内存取证方法,其特征在于:步骤(3) 所述得到内核对象链接关系图的具体步骤如下:
①在获取Eprocess的数据结构之后,利用Eprocess的结构依次获取Kprocess、Peb和Vad内核对象的数据结构;
②利用前一步获得的数据结构以及链接关系,根据调试的内核对象时的顺序以及它们之间的包含关系画出内核对象链接关系图。
4.根据权利要求1所述的内存取证方法,其特征在于:所述的步骤(4)中获取 Eprcoess魔数的具体步骤如下:
①利用“!process 0 0”命令显示当前系统运行的所有进程信息;对于每个进程,它会显示出它的虚拟地址、SessionId、Peb、和DirBase的值;
②利用“dt !_eprocess 虚拟地址”,其中虚拟地址是上一步中“!process 0 0”命令得到的结果;
③利用“dt !_DISPATCHER_HEADER”命令获取Eprocess结构的魔数。
5.根据权利要求1所述的内存取证方法,其特征在于:所述的步骤(5)在内存镜像中定位Eproces数据结构的方法具体步骤如下:
①利用步骤(2)调试得到内核对象Eprocess的数据结构,找到其结构中的ActiveProcessLinks项的偏移位置量Location;
②利用步骤(2)中得到的魔数为特征字符串,结合ActiveProcessLinks的值要大于0x80000000,定位Eprocess结构在内存镜像文件中的位置。
6.根据权利要求1所述的内存取证方法,其特征在于:所述的步骤(6)系统运行时信息获取方法的具体步骤如下:
①获取系统中正在运行着的进程:遍历Eprocess枚举出系统运行着的进程信息;
②重构进程地址空间:Eprocess中VadRoot指向自适应平衡二叉树树根,利用VadRoot可以重构进程的物理地址空间;获取Eprocess中VadRoot值之后,利用虚拟地址与物理地址转换方法,递归遍历由VadRoot指向的根节点的二叉树,就可以重构进程的地址空间;
③获取进程加载的模块:在Eprocess中Peb指向进程的PEB结构,在Peb结构中存在Ldr项,而Ldr指向_PEB_LDR_DATA结构;在_PEB_LDR_DARA的中的结构InLoaderModulist值指向的进程加载模块双链表的头节点;双链表每一项是_LDR_DATA_TABLE_ENTRY结构,_LDR_DATA_TABLE_ENTRY结构代表着进程加载模块信息,每一个加载模块都对应着一个_LDR_DATA_TABLE_ENTRY结构;利用这个模块结构可以获取进程加载模块信息。
7.根据权利要求1所述的内存取证方法,其特征在于:还包括将虚拟地址转换为物理地址的过程,具体如下:
① 将虚拟地址分成A、B、C三部分,其中A为虚拟地址的高10个比特位,B为虚拟地址的中间10个比特位,C为虚拟地址的低12个比特位;
② 利用步骤(2)获取到的Eprocess的结构,获取DTB的值,这里DTB代表进程页目录的地址;
③利用DTB和地址A部分,即DTB+A×4定位页表的基地址,即PTE的值;
④利用PTE的值和地址B部分,即PTE&0Xfffff000+B×4得到一个地址,这个地址的高20位就是物理地址的高20位部分;
⑤将物理地址的高20位与虚拟地址的C部分也就是低12位部分组合得到32位的物理地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321616.9A CN104102881B (zh) | 2014-07-07 | 2014-07-07 | 一种基于内核对象链接关系的内存取证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321616.9A CN104102881B (zh) | 2014-07-07 | 2014-07-07 | 一种基于内核对象链接关系的内存取证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104102881A true CN104102881A (zh) | 2014-10-15 |
CN104102881B CN104102881B (zh) | 2017-01-04 |
Family
ID=51671024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410321616.9A Active CN104102881B (zh) | 2014-07-07 | 2014-07-07 | 一种基于内核对象链接关系的内存取证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104102881B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104850451A (zh) * | 2015-05-15 | 2015-08-19 | 北京北信源软件股份有限公司 | 一种实现虚拟机与管理域进程间通信的方法 |
CN105573818A (zh) * | 2015-12-14 | 2016-05-11 | 北京北信源软件股份有限公司 | 一种虚拟化环境中的windows内核基地址及编译版本识别方法 |
CN107690628A (zh) * | 2015-06-16 | 2018-02-13 | Arm 有限公司 | 具有所有权表的数据处理装置和方法 |
CN108418813A (zh) * | 2018-02-12 | 2018-08-17 | 北京工业大学 | 一种基于可信时间戳的电子证据监管链的实现方法 |
CN110147671A (zh) * | 2019-05-29 | 2019-08-20 | 北京奇安信科技有限公司 | 一种程序内字符串提取方法及装置 |
CN114826706A (zh) * | 2022-04-13 | 2022-07-29 | 哈尔滨理工大学 | 一种基于计算机内存取证技术的恶意流量检测方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876925B (zh) * | 2009-11-27 | 2012-05-02 | 成都市华为赛门铁克科技有限公司 | 内存镜像处理方法、装置和系统 |
CN102279877B (zh) * | 2011-07-26 | 2013-03-13 | 山东省计算中心 | 一种Mac OS系统的物理内存镜像文件分析方法 |
CN102945288B (zh) * | 2012-11-29 | 2016-01-20 | 重庆邮电大学 | 一种物理内存镜像中文本数据文件提取方法 |
-
2014
- 2014-07-07 CN CN201410321616.9A patent/CN104102881B/zh active Active
Non-Patent Citations (1)
Title |
---|
向涛 等: "Windows 8下基于镜像文件的内存取证研究", 《计算机工程与应用》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104850451A (zh) * | 2015-05-15 | 2015-08-19 | 北京北信源软件股份有限公司 | 一种实现虚拟机与管理域进程间通信的方法 |
CN104850451B (zh) * | 2015-05-15 | 2017-12-22 | 北京北信源软件股份有限公司 | 一种实现虚拟机与管理域进程间通信的方法 |
CN107690628A (zh) * | 2015-06-16 | 2018-02-13 | Arm 有限公司 | 具有所有权表的数据处理装置和方法 |
CN107690628B (zh) * | 2015-06-16 | 2022-01-18 | Arm 有限公司 | 具有所有权表的数据处理装置和方法 |
US11314658B2 (en) | 2015-06-16 | 2022-04-26 | Arm Limited | Apparatus and method including an ownership table for indicating owner processes for blocks of physical addresses of a memory |
CN105573818A (zh) * | 2015-12-14 | 2016-05-11 | 北京北信源软件股份有限公司 | 一种虚拟化环境中的windows内核基地址及编译版本识别方法 |
CN105573818B (zh) * | 2015-12-14 | 2018-09-11 | 北京北信源软件股份有限公司 | 一种虚拟化环境中的windows内核基地址及编译版本识别方法 |
CN108418813A (zh) * | 2018-02-12 | 2018-08-17 | 北京工业大学 | 一种基于可信时间戳的电子证据监管链的实现方法 |
CN108418813B (zh) * | 2018-02-12 | 2020-11-06 | 北京工业大学 | 一种基于可信时间戳的电子证据监管链的实现方法 |
CN110147671A (zh) * | 2019-05-29 | 2019-08-20 | 北京奇安信科技有限公司 | 一种程序内字符串提取方法及装置 |
CN114826706A (zh) * | 2022-04-13 | 2022-07-29 | 哈尔滨理工大学 | 一种基于计算机内存取证技术的恶意流量检测方法 |
CN114826706B (zh) * | 2022-04-13 | 2024-01-30 | 哈尔滨理工大学 | 一种基于计算机内存取证技术的恶意流量检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104102881B (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102881A (zh) | 一种基于内核对象链接关系的内存取证方法 | |
CN105550206B (zh) | 结构化查询语句的版本控制方法及装置 | |
US10175954B2 (en) | Method of processing big data, including arranging icons in a workflow GUI by a user, checking process availability and syntax, converting the workflow into execution code, monitoring the workflow, and displaying associated information | |
US20200142674A1 (en) | Extracting web api endpoint data from source code | |
CN113051268A (zh) | 数据查询方法、数据查询装置、电子设备及存储介质 | |
CN106648569B (zh) | 目标序列化实现方法和装置 | |
US20150331924A1 (en) | Synchronizing endpoint data stores having disparate schemas | |
CN108628885B (zh) | 一种数据同步方法、装置及存储设备 | |
CN108563951A (zh) | 病毒检测方法及装置 | |
CN110618999A (zh) | 数据的查询方法及装置、计算机存储介质、电子设备 | |
CN115150261A (zh) | 告警分析的方法、装置、电子设备及存储介质 | |
CN111460178A (zh) | 一种基于知识图谱的区块链可视化系统 | |
Wei et al. | Loggrep: Fast and cheap cloud log storage by exploiting both static and runtime patterns | |
CN111581217A (zh) | 数据检测方法、装置、计算机设备和存储介质 | |
CN112199443B (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
KR101235042B1 (ko) | Bim데이터파일에 포함된 데이터를 제공하는 방법, 이를 기록한 기록 매체, 및 이를 포함하는 시스템 | |
CN105512270A (zh) | 一种确定相关对象的方法和装置 | |
CN115562993A (zh) | 测试脚本录制方法和装置、电子设备及存储介质 | |
US10423599B2 (en) | Global and local temporary database tables | |
CN106776816A (zh) | 加锁方法和装置 | |
CN113609128A (zh) | 生成数据库实体类的方法、装置、终端设备及存储介质 | |
CN109062797B (zh) | 生成信息的方法和装置 | |
CN105808212A (zh) | 产品支持工具的扩展方法和系统 | |
US20180336287A1 (en) | A system and method for retrieving user specific results upon execution of a query | |
Han et al. | Design and Implementation of Big Data Management Platform for Android Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |