windows实验Wrk源码编译与进程模块分析.docx

上传人:b****2 文档编号:23479591 上传时间:2023-05-17 格式:DOCX 页数:11 大小:944.36KB
下载 相关 举报
windows实验Wrk源码编译与进程模块分析.docx_第1页
第1页 / 共11页
windows实验Wrk源码编译与进程模块分析.docx_第2页
第2页 / 共11页
windows实验Wrk源码编译与进程模块分析.docx_第3页
第3页 / 共11页
windows实验Wrk源码编译与进程模块分析.docx_第4页
第4页 / 共11页
windows实验Wrk源码编译与进程模块分析.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

windows实验Wrk源码编译与进程模块分析.docx

《windows实验Wrk源码编译与进程模块分析.docx》由会员分享,可在线阅读,更多相关《windows实验Wrk源码编译与进程模块分析.docx(11页珍藏版)》请在冰豆网上搜索。

windows实验Wrk源码编译与进程模块分析.docx

windows实验Wrk源码编译与进程模块分析

Wrk源码编译与进程模块分析

实验人员:

实验内容:

1.在虚拟机上装载windows2003SP1,编译wrk,用编译后的内核重新启动操作系统

2.列举wrk进程模块分析

实验目的:

通过实验,将操作系统基本原理和商业操作系统内核联系起来,进一步加深对操作系统整体的理解。

实验过程:

Wrk源码编译

1.虚拟机环境搭建。

使用软件VirtualBox,安装WindowsServer2003sp1

2.将WRK源码拷贝到系统下C盘,将文件夹取名wrk

3. 将系统中的环境变量Path设置为C:

\wrk\tools\x86;%path%

4.(在命令提示符中输入)cdc:

\wrk\base\ntos

5. (在命令提示符中输入)nmake-nologox86=

(内核正在编译...编译完后在wrk\base\ntos\BUILD\EXE下生成内核文件)

编译过程出现找不到msvcr71.dll和MSVCP71.DLL两个文件,原因是VC7运行库中缺少这两个文件,直接从网上下载后拷进\WINDOWS\system32\即可

6.成功编译后,将wrk\base\ntos\BUILD\EXE下的内核文件wrkx86.exe拷贝到C:

\windows\system32下

7.(在命令提示符中输入)在C:

\windows\system32路径下输入link-dump-allhal.dll|findstrpdb命令,查看你的hal按照下面对照:

  halacpi.dll->halacpim.dll;ACPIPIC-basedPC[usedbyVirtualPC]

halaacpi.dll->halmacpi.dll;ACPIAPIC-basedPC

halapic.dll->halmps.dll;MPS

8.进入C:

\wrk\WS03SP1HALS\x86目录下,将相应的hal文件夹下的文件(2个)拷贝到C:

\windows\system32下

9.在“我的电脑”上右击鼠标,在弹出菜单中选择“属性”,打开系统属性

对话框,选中高级选项卡,在“启动与故障与修复”栏中单击“设置”按钮,弹出“启动与故障与修复”,在其中单击“编辑”按钮,将在记事本中打开boot.ini

在最后一行加入:

multi(0)disk(0)rdisk(0)partition

(1)\WINDOWS="test"/kernel=wrkx86.exe/hal=hamacpim.dll

10. 重新启动,进入新编译好的内核,wrk的编译也就成功了

wrk进程模块源码分析

列举出所有加载到进程的模块,是所有安全软件都要实现的功能,在psapi.dll中有一组函数可以达到这个目的。

现在来实现这个功能。

      

                         进程环境块(processenvironmentblock)

    要想列举出进程的模块,首先要了解进程环境块的概念。

进程环境块是一个数据结构,它寄宿在EPROCESS结构中。

找到它的结构定义,

    如下:

   typedef struct _PEB { 

        BYTEReserved1[2]; 

        BYTEBeingDebugged; 

        BYTEReserved2[1]; 

        PVOIDReserved3[2]; 

        PPEB_LDR_DATALdr; 

        PRTL_USER_PROCESS_PARAMETERSProcessParameters; 

        BYTEReserved4[104]; 

        PVOIDReserved5[52]; 

        PPS_POST_PROCESS_INIT_ROUTINEPostProcessInitRoutine; 

        BYTEReserved6[128]; 

        PVOIDReserved7[1]; 

        ULONGSessionId;

} PEB,  *PPEB;

 

 //inntpsapi.h

   typedef struct _PEB_LDR_DATA {

    ULONGLength;

    BOOLEANInitialized;

    HANDLESsHandle;

    LIST_ENTRYInLoadOrderModuleList;

    LIST_ENTRYInMemoryOrderModuleList;

    LIST_ENTRYInInitializationOrderModuleList;

    PVOIDEntryInProgress;

    } PEB_LDR_DATA,*PPEB_LDR_DATA;

   

   结构中包含有三个双向链表结构,这三个都是KLDR_DATA_TABLE_ENTRY的双向链表

用dd命令获取PEB地址内容,发现内容全是?

这表明这是一个不能访问的地址,最终确定这个地址是进程所私有的,而不是在所有进程所共享的内核空间里。

 搜索代码中所有对EPROCESS中的Peb的引用,最终发现了一个函数:

KeAttachProcess。

这是ntoskrnl.exe中的导出函数,就是它了,我们在每次访问peb之前,先调用KeAttachProcess,完成访问后再调用KeDetachProcess

进程基本结构

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1