深入Windows NT/2000模块的组织(http://webcrazy.yeah.net)

探究Windows 2000/XP原型PTE(http://webcrazy.yeah.net) 探究Windows 2000/XP原型PTE              WebCrazy(http://webcrazy.yeah.net)    内存管理可以说是操作系统实现中最重要的环节,也是最为复杂的一环节。对于相对贫乏的内存资源,内存共享也成了一个很重要的有效手段。Windows 2000/XP在此方面的实现借助于一个称为原型PTE(Prototype PTE,PPTE)的软件机制。在《小 阅读详情
深入Windows NT/2000模块的组织 
                  WebCrazy( http://webcrazy.yeah.net/)

   在《 小议Windows NT/2000分页机制 》中我对x86平台Windows NT/2000的非分页内存内部机制有了较为详细的说明,从中也可以看出地址空间可以分为进程空间与系统空间,其中每个进程有各自的进程空间,而所有的进程则共享同一个系统空间。所以Windows NT/2000在牵涉到模块管理时也涉及到进程私有的模块管理与系统共享模块管理两部分,下面我将从这两方面分别进行介绍。
   正因为所有的进程共享同一个系统空间,所以系统模块主要是些操作系统代码模块或是些设备驱动程序代码等(它们一般进程都需要使用到),其位于系统4G内存的高端。Windows NT/2000内部由一系统变量PsLoadedModuleList指出,其具体结构为一双向链表。熟悉Windows NT/2000的人,都知道系统在发生蓝屏死机时,默认情况下都会将系统此时转储到MEMORY.DMP文件中,系统内核调试器i366kd或windbg在调试跟踪这个转储文件时也会根据这个系统变量重新装入系统崩溃前的已装载模块。我下面列出根据这个变量枚举系统模块的代码:

    //-----------------------------------------------
    //
    // EnumKernelModules
    // Only test on Windows 2000 Server Chinese Edition 
    // Build 2195(Free)!Programmed By WebCrazy
    // ( tsu00@263.net ) on 10-27-2000!
    //
    //-----------------------------------------------

    ULONG PsLoadedModuleList=0x8046a4c0;  //fetch from symbol file
    #define KERNELMOD_IMAGEBASE_OFFSET   0x18
    #define KERNELMOD_IMAGENAME_OFFSET   0x24

    void EnumKernelModules()
    {

        PLIST_ENTRY pKernelModuleListHead, pKernelModuleListPtr;
        PUNICODE_STRING pImageName;

        if(((USHORT)NtBuildNumber)!=2195){
           DbgPrint("Only test on Windows 2000 Server Build 2195!/n");
           return;
        }

        DbgPrint("/n    Base Addr/tModule Name");
        DbgPrint("/n    ---------/t-----------/n");

       pKernelModuleListHead=pKernelModuleListPtr=(PLIST_ENTRY)(ULONG *)PsLoadedModuleList;
         
        do{
            pKernelModuleListPtr=pKernelModuleListPtr->Flink;
            DbgPrint("    %08X",
                     *(ULONG *)((char *)   pKernelModuleListPtr+KERNELMOD_IMAGEBASE_OFFSET));
            pImageName = (PUNICODE_STRING)(ULONG *)((char *)
                        pKernelModuleListPtr+KERNELMOD_IMAGENAME_OFFSET);
            DbgPrint("/t%S/n",pImageName->Buffer);
        }while(pKernelModuleListPtr->Flink!=pKernelModuleListHead);
    }

    上面PsLoadedModuleList的值我直接从Symbol文件中获得,你可根据实际情况予以调整。好,先看看EnumKernelModules输出结果:

    Base Addr   Module Name
    ---------   -----------
    80400000    /WINNT/System32/ntoskrnl.exe
    80062000    /WINNT/System32/hal.dll
        .             .
        .             .
    FD0F8000    /SystemRoot/System32/Drivers/Cdfs.SYS
    FCDB1000    /SystemRoot/System32/DRIVERS/ipsec.sys
        .             .
        .             .

    与Softice的mod命令基本相同,但值得注意的是Softice的mod命令不仅输出进程内核模块,而且也列出特定进程的用户态模块列表,那么系统又是如何管理进程特定模块的呢?

    由于每个进程都拥有各自的模块,而所有这些模块都要求从用户态可以访问到。因此进程模块组织的数据结构应该位于用户态地址空间中,实际上Windows NT/2000进程模块列表是由PEB(Process Environment Block)结构中的成员指定,Windows NT/2000均将每个拥有用户态代码的进程的PEB置于0x7FFDF000处(2G空间以下,用户态代码可直接访问)。不过,Windows NT/2000一般通过TEB间接得到PEB的地址,即通过以下代码取得:
    mov eax,fs:[18]
    mov eax,[eax+30]
    第一条语句获得当前线程的TEB地址,关于TEB及TEB地址的获得,请参阅《 Windows NT/2000内部数据结构探究》,第二条语句获得位于TEB偏移30h处获得PEB地址。我想Windows NT/2000使用这种方法可能是考虑兼容性吧,我以下提供的代码直接使用了常量地址。

    看看Windbg的分析吧:

    > !ntsdexts.version
    Version 5.0 (Build 2195) Uniprocessor Free

    > !ntsdexts.peb
    PEB at 7FFDF000
        InheritedAddressSpace:    No
        ReadImageFileExecOptions: No
        BeingDebugged:            Yes
        ImageBaseAddress:         01000000
        Ldr.Initialized: Yes
        Ldr.InInitializationOrderModuleList: 71f80 . 72808
        Ldr.InLoadOrderModuleList: 71ee0 . 727f8
        Ldr.InMemoryOrderModuleList: 71ee8 . 72800
            01000000 D:/winnt/system32/calc.exe
            77F80000 D:/WINNT/System32/ntdll.dll
            77560000 D:/WINNT/system32/SHELL32.dll
            77F40000 D:/WINNT/system32/GDI32.DLL
            77E60000 D:/WINNT/system32/KERNEL32.DLL
            77DF0000 D:/WINNT/system32/USER32.DLL
            77D90000 D:/WINNT/system32/ADVAPI32.DLL
            77D20000 D:/WINNT/system32/RPCRT4.DLL
            77C50000 D:/WINNT/system32/SHLWAPI.DLL
            77B30000 D:/WINNT/system32/COMCTL32.DLL
            78000000 D:/WINNT/system32/MSVCRT.dll
        SubSystemData:     0
        ProcessHeap:       70000
        ProcessParameters: 20000
            WindowTitle:  'D:/winnt/system32/calc.exe'
            ImageFile:    'D:/winnt/system32/calc.exe'
              .                .
              .                .
              .                .

    Windbg的以上输出详细的显示了PEB各字段值,对其中数据跟踪分析后,我写了以下程序段直接读取系统结构获取进程模块列表:

    //-----------------------------------------------
    //
    // EnumUserModules-information from PEB
    // Only test on Windows 2000 Server Chinese Edition 
    // Build 2195(Free)!Programmed By WebCrazy
    // ( tsu00@263.net ) on 10-27-2000!
    //
    //-----------------------------------------------

    #define PEBADDRESS                 0x7ffdf000
    #define PEB_LDR_DATA_OFFSET        0x0c
    #define LDRDATA_IMAGEBASE_OFFSET   0x10
    #define LDRDATA_IMAGENAME_OFFSET   0x1c

    #pragma pack(4)
    typedef struct _PEB_LDR_DATA
    {
       ULONG Length;
       BOOLEAN Initialized;
       PVOID SsHandle;
       LIST_ENTRY InLoadOrderModuleList;
       LIST_ENTRY InMemoryOrderModuleList;
       LIST_ENTRY InInitializationOrderModuleList;
    } PEB_LDR_DATA, *PPEB_LDR_DATA;
    #pragma pack()

    void EnumUserModules(void *kpeb)
    {
        PLIST_ENTRY pUserModuleListHead, pUserModuleListPtr;
        PPEB_LDR_DATA pLdrData;
        PUNICODE_STRING pImageName;

        if(((USHORT)NtBuildNumber)!=2195){
           DbgPrint("Only test on Windows 2000 Server Build 2195!/n");
           return;
        }

        KeAttachProcess(kpeb);

        pLdrData=(PPEB_LDR_DATA)(ULONG *)(*(ULONG *)(PEBADDRESS+PEB_LDR_DATA_OFFSET));
        if(!pLdrData->Initialized){
           DbgPrint("Process:%08X Not Initialized!/n",(ULONG)kpeb);
           KeDetachProcess();
           return;
        } 

        DbgPrint("/n    Base Addr/tModule Name");
        DbgPrint("/n    ---------/t-----------/n");

        pUserModuleListHead=pUserModuleListPtr=
                (PLIST_ENTRY)&(pLdrData->InMemoryOrderModuleList);
         
        do{
             pUserModuleListPtr=pUserModuleListPtr->Flink;
             DbgPrint("    %08X",*(ULONG *)((char *)
                      pUserModuleListPtr+LDRDATA_IMAGEBASE_OFFSET));
             pImageName = (PUNICODE_STRING)(ULONG *)((char *)
                      pUserModuleListPtr+LDRDATA_IMAGENAME_OFFSET);
             DbgPrint("/t%S/n",pImageName->Buffer);
       }while(pUserModuleListPtr->Flink!=pUserModuleListHead);

       KeDetachProcess();
    }

    EnumUserModules程序段实现对特定进程(由参数kpeb所指定)模块的枚举,函数段并未实现对PEB合法性的检查,如Idle与system进程是纯内核态进程,他们并不存在用户态的PEB,解决办法可以通过检查TEB的合法性,这些进程TEB一般情况下都为0。EnumUserModules也没有对kpeb的合法性检查,其假设所有kpeb当前在系统中都存在,否则将出现意想不到的结果。虽然只涉及到用户态数据的读取,但程序段中使用了KeAttachProcess/KeDetachProcess内核例程,所以程序段只能在驱动代码中实现。EnumUserModules使用InMemoryOrderModuleList成员枚举模块列表的(见上Windbg输出结果,EnumUserModules的输出结果与其一致),当然你也可以使用InInitializationOrderModuleList或InLoadOrderModuleList成员。

  上面已经说明了SoftICE中的mod命令将系统模块与进程模块列出,也就是说其实现了我提供的这两个程序段(SoftICE还输出PE模块的PE Header段,可以根据Base Addr按照PE规范取出PE Header的位置,另外我不确信SoftICE是不是使用同样的方法实现的)。

    不论用户态的可执行Win32模块(.exe)或是核心态的驱动程序(.sys),还是系统动态链接库(.dll)在Windows NT/2000中均是以PE格式存在的,但也未必所有模块均为此格式,实际上所有文件均可以作为模块出现,如常见的nls文件等等。关于PE文件的装载,Windows NT/2000提供了以ldr开头的函数族,至于其结构已众所周知,我将不予介绍。

    Windows 2000中实现了枚举系统模块的PSAPI与ToolHelp API(ToolHelp API在Win9X中早已实现,但Windows NT却仅使用PSAPI函数),我在跟踪分析这部分代码时原以为多少可以参阅一下这些函数的头文件中的一些譬如MODULEENTRY32或MODULEINFO等的定义,但系统内部却使用完全不同的格式.可以这样说系统内部的结构大而全且仅使用UNICODE格式,而这些API仅呈现API使用的部分定义,向用户隐藏了好多的内部特征。不过ToolHelp等使用Section对象(Win32 API称为FileMapping对象)映射整个模块实现模块的枚举,不过其最终都使用到EnumUserModules所引用的PEB数据。关于PEB还包含着许多系统数据,如ProcessHeap、ProcessParameters等等,感兴趣的话可以使用windbg/Softice好好挖掘挖掘!

    参考资料:
      1.David Solomom《Inside Windows NT,2nd Edition》
FreeXer - free X-server-开源 FreeXer 是一个免费的 X 服务器套件。 它将您的 Microsoft Windows 工作站转变为功能齐全的 X Windows 终端。 FreeXer 使用 Cygwin 久经考验的 X-Server,但提供了更好的可用性,相当于可比的商业产品。 立即下载

相关推荐

银河麒麟V10系统下VLC播放器安装全攻略(附3.0.9.2版本离线包下载)

本文详细介绍了在银河麒麟V10操作系统无网络环境下,从零开始编译安装VLC 3.0.9.2播放器的完整攻略。通过构建本地YUM仓库解决依赖问题,提供离线资源包下载,并逐步指导完成编译环境配置、软件编译与安装,帮助用户在国产麒麟系统上成功部署强大的多媒体播放能力。

a2b3c4d5e的博客 1201

freex源码抄写(按需抄写Openspace)+ue5视频1个

freex的四个模块共计408741行(含空格和注释),如果周一到周四每天300行,周六日开着和平精英抄1000行,那就每周3200行,128周,ue独立游戏可以在周一到周四晚上进行,UE C++视频1个+蓝图1个视频,再以渲染(GPU精粹等)泛读催眠。

coder 1249

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

本文将带你从0到1完整搭建一套基于LangChain和AutoGen的多智能体AI投研系统首先,我们会一起梳理智能投研的核心痛点、金融数据的独特性,以及为什么传统AI Agent,尤其是多智能体协同架构,是破局的唯一最优解;RAG检索增强生成(但这次是金融领域定制化的,包括向量检索+时序数据检索+知识图谱检索的“三元检索增强”)、AutoGen多智能体协同框架。

软件工程实践的博客 381

Anchor-Free系列之YOLOX:Exceeding YOLO Series in 2021

Anchor-Free系列之CornerNet: Detecting Objects as Paired Keypoints_程大海的博客-优快云博客 Anchor-Free系列之CenterNet:Objects as Points_程大海的博客-优快云博客 Anchor-Free系列之FCOS:A Simple and Strong Anchor-free Object Detector_程大海的博客-优快云博客 参考:如何评价旷视开源的YOLOX,效果超过YOLOv5? - 知乎.

胖胖大海的博客 4440

ADC(三)Guard ring的设计艺术:从单元到系统的隔离策略

本文深入探讨了ADC设计中Guard ring(保护环)从单元到系统的多层次隔离策略。文章分享了从新手到专家的认知升级过程,详细分析了在单元内部进行微隔离、在模块间建立噪声屏障以及在系统层面规划全局隔离带的实用方法与设计艺术,强调了Guard ring对于提升混合信号电路性能和可靠性的关键作用。

weixin_28312391的博客 150

海康威视摄像机SDK二次开发--提取音频保存至文件

由于最近在开发海康威视摄像头,特此记录一下如何提取音频数据,这里主要依靠语音对讲返回的音频数据,通过回调函数写入文件中,加个WAV头即可播放,编码格式可以自己设置在代码中有注释 文件结构 其中CameraInfo内容可以参看海康威视摄像机SDK二次开发–实时预览视频流保存到指定文件中 HIKSDKSaveRealData中的内容 package ClientDemo; import ClientDemo.CameraInfo; import com.sun.jna.NativeLong; import

RichardoMu的博客 3173

[转载]无法不对你残酷

 作者/安宁(《中国青年报》2005年12月18日) 弟弟第一次到北京读大学的时候,与我是同样的年龄。在父母的眼里,17岁,只不过是个孩子,而且,又是没出过县城连火车也没有见过的农村少年。母亲便打电话给我,说要不你回来接他吧,实在是不放心,那么大的北京,走丢了怎么办?我想起这么多年来,一个人走过的路,很坚决地便拒绝掉了。我说有什么不放心的,一个男孩子,连路都不会走,考上大学有什么用?! 

匆匆 人生 1565

C++(Qt)软件调试---静态分析工具clang-tidy(18)

现在很多人在开发中完全忽略了编译器、IDE的警告提示,这怎么可能写出稳定的程序。 clang-tidy是一个由LLVM项目提供的开源工具,是一个静态分析工具,用于进行静态代码分析和代码质量改进。

mahuifa的博客 5080

FreeXDataSet简介

FreeXDataSet是供FreeXGIS其他系列产品使用的地理信息数据集合。 其中包含了栅格数据(影像数据、高程数据)以及矢量数据; 同时,也提供了数据处理工具,包括原始栅格数据的切片工具、局部拷贝工具等。 产品特性 影像数据统一匀色、切片; 高程数据除脏、切片; 专题数据融合矢量、切片; 高清影像数据时效可以和google等同; 产品功能 影像:全球30米影像,可定制...

lavanana的博客 382

openpi 入门教程(二)droid libero 训练、推理

OpenPI是由物理智能团队发布的机器人领域开源模型与软件平台,提供基于流扩散式(π₀)和自回归式(π₀-FAST)两类视觉-语言-动作模型。平台支持在DROID、ALOHA、UR5等多种机器人系统上部署,包含预训练检查点(1万+小时数据)和微调示例。文档详细说明了各平台部署流程:DROID需启动策略服务器并配置摄像头;ALOHA提供真实机器人任务(取吐司、叠毛巾等)的检查点和场景设置建议;UR5示例展示自定义数据转换方法。实验性验证显示π₀-FAST在LIBERO基准测试中平均得分85.5。平台强调模型适

2506_90492529的博客 1023

YOLOv8 眼底病变检测(眼底照片)详细说明

本文介绍了基于YOLOv8的眼底病变自动检测系统。该系统可识别糖尿病视网膜病变、青光眼等5类常见眼底病变,包括微动脉瘤、出血点等特征。核心技术包含图像预处理、模型训练、病变检测与量化分析三个模块,采用1024×1024高分辨率输入,针对医学图像特点优化数据增强策略。系统支持批量处理、可视化标注和临床报告生成,提供病变数量、面积密度和严重程度评分等量化指标。特别强调医学合规性要求,需专业医生参与数据标注和模型验证,符合医疗器械认证标准。该系统可作为眼科医生的辅助诊断工具,提高眼底病变筛查效率。

u010117029的博客 133

FreeXFrameWork简介

FreeXFrameWork是一款基于OSGI开发的插件化桌面应用框架. 依托组件化的技术,提供了桌面端应用系统的开发框架。 主要有插件管理功能、系统管理功能、缓存机制以及运行日志系统。 产品特性 产品性能 了解更多~ www.henggetec.com ...

lavanana的博客 1049

uniapp [全端兼容] - 详细实现用户电子签名 “逐字校验“ 将姓名按字拆开分别手写签署签字,把客户名字自动拆成单独的文字并由用户逐个依次签名与汉字笔画校验,支持汉字格、田字格、米字格、方格等!

uniapp,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,手写签名,电子签署,逐个字挨着写,写名字,将客户姓名分成单独的文字并依次手写,在田字格里写名字,米字格,方格,合同,书写轨迹,验证手写的文字是否正确,如何在uni-app做姓名拆分成独立的文字后手写每一个字,校验正确性,画板,汉字生成在米字格里并且让用户去写,如何画一个汉字田字格,vue把姓名拆分单独写签名,文字,拆掉,中文汉字网格,一个字一个字签名,一次只签名一个文字,判断签名的文字笔画是否正确,Un

🏆 前端领域优质创作者 1万+

解析Windows NT/2000窗口对象的组织(http://webcrazy.yeah.net/)

解析Windows NT/2000窗口对象的组织                        WebCrazy(http://webcrazy.yeah.net/)   Microsoft Visual Studio提供的Microsoft Spy对Windows的窗口组织有非常直观的表现,在Windows视图下的Window Properties可以显示窗口的很多内容或属性。本文将从Windo

FreeXploiT 2165

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

再谈Windows NT/2000环境切换(http://webcrazy.yeah.net)

再谈Windows NT/2000环境切换                           WebCrazy(tsu00@263.net)    线程是Windows NT/2000环境切换的最基本单位。在浅析Windows NT/2000环境切换>>(Nsfocus Magazine 12)一文中,我只对进程CR3切换进行了较详细的讨论,但未涉及线程调度的内容,本文将尽量讲述这些部分内容。在

FreeXploiT 2805

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

浅析Windows NT/2000环境切换(http://webcrazy.yeah.net)

浅析Windows NT/2000环境切换                  WebCrazy(tsu00@263.net)                       注:本文最初见于www.nsfocus.com    本文假设您已经了解Windows NT/2000系统体系,对Windows NT/2000内部KPEB/KTEB等数据结构与内核工作方式已有一定的概念,对80x86保护模式,I

FreeXploiT 2139

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

小议Windows NT/2000分页机制(http://webcrazy.yeah.net)

 小议Windows NT/2000分页机制                     WebCrazy(tsu00@263.net)    内存管理是操作系统最重要的一部分,其决定了操作系统的性能。Intel X86采用分段、分页的内存机制,Windows NT/2000充分利用了此项先进的机制。段内IA-32体系使用页目录(Page Directory)与页表(Page Table,SoftIC

FreeXploiT 1966

再谈Windows NT/2000内部数据结构(http://webcrazy.yeah.net)

再谈Windows NT/2000内部数据结构               WebCrazy(tsu00@263.net)                        注:本文最初见于www.nsfocus.com     现在我们结合Regmon(http://www.sysinternals.com/)在NT中的实现方法再来谈谈Windows NT/2000内部数据结构。    Regmon

FreeXploiT 1432

Windows 2000 System Services列表(http://webcrazy.yeah.net)

Windows 2000 System Services列表              WebCrazy(tsu00@263.net)    Windows 2000 Server Build 2195 SP0 中文版共从ntoskrnl.exe(x86单处理器版本)中导出248个System Services,而从win2k.sys中导出639个System Services。SoftICE f

FreeXploiT 5136

Windows XP System Services(http://webcrazy.yeah.net)

 Windows XP System Services              WebCrazy(http://webcrazy.yeah.net)    在《再谈Windows NT/2000内部数据结构》一文中我曾经介绍过Windows 2000 System Call。如今Windows XP正式版已经出来了。从总的System Call的组织上看是没有多大的改变。System Call调

FreeXploiT 6510

浅谈Windows 2000/XP File Cache实现(http://webcrazy.yeah.net)

  浅谈Windows 2000/XP File Cache实现              WebCrazy(http://webcrazy.yeah.net)    声明:本文所叙内容为Windows NT/2000/XP的Cache管理内容,涉及内容均为Microsoft Undocumented内容。我在参考大量资料后分析而成,牵涉内容多多少少可能会有些许错误,甚至根本就是错误的,但本着学习

FreeXploiT 2380

Windows 2000内核KPEB/KTEB详细结构(http://webcrazy.yeah.net/)

Windows 2000内核KPEB/KTEB详细结构            WebCrazy(http://webcrazy.yeah.net/)    EPROCESS与ETHREAD结构在Windows NT/2000内核的地位是不言而喻的。他们结构中的成员包含了内核的方方面面,是两个比较大的结构。在Windows 2000 Server Build 2195 Free Ke

FreeXploiT 2134

剖析Windows NT/2000内核对象组织(http://webcrazy.yeah.net)

剖析Windows NT/2000内核对象组织                     WebCrazy(http://webcrazy.yeah.net/)    对象管理器在Windows NT/2000内核中占了极其重要的位置,其一个最主要职能是组织管理系统内核对象。在Windows NT/2000中,内核对象管理器大量引入了C++面向对象的思想,即所有内核对象都封装在对象管理器内部,除对象

FreeXploiT 1671

分析Windows NT/2000堆内存与虚拟内存组织(http://webcrazy.yeah.net)

 分析Windows NT/2000堆内存与虚拟内存组织                      WebCrazy(http://webcrazy.yeah.net/)    在讨论今天这个主题时,我觉得是应该给大家重复推介以下两本书:    Matt Pietrek        >    Jeffrey Richter        >    两者分别从核心态与用户态出发全面阐述了Windo

FreeXploiT 1673

Windows NT/2000内部数据结构探究(http://webcrazy.yeah.net)

 Windows NT/2000内部数据结构探究                    WebCrazy(tsu00@263.net)                         注:本文最初见于www.nsfocus.com    WINDOWS系统隐含了不少内部数据结构,其记录着与系统相关的所有重要信息如线程、进程、内核调用等等,具体如Windows NT/2000模块ntoskrnl.e

FreeXploiT 1399

Windows NT/2000/XP下不用驱动的Ring0代码实现(http://webcrazy.yeah.net)

 Windows NT/2000/XP下不用驱动的Ring0代码实现                  WebCrazy(http://webcrazy.yeah.net/)     大家知道,Windows NT/2000为实现其可靠性,严格将系统划分为内核模式与用户模式,在i386系统中分别对应CPU的Ring0与Ring3级别。Ring0下,可以执行特权级指令,对任何I/O设备都有访问权等等

FreeXploiT 1614
上一篇: Windows 2000 System Services列表(http://webcrazy.yeah.net)
下一篇: 剖析Windows NT/2000内核对象组织(http://webcrazy.yeah.net)
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值