[发明专利]一种Mac OS系统的物理内存镜像文件分析方法无效
申请号: | 201110209546.4 | 申请日: | 2011-07-26 |
公开(公告)号: | CN102279877A | 公开(公告)日: | 2011-12-14 |
发明(设计)人: | 顾卫东;徐丽娟;王连海;武鲁;张淑慧 | 申请(专利权)人: | 山东省计算中心 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F12/02 |
代理公司: | 济南泉城专利商标事务所 37218 | 代理人: | 李桂存 |
地址: | 250014 山东省济*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 mac os 系统 物理 内存 文件 分析 方法 | ||
1.一种Mac OS系统的物理内存镜像文件分析方法,其特征在于,包括以下步骤:
a. 从Mac OS系统的物理内存镜像文件中,判断系统版本信息,进而确定指向内核进程地址空间的最高级页表的指针,内核进程地址空间的最高级页表用于实现内核虚拟地址向物理地址的转换;
b. 获取内核符号表和字符串表,通过内核映像文件在物理内存镜像文件中的副本找到内核符号表和字符串表的虚拟地址,通过分析内核符号表及字符串表可以获得内核变量名及其对应的变量值,内核变量名及其对应的值用于获取物理内存镜像文件中包含的系统配置信息、挂载的文件系统信息、进程信息以及驱动信息;
c.获取指向系统中各个任务的最高级页表的指针,此处获得的各个任务的最高级页表不仅可以实现内核进程地址空间虚拟地址向物理地址的转换,还可以实现除内核进程之外的其他进程地址空间虚拟地址向物理地址的转换。
2.根据权利要求1所述的Mac OS系统的物理内存镜像文件分析方法,其特征在于,所述步骤a中,由于操作系统版本信息存放在名为SystemVersion.plist的文件中,因此根据文件特征,查找物理内存镜像文件,从物理内存镜像文件中找到名为SystemVersion.plist的文件,从中获取系统版本信息;对于版本为Mac OS X 10.5的操作系统,其指向内核进程地址空间的最高级页表的指针值是0x104800,即内核进程地址空间中的最高级页表位于物理内存镜像文件中的偏移0x104800处;对于版本为Mac OS X 10.6的操作系统,其指向内核进程地址空间的最高级页表的指针值是0x100000,即内核进程地址空间的最高级页表位于物理内存镜像文件的偏移0x100000处。
3.根据权利要求1所述的Mac OS系统的物理内存镜像文件分析方法,其特征在于,步骤b中的内核符号表和字符串表的获取,包括以下步骤:
b-1. 确定内核映像文件在物理内存镜像文件中的位置,对于版本为Mac OS X 10.5的操作系统,内核映像文件位于物理内存镜像文件中的偏移0x111000处;对于版本为Mac OS X 10.6的操作系统,内核映像文件位于物理内存镜像文件中的偏移0x200000处;
b-2. 寻找内核映像文件的副本在物理内存镜像文件中的位置,内核映像文件与其副本之间的差别在于这两个文件中记录的_LINKEDIT节中名为vmaddr的值不同,因此,通过以下方法寻找内核映像文件的副本在物理内存镜像文件中的位置:在物理内存镜像文件中,从内核映像文件在物理内存镜像文件中的位置开始,到字段__LINKEIDT结束,复制这一段内容;然后从内存镜像文件中向下寻找这一段内容再次出现的位置;这一段内容再次出现的位置即是内核映像文件的副本在物理内存镜像文件中的位置;内核映像文件的副本找到后,则进行下一步;
b-3. 首先,在物理内存镜像文件中,从内核映像文件副本在物理内存镜像文件中的位置开始,读取内核映像文件副本中记录的_LINKEDIT节的vmaddr和fileoff这两个变量所对应的值;读取命令类型为LC_SYMTAB的命令中记录的symoff和stroff这两个变量所对应的值;然后按照:内核符号表的虚拟地址symvaddr=vmaddr+symoff-fileoff,内核字符串表的虚拟地址straddr= vmaddr+stroff-fileoff,分别计算出内核符号表和内核字符串表的虚拟地址;最后,利用步骤a中实现的内核虚拟地址到物理地址的转换方法,获得符号表的物理地址和字符串表的物理地址。
4.根据权利要求1所述的Mac OS系统的物理内存镜像文件分析方法,其特征在于,步骤c中所述的指向系统中各个任务的最高级页表的指针的获取依次包括以下步骤:
c-1.查找步骤b中获取的内核符号表,从中找到内核变量kernproc所对应的值,把该值作为一个偏移,定位到物理内存镜像文件的该偏移位置处,读取该位置开始处的四个字节的数据,此数据即是位于系统中第一个进程的proc结构的虚拟地址;将该地址转换为物理地址,并记为lastProcAddr,把获得的物理地址作为偏移,定位到物理内存镜像文件的此偏移位置处,得到系统中第一个进程的proc结构;
c-2.在获取的proc结构的偏移0x0c处读取4个字节的数据,该数据为task结构的虚拟地址;
c-3.把上步中获得的虚拟地址转化为物理地址,把物理地址作为偏移,定位到物理内存镜像文件的此偏移位置处,得到task结构;在task结构的偏移0x14处读取由四个字节组成的数据,该数据为vm_map结构的虚拟地址;
c-4.把结构vm_map的虚拟地址转化为物理地址,把物理地址作为偏移,定位到物理内存镜像文件的此偏移位置处,得到vm_map结构;在vm_map结构的偏移0x2c处读取由四个字节组成数据,该数据为pmap结构的虚拟地址;
c-5. 把pmap结构的虚拟地址转换为物理地址,把物理地址作为偏移,定位到物理内存镜像文件的此偏移位置处,得到pmap结构;在该结构的偏移0x54处读取以四个字节组成的值,该值即是指向运行于系统中该进程所对应的任务的最高级页表的指针;
c-6. 返回所获取的进程proc结构的物理地址lastProcAddr,把该物理地址作为偏移,定位到物理内存镜像文件的此偏移位置处,得到已分析过的进程的proc结构, 在该结构的偏移0x04处读取4个字节的数据,该数据为运行于系统中下一个进程的proc结构的虚拟地址;
c-7. 判断步骤c-6中获取的虚拟地址是否为0,如为0,则结束指向系统中各个任务的最高级页表指针的获取;否则,执行步骤c-8;
c-8. 将步骤c-6中获取的虚拟地址转换为物理地址,并记为lastProcAddr,把物理地址作为偏移,定位到物理内存镜像文件的此偏移位置处,获得该进程的proc结构,跳转执行步骤c-2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东省计算中心,未经山东省计算中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110209546.4/1.html,转载请声明来源钻瓜专利网。