<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[xiaoweitech]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[发布一些原创工具和文章。]]></description>
<link>http://hi.baidu.com/xiaoweitech</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[换新空间]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/de2fd6d7cdcf14dba044df6f.html]]></link>
        <description><![CDATA[
		
		由于 baidu 空间不能上传附件，非常不方便。和两个朋友一起弄了个新网站，主要关注调试和 Windows 内核方面的内容，欢迎大家访问。本空间的文章和软件也会陆续转移到新网站里面。另外，强烈推荐大家访问我们新空间里面的 <a href="http://www.dbgtech.net/windbghelp/index.html" target="_blank">WinDbg 帮助中文翻译</a>，对于学习 WinDbg 的使用非常有帮助。<br>
<br>
新网站：DbgTech (<a href="http://www.dbgtech.net" target="_blank">http://www.dbgtech.net</a>)<br> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/de2fd6d7cdcf14dba044df6f.html#comment">查看评论</a>]]></description>
        <pubDate>2008-09-02  10:05</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/de2fd6d7cdcf14dba044df6f.html</guid>
</item>

<item>
        <title><![CDATA[转一个小技巧：利用内核调试器跳过登陆 Windows 时的密码验证]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/18dba6d94e8c2dec39012fde.html]]></link>
        <description><![CDATA[
		
		<p>在 <a href="http://www.nynaeve.net/?p=136">http://www.nynaeve.net/?p=136</a> 看到一个小技巧，转过来备份。</p>
<p>忘记了 Windows 密码时可以通过调试方式启动系统，连上内核调试器，在登陆界面处输入下面的命令：</p>
<p>kd&gt; !process 0 0 lsass.exe<br>
PROCESS 81378338  SessionId: 0  Cid: 01ac&nbsp;&nbsp;&nbsp;  Peb: 7ffd4000  ParentCid: 0174<br>
&nbsp;&nbsp;&nbsp;  DirBase: 0acf9000  ObjectTable: e12dd2e8  HandleCount: 411.<br>
&nbsp;&nbsp;&nbsp;  Image: lsass.exe</p>
<p>kd&gt; .process /i 0x81378338<br>
You need to continue execution (press 'g' &lt;enter&gt;) for the context<br>
to be switched. When the debugger breaks in again, you will be in<br>
the new process context.<br>
kd&gt; g<br>
Break instruction exception - code 80000003 (first chance)<br>
nt!RtlpBreakWithStatusInstruction:<br>
8081d97e cc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  int&nbsp;&nbsp;&nbsp;&nbsp;  3<br>
kd&gt; .reload<br>
kd&gt; ba e1 msv1_0!MsvpPasswordValidate &quot;g @$ra; r @al = 0x1; g&quot;<br>
kd&gt; g</p>
<p>然后用任意密码就可以登陆系统，某些时候很有用。</p>
<p>如果没有设置调试启动项的，在启动时按 F8 键选择调试模式，Window 会缺省使用 COM2 端口，19200 波特率启动系统。Vista 系统上如果有 1394 口，会使用 1394 端口，缺省 channel 为 0。</p>
<p> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%B5%F7%CA%D4%BC%BC%CA%F5">调试技术</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/18dba6d94e8c2dec39012fde.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-26  10:52</pubDate>
        <category><![CDATA[调试技术]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/18dba6d94e8c2dec39012fde.html</guid>
</item>

<item>
        <title><![CDATA[修改 vmkd 支持 VMware Workstation]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/0b691080d4b220d29123d9cc.html]]></link>
        <description><![CDATA[
		
		<p>vmkd 可以大大提高内核调试虚拟机的反应速度，但 VMware server 用起来很不方便，不支持直接从主机拖放文件，每次都得从网络上传。所以花了点时间把 vmkd 修改了一下，现在支持在 VMware Workstation 上使用。vmkd 的原理可以去作者网站上查看，大概是截获内核调试引擎和远程调试器通信的过程，用快速的传输数据方法替换了原来的模拟串口方法，从而加速了内核调试时的响应速度。传输数据时用到了 VMware 提供的 0x12 后门指令，直接和主机上的 vmware-vmx.exe 进程通信，把需要传输的数据存放到某个内存，由注入到 vmware-vmx.exe 进程的 vmxpatch.dll 读取出来后通过新的管道发给调试器。0x12 后门指令由 vmware-vmx.exe 进程中的某一段代码负责响应，vmxpatch.dll 注入时会通过特征码查找这一段代码，因为 VMware Workstation 和 VMware server 这一段代码的特征码不一样，所以 vmkd 查找失败，不支持 VMware Workstation。把 vmxpatch.dll 中的这段特征码修改一下就能实现对 VMware Workstation 的支持。</p>
<p> <img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/xiaoweitech/pic/item/e29568b7ef4aaae630add177.jpg"></p>
<p> <img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/xiaoweitech/pic/item/5eca3d11c905d0d4a6ef3f71.jpg"></p>
<p>修改后的 vmxpatch.dll 和之前的文件有这两个差异。</p>
<p> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%B5%F7%CA%D4%BC%BC%CA%F5">调试技术</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/0b691080d4b220d29123d9cc.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-26  10:22</pubDate>
        <category><![CDATA[调试技术]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/0b691080d4b220d29123d9cc.html</guid>
</item>

<item>
        <title><![CDATA[LiveDump - 本机动态生成完整内核 dump 文件]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/f1872c031faca6723912bb5b.html]]></link>
        <description><![CDATA[
		
		<div style="line-height: 18px;" class="bword"><font size="2" face="宋体">LiveDump by 小喂<br>
<br>
模仿 livekd 写的一个工具，可以在本机上动态生成完整内核 dump 文件，方便本机内核调试，或者事后调试，可能对于保存当前系统状态也有点用。和 livekd 不同，livedump 生成的是一个完整 dump 文件，而没有采用文件过滤驱动的方式。当前支持 xp 以后的 32 位系统，但我只在 32 位 xpsp2 和 vista 系统上测试通过，使用过程产生的任何问题请自己负责。<br>
<br>
<br>
D:\WinDBG&gt;livedump d:\DmpFiles\live_vista.dmp<br>
<br>
LiveDump v1.0 - Generate full kernel mode dump file on a live system<br>
xiaoweitech - http://hi.baidu.com/xiaoweitech<br>
Copyright (C) 2008 xiaowei<br>
Usage: livedump [dump file name]<br>
<br>
<br>
start dump ... successed!<br>
<br>
D:\WinDBG&gt;kd -z d:\DmpFiles\live_vista.dmp<br>
<br>
Microsoft (R) Windows Debugger Version 6.8.0004.0 X86<br>
Copyright (c) Microsoft Corporation. All rights reserved.<br>
<br>
<br>
Loading Dump File [d:\DmpFiles\live_vista.dmp]<br>
Kernel Complete Dump File: Full address space is available<br>
<br>
Comment: 'This dump file is generated by LiveDump (http://hi.baidu.com/xiaoweitech)'<br>
Symbol search path is: srv*E:\WebSymbols*http://msdl.microsoft.com/download/symbols<br>
Executable search path is:<br>
Windows Vista Kernel Version 6000 MP (2 procs) Free x86 compatible<br>
Product: WinNt, suite: TerminalServer SingleUserTS<br>
Built by: 6000.16584.x86fre.vista_gdr.071023-1545<br>
Kernel base = 0x82000000 PsLoadedModuleList = 0x82111e10<br>
Debug session time: Sun Apr 13 21:13:58.005 2008 (GMT+8)<br>
System Uptime: 49336 days 0:17:26.005<br>
Loading Kernel Symbols<br>
........................................................................................................................<br>
.....................................<br>
Loading User Symbols<br>
<br>
Loading unloaded module list<br>
..........<br>
*******************************************************************************<br>
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  *<br>
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Bugcheck Analysis&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  *<br>
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  *<br>
*******************************************************************************<br>
<br>
Use !analyze -v to get detailed debugging information.<br>
<br>
BugCheck 1E, {80000003, df9734b0, 0, 0}<br>
<br>
*** ERROR: Module load completed but symbols could not be loaded for LDumpDrv.sys<br>
<br>
<br>
<br>
<br>
Probably caused by : Unknown_Image ( LDumpDrv+4b0 )<br>
<br>
Followup: MachineOwner<br>
---------<br>
<br>
16.0: kd&gt; vertarget<br>
Windows Vista Kernel Version 6000 MP (2 procs) Free x86 compatible<br>
Product: WinNt, suite: TerminalServer SingleUserTS<br>
Built by: 6000.16584.x86fre.vista_gdr.071023-1545<br>
Kernel base = 0x82000000 PsLoadedModuleList = 0x82111e10<br>
Debug session time: Sun Apr 13 21:13:58.005 2008 (GMT+8)<br>
System Uptime: 49336 days 0:17:26.005<br>
<br>
16.0: kd&gt; !process 0 0 explorer.exe<br>
PROCESS 862b4d90  SessionId: 1  Cid: 0374&nbsp;&nbsp;&nbsp;  Peb: 7ffd8000  ParentCid: 021c<br>
&nbsp;&nbsp;&nbsp;  DirBase: 685ed360  ObjectTable: 9d1817c0  HandleCount: 810.<br>
&nbsp;&nbsp;&nbsp;  Image: explorer.exe<br>
<br>
16.0: kd&gt; !pcr<br>
KPCR for Processor 0 at 820f4700:<br>
&nbsp;&nbsp;&nbsp;  Major 1 Minor 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NtTib.ExceptionList: ffffffff<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NtTib.StackBase: 00000000<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NtTib.StackLimit: 00000000<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NtTib.SubSystemTib: 8014f000<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NtTib.Version: 03dc94a2<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NtTib.UserPointer: 00000001<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NtTib.SelfTib: 00000000<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  SelfPcr: 820f4700<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Prcb: 820f4820<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Irql: 00000002<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  IRR: 00000000<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  IDR: ffffffff<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  InterruptMode: 00000000<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  IDT: 81c7f400<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  GDT: 81c7f000<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TSS: 8014f000<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  CurrentThread: 820f8300<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NextThread: 00000000<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  IdleThread: 820f8300<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DpcQueue:<br>
16.0: kd&gt; !object \Driver<br>
Object: 88a68958  Type: (84057d40) Directory<br>
&nbsp;&nbsp;&nbsp;  ObjectHeader: 88a68940 (old version)<br>
&nbsp;&nbsp;&nbsp;  HandleCount: 0  PointerCount: 103<br>
&nbsp;&nbsp;&nbsp;  Directory Object: 88a07488  Name: Driver<br>
<br>
&nbsp;&nbsp;&nbsp;  Hash Address  Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Name<br>
&nbsp;&nbsp;&nbsp;  ---- -------  ----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ----<br>
&nbsp;&nbsp;&nbsp;&nbsp;  00  86191880 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Beep<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85ce0570 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  al3uov8c<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  8541eac8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  KSecDD<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84f0d768 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NDIS<br>
&nbsp;&nbsp;&nbsp;&nbsp;  01  85d15c28 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mouclass<br>
&nbsp;&nbsp;&nbsp;&nbsp;  02  86ab0b08 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  CMB8100<br>
&nbsp;&nbsp;&nbsp;&nbsp;  03  847280d8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  LDumpDrv<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85e81778 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  kbdclass<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  856240d0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  IntcAzAudAddService<br>
&nbsp;&nbsp;&nbsp;&nbsp;  04  86191e30 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VgaSave<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  8604f528 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NDProxy<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84e32dd8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  msisadrv<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  867221b8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  monitor<br>
&nbsp;&nbsp;&nbsp;&nbsp;  05  84f07d78 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ecache<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84e3f760 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  MountMgr<br>
&nbsp;&nbsp;&nbsp;&nbsp;  06  85ca7438 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ohci1394<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  86376d38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  CMBProtector<br>
&nbsp;&nbsp;&nbsp;&nbsp;  08  84eb65b8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  atapi<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  861604b8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  PEAUTH<br>
&nbsp;&nbsp;&nbsp;&nbsp;  09  84eb5ef0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  JRAID<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84eb6908 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  volmgrx<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  8405bd28 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  PCI_NTPNP9580<br>
&nbsp;&nbsp;&nbsp;&nbsp;  10  84a10030 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  USBSTOR<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  862adcd8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  PSched<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  861e5158 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  RasAcd<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85dad318 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VMnetAdapter<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85c7cec8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tunmp<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84dbc368 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sptd<br>
&nbsp;&nbsp;&nbsp;&nbsp;  11  85ca5f38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  usbuhci<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  8641bb28 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mouhid<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  865e5860 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Win32k<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  86cabb68 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VMnetuserif<br>
&nbsp;&nbsp;&nbsp;&nbsp;  12  869c0bf8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VMnetBridge<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85de4d30 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  usbhub<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85d14f38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  swenum<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85d1dcd0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  rdpdr<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85b93ad0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tunnel<br>
&nbsp;&nbsp;&nbsp;&nbsp;  13  861ec740 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  RDPCDD<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85ce6ac0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  RasPppoe<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  86a378b0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  HTTP<br>
&nbsp;&nbsp;&nbsp;&nbsp;  14  85d94030 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TermDD<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85be6880 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  MTsensor<br>
&nbsp;&nbsp;&nbsp;&nbsp;  15  85ceac48 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Rasl2tp<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84f01c78 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  JGOGO<br>
&nbsp;&nbsp;&nbsp;&nbsp;  17  84b5c150 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WUDFRd<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85cf1f38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  umbus<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85ce5f38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VPCNetS2<br>
&nbsp;&nbsp;&nbsp;&nbsp;  18  862c9cb8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Smb<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  861a7f38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WlanUIG<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85d1df38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  PptpMiniport<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85cf6760 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Serenum<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85b0cb68 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  crcdisk<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84f0b750 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  CLFS<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  840a3960 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WMIxWDM<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  840a3f38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ACPI_HAL<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  86b0c680 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  secdrv<br>
&nbsp;&nbsp;&nbsp;&nbsp;  19  84fda390 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  spldr<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  869557b0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  hcmon<br>
&nbsp;&nbsp;&nbsp;&nbsp;  21  8695fe20 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NativeWifiP<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  862c9838 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  netbt<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85c449e0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  AtcL001<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  86b5ed40 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tcpipreg<br>
&nbsp;&nbsp;&nbsp;&nbsp;  22  861a8b50 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  RDPENCDD<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85c990d0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  cdrom<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85d14e40 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mssmbios<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85cea8d8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  iScsiPrt<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84e3f668 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  pciide<br>
&nbsp;&nbsp;&nbsp;&nbsp;  23  869d8830 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  rspndr<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  863392e8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tdx<br>
&nbsp;&nbsp;&nbsp;&nbsp;  24  84f6ff38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fvevol<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  861e5998 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Tcpip<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  8694ce90 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mpsdrv<br>
&nbsp;&nbsp;&nbsp;&nbsp;  25  84fbbab8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  volsnap<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  862ab030 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  nsiproxy<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84ebbdd8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  volmgr<br>
&nbsp;&nbsp;&nbsp;&nbsp;  26  85c7dcb0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  intelppm<br>
&nbsp;&nbsp;&nbsp;&nbsp;  27  869d2030 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  lltdio<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  8645f580 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ZSMC301b<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  86329578 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Wanarpv6<br>
&nbsp;&nbsp;&nbsp;&nbsp;  28  86158150 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Null<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85be0758 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  usbehci<br>
&nbsp;&nbsp;&nbsp;&nbsp;  29  8541e2a0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  disk<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  862d7200 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  CSC<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84ebb380 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  pci<br>
&nbsp;&nbsp;&nbsp;&nbsp;  30  84fda498 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  partmgr<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85cdc8c8 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Serial<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85d1d030 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NdisTapi<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85d92ec0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  NdisWan<br>
&nbsp;&nbsp;&nbsp;&nbsp;  31  862e3568 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  vmm<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85c429e0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  HDAudBus<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85c85f38 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DXGKrnl<br>
&nbsp;&nbsp;&nbsp;&nbsp;  32  840513e0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ACPI<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  84dd6710 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Wdf01000<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  869d4030 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  vmx86<br>
&nbsp;&nbsp;&nbsp;&nbsp;  33  840a2300 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  PnpManager<br>
&nbsp;&nbsp;&nbsp;&nbsp;  34  8470c9a0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  PROCEXP111<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  869da840 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ndisuio<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  8633f890 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  AFD<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  85be29e0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  nvlddmkm<br>
&nbsp;&nbsp;&nbsp;&nbsp;  35  86409b88 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  HidUsb<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  868aa768 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  vstor2<br>
&nbsp;&nbsp;&nbsp;&nbsp;  36  85cdcca0 Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  i8042prt<br>
16.0: kd&gt;<br>
<br>
下面给出 dump 文件头格式给大家参考：<br>
<br>
typedef struct _DUMP_HEADER32 /* sizeof = 0x1000 */<br>
{<br>
/* 000 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulSignature;<br>
/* 004 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulValidDump;<br>
/* 008 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulMajorVersion;<br>
/* 00C */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulMinorVersion;<br>
/* 010 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulDirectoryTableBase;<br>
/* 014 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulPfnDataBase;<br>
/* 018 */&nbsp;&nbsp;  PLIST_ENTRY PsLoadedModuleList;<br>
/* 01C */&nbsp;&nbsp;  PLIST_ENTRY PsActiveProcessHead;<br>
/* 020 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulMachineImageType;<br>
/* 024 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulNumberProcessors;<br>
/* 028 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulBugCheckCode;<br>
/* 02C */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulBugCheckParameter1;<br>
/* 030 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulBugCheckParameter2;<br>
/* 034 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulBugCheckParameter3;<br>
/* 038 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulBugCheckParameter4;<br>
/* 03C */&nbsp;&nbsp;  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  szVersionUser[32];<br>
/* 05C */&nbsp;&nbsp;  BOOLEAN&nbsp;&nbsp;&nbsp;&nbsp;  bPaeEnabled;<br>
/* 05D */&nbsp;&nbsp;  UCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  uchKdSecondaryVersion;<br>
/* 05E */&nbsp;&nbsp;  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  chUnused1[2];<br>
/* 060 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulKdDebuggerDataBlock;<br>
/* 064 */&nbsp;&nbsp;  PHYSICAL_MEMORY_DESCRIPTOR  stPhysMemDesc;<br>
/* 074 */&nbsp;&nbsp;  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  chUnused2[684];<br>
/* 320 */&nbsp;&nbsp;  CONTEXT&nbsp;&nbsp;&nbsp;&nbsp;  stContext;<br>
/* 5EC */&nbsp;&nbsp;  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  chUnused3[484];<br>
/* 7D0 */&nbsp;&nbsp;  EXCEPTION_RECORD32  stExceptionRecord;<br>
/* 820 */&nbsp;&nbsp;  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  szComment[1896];<br>
/* F88 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulDumpType;<br>
/* F8C */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulMiniDumpFields;<br>
/* F90 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulSecondaryDataState;<br>
/* F94 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulProductType;<br>
/* F98 */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulSuiteMask;<br>
/* F9C */&nbsp;&nbsp;  ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ulWriterStatus;<br>
/* FA0 */&nbsp;&nbsp;  ULONG64&nbsp;&nbsp;&nbsp;&nbsp;  ulFileSize;<br>
/* FA8 */&nbsp;&nbsp;  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  chUnused4[16];<br>
/* FB8 */&nbsp;&nbsp;  ULONG64&nbsp;&nbsp;&nbsp;&nbsp;  ulSystemUptime;<br>
/* FC0 */&nbsp;&nbsp;  ULONG64&nbsp;&nbsp;&nbsp;&nbsp;  ulDebugSessionTime;<br>
/* FC8 */&nbsp;&nbsp;  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  chUnused5[56];<br>
} DUMP_HEADER32, *PDUMP_HEADER32;<br>
<br>
这里还有一篇文章介绍了 dump 文件格式：<br>
<br>
http://wasm.ru/article.php?article=dmp_format<br>
<br>
</font></div>
<div style="padding: 5px;"><fieldset class="fieldset">      <legend><font size="2" face="宋体">上传的附件</font></legend>
<table cellspacing="3" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><font size="2" face="宋体"><img width="16" height="16" border="0" style="vertical-align: baseline;" alt="文件类型: zip" src="http://bbs.pediy.com/images/pediy_style/attach/zip.gif" class="inlineimg" title="文件类型: zip"></font></td>
            <td><font size="2" face="宋体"><a href="http://bbs.pediy.com/attachment.php?attachmentid=13213&amp;d=1208094148">LiveDump.zip</a> (2008-04-13 </font><font size="2" face="宋体" color="#666666">21:42</font><font size="2" face="宋体">, 33.9 KB, 1 次下载)</font></td>
        </tr>
    </tbody>
</table>
</fieldset></div>
<div class="smallfont"><font size="2" face="宋体"><br>
<em>               </em></font></div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%B5%F7%CA%D4%BC%BC%CA%F5">调试技术</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/f1872c031faca6723912bb5b.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-13  22:06</pubDate>
        <category><![CDATA[调试技术]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/f1872c031faca6723912bb5b.html</guid>
</item>

<item>
        <title><![CDATA[VistaLKD - 动态开启 vista 系统本机内核调试功能]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/2a344ddd735aa2315982dd58.html]]></link>
        <description><![CDATA[
		
		<div class="bword" style="line-height: 18px;"><font size="2" face="宋体"> VistaLKD by 小喂<br>
<br>
WinDbg 的本机内核调试是个很强大的功能，可以查看修改内核信息。但从 Vista 系统以后，缺省不能使用本机内核调试功能，只能修改启动项打开调试功能重启后才能使用。所以写了个 VistaLKD 小工具，可以动态打开本机内核调试功能，方便使用。<br>
<br>
<br>
D:\WinDbg&gt;kd -kl<br>
<br>
Microsoft (R) Windows Debugger Version 6.8.0004.0 X86<br>
Copyright (c) Microsoft Corporation. All rights reserved.<br>
<br>
OSVERSIONINFO(276,6,0,6000,2)<br>
Local kernel debugging is disabled by default in Windows Vista, you must run &quot;bcdedit -debug on&quot; and reboot to enable it<br>
.<br>
Debuggee initialization failed, HRESULT 0x80004001<br>
&nbsp;&nbsp;&nbsp;&nbsp;  &quot;&lt;Unable to get error code text&gt;&quot;<br>
<br>
<img border="0" title="名称:  VistaLKD.png查看次数: 211文件大小:  8.8 KB" src="http://bbs.pediy.com/attachment.php?attachmentid=12975&amp;d=1207361973" alt="名称:  VistaLKD.png查看次数: 211文件大小:  8.8 KB" style="margin: 2px; cursor: pointer;"><br>
<br>
D:\WinDbg&gt;kd -kl<br>
<br>
Microsoft (R) Windows Debugger Version 6.8.0004.0 X86<br>
Copyright (c) Microsoft Corporation. All rights reserved.<br>
<br>
OSVERSIONINFO(276,6,0,6000,2)<br>
Connected to Windows Vista 6000 x86 compatible target, ptr64 FALSE<br>
Symbol search path is: srv*E:\WebSymbols*http://msdl.microsoft.com/download/symbols<br>
Executable search path is:<br>
*******************************************************************************<br>
WARNING: Local kernel debugging requires booting with kernel<br>
debugging support (/debug or bcdedit -debug on) to work optimally.<br>
*******************************************************************************<br>
Windows Vista Kernel Version 6000 MP (2 procs) Free x86 compatible<br>
Product: WinNt, suite: TerminalServer SingleUserTS<br>
Built by: 6000.16584.x86fre.vista_gdr.071023-1545<br>
Kernel base = 0x81c00000 PsLoadedModuleList = 0x81d11e10<br>
Debug session time: Sat Apr&nbsp;&nbsp;  5 07:32:21.600 2008 (GMT+8)<br>
System Uptime: 0 days 0:05:36.475<br>
lkd&gt;</font></div>
<fieldset class="fieldset"><legend><font size="2" face="宋体">上传的附件</font></legend>
<table cellspacing="3" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><font size="2" face="宋体"><img width="16" height="16" border="0" title="文件类型: zip" class="inlineimg" src="http://bbs.pediy.com/images/pediy_style/attach/zip.gif" alt="文件类型: zip" style="vertical-align: baseline;"></font></td>
            <td><font size="2" face="宋体"><a href="http://bbs.pediy.com/attachment.php?attachmentid=12976&amp;d=1207362073">VistaLKD.zip</a> (2008-04-05 </font><font size="2" face="宋体" color="#666666">10:21</font><font size="2" face="宋体">, 110.0 KB, 52 次下载)</font></td>
        </tr>
    </tbody>
</table>
</fieldset> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%B5%F7%CA%D4%BC%BC%CA%F5">调试技术</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/2a344ddd735aa2315982dd58.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-13  22:02</pubDate>
        <category><![CDATA[调试技术]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/2a344ddd735aa2315982dd58.html</guid>
</item>

<item>
        <title><![CDATA[DbgPrint 函数流程分析]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/3c5331f8a8515e0ad9f9fd5f.html]]></link>
        <description><![CDATA[
		
		<div class="textbox-content" >
<p><font size="2">本文分析了 Vista 系统上 DbgPrint 函数的执行流程以及 DebugView 工具的原理。</font></p>
<p><font size="2"><a target="_blank" href="http://www.ztssoft.com/upload/DbgPrint%E5%87%BD%E6%95%B0%E6%B5%81%E7%A8%8B%E5%88%86%E6%9E%90.pdf">DbgPrint函数流程分析.pdf</a></font></p>
<p><a target="_blank" href="http://www.ztssoft.com/upload/DbgPrint%E5%87%BD%E6%95%B0%E6%B5%81%E7%A8%8B%E5%88%86%E6%9E%90.pdf"><br>
</a></p>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/windows%20%C4%DA%BA%CB">windows 内核</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/3c5331f8a8515e0ad9f9fd5f.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-13  22:00</pubDate>
        <category><![CDATA[windows 内核]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/3c5331f8a8515e0ad9f9fd5f.html</guid>
</item>

<item>
        <title><![CDATA[findstr 命令学习]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/f243d323d549594b9258075e.html]]></link>
        <description><![CDATA[
		
		<font size="2" face="Courier New">findstr 命令学习</font>
<p><font size="2" face="Courier New">findstr 是 Windows 自带的一个实用程序，用来查找文件中的字符串，支持正则表达式。</font></p>
<p><font size="2" face="Courier New">命令行如下：</font></p>
<p><font size="2" face="Courier New">FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  strings [[drive:][path]filename[ ...]]</font></p>
<p><font size="2" face="Courier New">  /B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在一行的开始配对模式。<br>
  /E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在一行的结尾配对模式。<br>
  /L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  按字使用搜索字符串。<br>
  /R&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  将搜索字符串作为一般表达式使用。<br>
  /S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在当前目录和所有子目录中搜索<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  匹配文件。<br>
  /I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定搜索不分大小写。<br>
  /X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  打印完全匹配的行。<br>
  /V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  只打印不包含匹配的行。<br>
  /N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在匹配的每行前打印行数。<br>
  /M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  如果文件含有匹配项，只打印其文件名。<br>
  /O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在每个匹配行前打印字符偏移量。<br>
  /P&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  忽略有不可打印字符的文件。<br>
  /OFF[LINE] 不跳过带有脱机属性集的文件。<br>
  /A:attr&nbsp;&nbsp;  指定有十六进位数字的颜色属性。请见 &quot;color /?&quot;<br>
  /F:file&nbsp;&nbsp;  从指定文件读文件列表 (/ 代表控制台)。<br>
  /C:string 使用指定字符串作为文字搜索字符串。<br>
  /G:file&nbsp;&nbsp;  从指定的文件获得搜索字符串。 (/ 代表控制台)。<br>
  /D:dir&nbsp;&nbsp;&nbsp;  查找以分号为分隔符的目录列表<br>
  strings&nbsp;&nbsp;  要查找的文字。<br>
  [drive:][path]filename<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  指定要查找的文件。</font></p>
<p><font size="2" face="Courier New">除非参数有 /C 前缀，请使用空格隔开搜索字符串。<br>
例如: 'FINDSTR &quot;hello there&quot; x.y' 在文件 x.y 中寻找 &quot;hello&quot; 或<br>
&quot;there&quot; 。  'FINDSTR /C:&quot;hello there&quot; x.y' 文件 x.y  寻找<br>
&quot;hello there&quot;。</font></p>
<p><font size="2" face="Courier New">一般表达式的快速参考:<br>
  .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  通配符: 任何字符<br>
  *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  重复: 以前字符或类别出现零或零以上次数<br>
  ^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  行位置: 行的开始<br>
  $&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  行位置: 行的终点<br>
  [class]  字符类别: 任何在字符集中的字符<br>
  [^class] 补字符类别: 任何不在字符集中的字符<br>
  [x-y]&nbsp;&nbsp;&nbsp;  范围: 在指定范围内的任何字符<br>
  \x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Escape: 元字符 x 的文字用法<br>
  \&lt;xyz&nbsp;&nbsp;&nbsp;  字位置: 字的开始<br>
  xyz\&gt;&nbsp;&nbsp;&nbsp;  字位置: 字的结束</font></p>
<p><font size="2" face="Courier New">和其它工具结合起来使用时比较方便，下面的命令演示了结合 dumpbin 工具查找 ntdll.dll 导出表中所有和 port 相关的函数。</font></p>
<p><font size="2" face="Courier New">d:\&gt;dumpbin /exports c:\WINDOWS\system32\ntdll.dll | findstr /i port<br>
  Section contains the following exports for ntdll.dll<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  86&nbsp;&nbsp;  4E 0000D379 NtAcceptConnectPort = </font><font size="2" face="Courier New">_NtAcceptConnectPort@24</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  115&nbsp;&nbsp;  6B 0000D5DA NtCompleteConnectPort = </font><font size="2" face="Courier New">_ZwCompleteConnectPort@4</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  117&nbsp;&nbsp;  6D 0000D604 NtConnectPort = </font><font size="2" face="Courier New">_NtConnectPort@32</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  133&nbsp;&nbsp;  7D 0000D73F NtCreatePort = </font><font size="2" face="Courier New">_NtCreatePort@20</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  143&nbsp;&nbsp;  87 0000D811 NtCreateWaitablePort = </font><font size="2" face="Courier New">_ZwCreateWaitablePort@20</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  178&nbsp;&nbsp;  AA 0000DADB NtImpersonateClientOfPort = </font><font size="2" face="Courier New">_ZwImpersonateClientOfPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  184&nbsp;&nbsp;  B0 0000DB59 NtListenPort = </font><font size="2" face="Courier New">_NtListenPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  242&nbsp;&nbsp;  EA 0000E006 NtQueryInformationPort = </font><font size="2" face="Courier New">_ZwQueryInformationPort@20</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  255&nbsp;&nbsp;  F7 0000EAB0 NtQueryPortInformationProcess = </font><font size="2" face="Courier New">_ZwQueryPortInformationProcess@0</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  277  10D 0000E2D0 NtRegisterThreadTerminatePort = </font><font size="2" face="Courier New">_NtRegisterThreadTerminatePort@4</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  285  115 0000E363 NtReplyPort = </font><font size="2" face="Courier New">_ZwReplyPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  286  116 0000E378 NtReplyWaitReceivePort = </font><font size="2" face="Courier New">_NtReplyWaitReceivePort@16</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  287  117 0000E38D NtReplyWaitReceivePortEx = </font><font size="2" face="Courier New">_ZwReplyWaitReceivePortEx@20</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  288  118 0000E3A2 NtReplyWaitReplyPort = </font><font size="2" face="Courier New">_NtReplyWaitReplyPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  290  11A 0000E3CC NtRequestPort = </font><font size="2" face="Courier New">_NtRequestPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  291  11B 0000E3E1 NtRequestWaitReplyPort = </font><font size="2" face="Courier New">_NtRequestWaitReplyPort@12</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  301  125 0000E4B3 NtSecureConnectPort = </font><font size="2" face="Courier New">_ZwSecureConnectPort@36</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  306  12A 0000E51C NtSetDefaultHardErrorPort = </font><font size="2" face="Courier New">_NtSetDefaultHardErrorPort@4</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  442  1B3 00058037 RtlComputeImportTableHash = </font><font size="2" face="Courier New">_RtlComputeImportTableHash@12</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  896  37F 0000D379 ZwAcceptConnectPort = </font><font size="2" face="Courier New">_NtAcceptConnectPort@24</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  925  39C 0000D5DA ZwCompleteConnectPort = </font><font size="2" face="Courier New">_ZwCompleteConnectPort@4</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  927  39E 0000D604 ZwConnectPort = </font><font size="2" face="Courier New">_NtConnectPort@32</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  943  3AE 0000D73F ZwCreatePort = </font><font size="2" face="Courier New">_NtCreatePort@20</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  953  3B8 0000D811 ZwCreateWaitablePort = </font><font size="2" face="Courier New">_ZwCreateWaitablePort@20</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  987  3DA 0000DADB ZwImpersonateClientOfPort = </font><font size="2" face="Courier New">_ZwImpersonateClientOfPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  993  3E0 0000DB59 ZwListenPort = </font><font size="2" face="Courier New">_NtListenPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1051  41A 0000E006 ZwQueryInformationPort = </font><font size="2" face="Courier New">_ZwQueryInformationPort@20</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1064  427 0000EAB0 ZwQueryPortInformationProcess = </font><font size="2" face="Courier New">_ZwQueryPortInformationProcess@0</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1086  43D 0000E2D0 ZwRegisterThreadTerminatePort = </font><font size="2" face="Courier New">_NtRegisterThreadTerminatePort@4</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1094  445 0000E363 ZwReplyPort = </font><font size="2" face="Courier New">_ZwReplyPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1095  446 0000E378 ZwReplyWaitReceivePort = </font><font size="2" face="Courier New">_NtReplyWaitReceivePort@16</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1096  447 0000E38D ZwReplyWaitReceivePortEx = </font><font size="2" face="Courier New">_ZwReplyWaitReceivePortEx@20</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1097  448 0000E3A2 ZwReplyWaitReplyPort = </font><font size="2" face="Courier New">_NtReplyWaitReplyPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1099  44A 0000E3CC ZwRequestPort = </font><font size="2" face="Courier New">_NtRequestPort@8</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1100  44B 0000E3E1 ZwRequestWaitReplyPort = </font><font size="2" face="Courier New">_NtRequestWaitReplyPort@12</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1110  455 0000E4B3 ZwSecureConnectPort = </font><font size="2" face="Courier New">_ZwSecureConnectPort@36</font><br>
<font size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1115  45A 0000E51C ZwSetDefaultHardErrorPort = </font><font size="2" face="Courier New">_NtSetDefaultHardErrorPort@4</font></p>
<p><font size="2" face="Courier New"><br>
</font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%CE%B4%B7%D6%C0%E0">未分类</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/f243d323d549594b9258075e.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-13  21:59</pubDate>
        <category><![CDATA[未分类]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/f243d323d549594b9258075e.html</guid>
</item>

<item>
        <title><![CDATA[介绍一个超酷的工具: vmkd]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/1fd5a71eeb0701f11bd5765d.html]]></link>
        <description><![CDATA[
		
		<div class="textbox-content" >
<p><font size="2" face="Courier New">WinDbg + VMWare 可以双机调试内核，但 VMWare 本身提供的虚拟串口方式调试速度很慢，而且调试时占用 CPU 100%，用起来还是不够爽。</font></p>
<p><font size="2" face="Courier New">Skywing 最近在网站上发布了一个工具 vmkd（</font><a href="http://www.nynaeve.net/?page_id=168"><font size="2" face="Courier New">http://www.nynaeve.net/?page_id=168</font></a><font size="2" face="Courier New"> ）可以解决上面的问题，而且还写了一系列文章说明实现原理（</font><a href="http://www.nynaeve.net/?p=174"><font size="2" face="Courier New">http://www.nynaeve.net/?p=174</font></a><font size="2" face="Courier New">）。</font></p>
<p><font size="2" face="Courier New">我试用了一下，感觉非常好用，介绍给大家，呵呵！</font></p>
<p><font size="2" face="Courier New">安装步骤：</font></p>
<p><font size="2" face="Courier New">1. 安装 VMware Server 1.0.4，在 vmware 网站上可以免费下载注册。<br>
2. 在虚拟机中安装好系统，并设置好串口调试。<br>
3. 把 vmkd 中的 kdvmware.sys 复制到虚拟机中，sc create kdvmware start= demand type= kernel binPath= c:\windows\system32\drivers\kdvmware.sys DisplayName= kdvmware 安装驱动。<br>
4. 通过第二步设置好的调试方式启动系统。<br>
5. 找到启动虚拟机的 vmware-vmx.exe 进程的 pid，利用 vmxinject.exe pid 命令把 vmxpatch.dll 注入到 vmware-vmx.exe 进程。<br>
6. 在虚拟机中通过 net start kdvmware 启动驱动。<br>
7. 在 WinDbg 中通过 </font><a href="file://%5c%5c.%5cpipe%5ckdvmware_winxp/"><font size="2" face="Courier New">\\.\pipe\kdvmware_winxp</font></a><font size="2" face="Courier New"> 连接虚拟机中的系统开始调试，管道名字中的 winxp 是虚拟机系统的安装文件夹（比如：d:\VM\winxp）。</font></p>
<p><font size="2" face="Courier New">连接上去后试试 .dump /f 命令，速度很快，完全不用理会&ldquo;非常非常慢，需要一个小时&rdquo;的提示。:)</font></p>
<p><font size="2" face="Courier New"><br>
</font></p>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%B5%F7%CA%D4%BC%BC%CA%F5">调试技术</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/1fd5a71eeb0701f11bd5765d.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-13  21:58</pubDate>
        <category><![CDATA[调试技术]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/1fd5a71eeb0701f11bd5765d.html</guid>
</item>

<item>
        <title><![CDATA[WinDbg 命令学习 - !list]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/a5005082d01a4595f603a65d.html]]></link>
        <description><![CDATA[
		
		<font size="2" face="Courier New">Windows 内部的各种结构通常都会由双向链表串起来，用 !list 命令查看这些结构非常方便。<br>
<br>
比如查看系统中的所有进程：<br>
<br>
lkd&gt; !list -t nt!_LIST_ENTRY.Flink -x &quot;dt nt!_EPROCESS UniqueProcessId ImageFileName @@(#CONTAINING_RECORD(@$extret, nt!_EPROCESS, ActiveProcessLinks))&quot; poi(nt!PsActiveProcessHead)<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000004 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;System&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000270 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SMSS.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000002ac <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;CSRSS.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000002c4 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;WINLOGON.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000002f0 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SERVICES.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000314 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;LSASS.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000003a4 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SVCHOST.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000003f8 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SVCHOST.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000005ec <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SVCHOST.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000658 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SVCHOST.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000006f0 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SVCHOST.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000000c8 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SPOOLSV.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000298 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;MDM.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000484 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;WGATRAY.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000494 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;EXPLORER.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x0000056c <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SVCHOST.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000005d4 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;vmware-authd.ex&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000006b0 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;VMOUNT2.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000700 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;VMNAT.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000007a8 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;VMNETDHCP.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000448 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;HKCMD.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x000004dc <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;IGFXPERS.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000578 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;SOUNDMAN.EXE&quot;<br>
<br>
&nbsp;&nbsp;&nbsp; +0x084 UniqueProcessId : 0x00000590 <br>
&nbsp;&nbsp;&nbsp; +0x174 ImageFileName&nbsp;&nbsp;&nbsp; : [16]&nbsp;&nbsp; &quot;daemon.exe&quot;<br>
 <br>
&nbsp;&nbsp;&nbsp; ......<br>
<br>
如果需要执行多条命令，则把每条命令用分号隔开，把 !list 命令的整个参数用双引号括起来。<br>
<br>
</font> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%B5%F7%CA%D4%BC%BC%CA%F5">调试技术</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/a5005082d01a4595f603a65d.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-13  21:57</pubDate>
        <category><![CDATA[调试技术]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/a5005082d01a4595f603a65d.html</guid>
</item>

<item>
        <title><![CDATA[在 WinDbg 脚本中使用参数]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/7d4bca389b59f4f7b211c75c.html]]></link>
        <description><![CDATA[
		
		<font size="2" face="Courier New">WinDbg 6.7.5.0 版本运行脚本时多了一个新的命令 <strong>$$&gt;a&lt;</strong>，可以给脚本传递参数。下面是一个简单的例子，演示了参数的用法。<br>
<br>
$$<br>
$$ calc v0.0.1<br>
$$ by 小喂 2007.06.08<br>
$$<br>
<br>
.if(@@c++(${/d:$arg1} &amp;&amp; ${/d:$arg2}))<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp; .printf &quot;\n%d + %d = %d\n&quot;, ${$arg1}, ${$arg2}, ${$arg1} + ${$arg2}<br>
&nbsp;&nbsp;&nbsp;&nbsp; .printf &quot;%d - %d = %d\n&quot;, ${$arg1}, ${$arg2}, ${$arg1} - ${$arg2}<br>
&nbsp;&nbsp;&nbsp;&nbsp; .printf &quot;%d * %d = %d\n&quot;, ${$arg1}, ${$arg2}, ${$arg1} * ${$arg2}<br>
&nbsp;&nbsp;&nbsp;&nbsp; .printf &quot;%d / %d = %d\n&quot;, ${$arg1}, ${$arg2}, ${$arg1} / ${$arg2}<br>
}<br>
.else<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp; .printf &quot;\nusage: $$&gt;a&lt; &lt;path&gt;\calc.txt arg1 arg2\n\n&quot;<br>
}<br>
<br>
运行一下：<br>
<br>
0:000&gt; <strong>$$&gt;a&lt; d:\windbg\scripts\calc.txt @eax 4</strong><br>
<br>
1580724 + 4 = 1580728<br>
1580724 - 4 = 1580720<br>
1580724 * 4 = 6322896<br>
1580724 / 4 = 395181</font> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%B5%F7%CA%D4%BC%BC%CA%F5">调试技术</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/7d4bca389b59f4f7b211c75c.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-13  21:56</pubDate>
        <category><![CDATA[调试技术]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/7d4bca389b59f4f7b211c75c.html</guid>
</item>

<item>
        <title><![CDATA[查找隐藏驱动]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/a0c2776e97fc53df81cb4a31.html]]></link>
        <description><![CDATA[
		
		<font size="2" face="Courier New">最近写了个小工具查找隐藏驱动，可以查找断开 PsLoadedModuleList 链的驱动，比如 np 的驱动。<br>
<br>
下面是关键代码：<br>
<br>
PDIRECTORY_BASIC_INFORMATION&nbsp;&nbsp;&nbsp;&nbsp; pDriverBuffer = NULL;<br>
pDriverBuffer = (PDIRECTORY_BASIC_INFORMATION)m_cSysInfo.QueryDirectoryObject(L&quot;\\Driver&quot;, &amp;uMemSize);<br>
<br>
查找驱动对象目录下的所有对象，查找代码如下。<br>
<br>
PVOID CNativeSysInfo::QueryDirectoryObject(PWSTR pwsDirPath, PULONG puMemSize)<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp; NTSTATUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ntStatus;<br>
&nbsp;&nbsp;&nbsp;&nbsp; UNICODE_STRING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usDirPath;<br>
&nbsp;&nbsp;&nbsp;&nbsp; OBJECT_ATTRIBUTES&nbsp;&nbsp;&nbsp; oa;<br>
&nbsp;&nbsp;&nbsp;&nbsp; HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hDir = NULL;<br>
&nbsp;&nbsp;&nbsp;&nbsp; PVOID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuffer = NULL;<br>
&nbsp;&nbsp;&nbsp;&nbsp; ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uLength = 0x800;<br>
&nbsp;&nbsp;&nbsp;&nbsp; ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uContext = 0;<br>
&nbsp;&nbsp;&nbsp;&nbsp; ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uResult = 0;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; // 判断函数是否存在<br>
&nbsp;&nbsp;&nbsp;&nbsp; if(m_lpRtlInitUnicodeString == NULL ||<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_lpZwOpenDirectoryObject == NULL ||<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_lpZwQueryDirectoryObject == NULL ||<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_lpZwClose == NULL)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return NULL;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; // 打开目录对象<br>
&nbsp;&nbsp;&nbsp;&nbsp; m_lpRtlInitUnicodeString(&amp;usDirPath, pwsDirPath);<br>
&nbsp;&nbsp;&nbsp;&nbsp; InitializeObjectAttributes(&amp;oa, &amp;usDirPath, OBJ_CASE_INSENSITIVE, NULL, NULL);<br>
&nbsp;&nbsp;&nbsp;&nbsp; ntStatus = m_lpZwOpenDirectoryObject(&amp;hDir, DIRECTORY_QUERY, &amp;oa);<br>
&nbsp;&nbsp;&nbsp;&nbsp; if(ntStatus != STATUS_SUCCESS)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRACE(_T(&quot;ZwOpenDirectoryObject failed!&quot;));<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; goto _exit;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; // 查询目录对象<br>
&nbsp;&nbsp;&nbsp;&nbsp; do<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pBuffer)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VirtualFree(pBuffer, uLength, MEM_DECOMMIT);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uLength *= 2;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuffer = VirtualAlloc(NULL, uLength, MEM_COMMIT, PAGE_READWRITE);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pBuffer == NULL)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; goto _exit;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ntStatus = m_lpZwQueryDirectoryObject(hDir, pBuffer, uLength, FALSE, TRUE, &amp;uContext, &amp;uResult);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; } while(ntStatus == STATUS_MORE_ENTRIES || ntStatus == STATUS_BUFFER_TOO_SMALL);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; // 判断查询是否成功完成<br>
&nbsp;&nbsp;&nbsp;&nbsp; if(ntStatus == STATUS_SUCCESS)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(puMemSize)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *puMemSize = uLength;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VirtualFree(pBuffer, uLength, MEM_DECOMMIT);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuffer = NULL;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
<br>
_exit:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; if(hDir)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_lpZwClose(hDir);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hDir = NULL;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; return pBuffer;<br>
}<br>
<br>
然后把得到的结果和常规结果比较就可以找到隐藏驱动。隐藏驱动的相关信息可以通过下面的方式得到。<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; PDRIVER_OBJECT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDrvObject = NULL;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; RtlInitUnicodeString(&amp;usDirPath, (PCWSTR)pvInBuf);<br>
&nbsp;&nbsp;&nbsp;&nbsp; ntStatus = ObReferenceObjectByName(&amp;usDirPath,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJ_CASE_INSENSITIVE,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *IoDriverObjectType,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KernelMode,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (PVOID*)&amp;pDrvObject);<br>
<br>
有了 DRIVER_OBJECT 结构就啥都有了！:)<br>
<br>
下面是一个隐藏驱动的例子，用上面的办法可以发现。<br>
<br>
void _EraseDrvFromModList(PDRIVER_OBJECT pDrvObject)<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp; PLDR_DATA_TABLE_ENTRY&nbsp;&nbsp;&nbsp; pOwen;<br>
&nbsp;&nbsp;&nbsp;&nbsp; PLDR_DATA_TABLE_ENTRY&nbsp;&nbsp;&nbsp; pPrev;<br>
&nbsp;&nbsp;&nbsp;&nbsp; PLDR_DATA_TABLE_ENTRY&nbsp;&nbsp;&nbsp; pNext;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; pOwen = (PLDR_DATA_TABLE_ENTRY)pDrvObject-&gt;DriverSection;<br>
&nbsp;&nbsp;&nbsp;&nbsp; pPrev = (PLDR_DATA_TABLE_ENTRY)pOwen-&gt;InLoadOrderModuleList.Blink;<br>
&nbsp;&nbsp;&nbsp;&nbsp; pNext = (PLDR_DATA_TABLE_ENTRY)pOwen-&gt;InLoadOrderModuleList.Flink;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; pPrev-&gt;InLoadOrderModuleList.Flink = (PLIST_ENTRY)pNext;<br>
&nbsp;&nbsp;&nbsp;&nbsp; pNext-&gt;InLoadOrderModuleList.Blink = (PLIST_ENTRY)pPrev;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; pOwen-&gt;InLoadOrderModuleList.Flink = (PLIST_ENTRY)pOwen;<br>
&nbsp;&nbsp;&nbsp;&nbsp; pOwen-&gt;InLoadOrderModuleList.Blink = (PLIST_ENTRY)pOwen;<br>
}<br>
<br>
<div forimg="1"><img border="0" src="http://hiphotos.baidu.com/xiaoweitech/pic/item/430e5c18bad22ca54aedbcb7.jpg" small="0" class="blogimg"><br>
<br>
<div forimg="1"><img border="0" src="http://hiphotos.baidu.com/xiaoweitech/pic/item/080b5d01320971c7277fb5c9.jpg" small="0" class="blogimg"></div>
</div>
<br>
</font> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/windows%20%C4%DA%BA%CB">windows 内核</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/a0c2776e97fc53df81cb4a31.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-08  20:24</pubDate>
        <category><![CDATA[windows 内核]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/a0c2776e97fc53df81cb4a31.html</guid>
</item>

<item>
        <title><![CDATA[计算 PE 文件的信息熵值]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/18dba6d9602503ec39012f37.html]]></link>
        <description><![CDATA[
		
		这个工具可用来查看 PE 文件的信息熵值，从而判定文件是否被压缩。编码思路来源于 PEiD 工具，每个节的信息熵和 PEiD 的计算结果一样，但 是整个文件的熵值和 PEiD 的计算结果不同，搞不清楚 PEiD 怎么弄的。也懒得去逆向了。在PEiD 论坛有个帖子讨论了这个问题：http: //www.secretashell.com/PEiD/viewtopic.php?t=42。<br>
<br>
关于信息熵的相关知识我也不懂，只是看了点资料，了解些皮毛。有啥问题也别问我，问了也白问，呵呵可以上 http://en.wikipedia.org/wiki/Information_entropy 看看。<br>
<br>
另外，感觉这个功能还是挺有用的，比如 ProcessExplorer 可以显示被压缩的进程，估计就是用到了这种办法。（猜测的 ^_^）<br>
<br>
<div forimg="1"><img border="0" src="http://hiphotos.baidu.com/xiaoweitech/pic/item/48c96e8f9ecb62fff01f36ad.jpg" small="0" class="blogimg"><br>
<br>
源码下载： <a target="_blank" href="http://www.ztssoft.com/upload/entropy_src.zip">entropy_src.zip</a></div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%CE%B4%B7%D6%C0%E0">未分类</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/18dba6d9602503ec39012f37.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-08  20:21</pubDate>
        <category><![CDATA[未分类]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/18dba6d9602503ec39012f37.html</guid>
</item>

<item>
        <title><![CDATA[写了个小的 WinDbg 脚本，可以显示 SSDT]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/c429bd09faa070ca3bc763de.html]]></link>
        <description><![CDATA[
		
		<font size="2" face="Courier New">$$ ntcall Script v0.1<br>
$$ by 小喂 2006.10.29<br>
<br>
aS ufLinkS &quot;&lt;u&gt;&lt;col fg=\\\&quot;emphfg\\\&quot;&gt;&lt;link name=\\\&quot;%x\\\&quot; cmd=\\\&quot;uf 0x%x\\\&quot;&gt;&quot;;<br>
aS ufLinkE &quot;&lt;/link&gt;&lt;/col&gt;&lt;/u&gt;&quot;;<br>
<br>
r $t1 = nt!KeServiceDescriptorTable;<br>
r $t2 = poi(@$t1 + 8);<br>
r $t1 = poi(@$t1);<br>
<br>
.printf &quot;\nOrd&nbsp;&nbsp;&nbsp; Address&nbsp;&nbsp;&nbsp; fnAddr&nbsp;&nbsp;&nbsp; Symbols\n&quot;;<br>
.printf &quot;--------------------------------\n\n&quot;;<br>
<br>
.for (r $t0 = 0; @$t0 != @$t2; r $t0 = @$t0 + 1)<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp; r $t3 = poi(@$t1);<br>
&nbsp;&nbsp;&nbsp;&nbsp; .printf /D &quot;[%3d] %X: ${ufLinkS}%X${ufLinkE} (%y)\n&quot;, @$t0, @$t1, @$t3, @$t3, @$t3, @$t3;<br>
&nbsp;&nbsp;&nbsp;&nbsp; r $t1 = @$t1 + 4;<br>
}<br>
<br>
.printf &quot;\n- end -\n&quot;;<br>
<br>
ad ufLinkS;<br>
ad ufLinkE;<br>
<br>
<div forimg="1"><img border="0" src="http://hiphotos.baidu.com/xiaoweitech/pic/item/932fc53049844888a9018eaf.jpg" small="0" class="blogimg"></div>
<br>
</font><font size="2" face="Courier New">点击链接会完整反汇编具体某个函数。<br>
<br>
<div forimg="1"><img border="0" src="http://hiphotos.baidu.com/xiaoweitech/pic/item/8aba11ef8f70bb27acafd5c0.jpg" small="0" class="blogimg"></div>
<br>
</font> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/%B5%F7%CA%D4%BC%BC%CA%F5">调试技术</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/c429bd09faa070ca3bc763de.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-08  07:43</pubDate>
        <category><![CDATA[调试技术]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/c429bd09faa070ca3bc763de.html</guid>
</item>

<item>
        <title><![CDATA[PEB地址随机化]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/b7245d442be31a49510ffe5d.html]]></link>
        <description><![CDATA[
		
		<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Courier New"><font size="2"><span>从</span><span>XPSP2</span><span>后系统引入了一个特性：</span><span>PEB</span><span>地址随机化，每个进程的</span><span>PEB</span><span>地址不固定，大概有</span><span>14</span><span>种可能。系统创建进程时设置</span><span>PEB</span><span>的地址。</span></font></font></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span><font size="2" face="Courier New">NtCreateProcess / NtCreateProcessEx / PspCreateProcess / MmCreatePeb / MiCreatePebOrTeb</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Courier New"><font size="2"><span>在</span><span>MiCreatePebOrTeb</span><span>函数中根据当前时间计算随机值：</span></font></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;  </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>PVOID HighestVadAddress;</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>LARGE_INTEGER CurrentTime;</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>HighestVadAddress = (PVOID) ((PCHAR)MM_HIGHEST_VAD_ADDRESS + 1);</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>KeQueryTickCount (&amp;CurrentTime);</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>CurrentTime.LowPart &amp;= ((X64K &gt;&gt; PAGE_SHIFT) - 1);</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>if (CurrentTime.LowPart &lt;= 1) {</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>CurrentTime.LowPart = 2;</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>}</font></font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>HighestVadAddress = (PVOID) ((PCHAR)HighestVadAddress - (CurrentTime.LowPart &lt;&lt; PAGE_SHIFT));</font></font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Courier New"><font size="2"><span>所以在</span><span>XPSP2</span><span>系统以后不能认为</span><span>PEB</span><span>就处在</span><span>0x7FFDF000</span><span>处，不同的进程</span><span>PEB</span><span>地址会不一样。</span></font></font></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span><font size="2" face="Courier New">如果是本进程，可以通过下面的指令取得，</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font size="2" face="Courier New">mov<span>  </span>eax,fs:[0x18]</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><span><font size="2" face="Courier New">mov<span>  </span>eax,dword ptr [eax+0x30]</font></span></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Courier New"><font size="2"><span>先取得</span><span>TEB</span><span>的地址，再取得</span><span>PEB</span><span>的地址。</span></font></font></p>
<p style="margin: 0cm 0cm 10pt;" class="MsoNormal"><font face="Courier New"><font size="2"><span>如果要取得其它进程的</span><span>PEB</span><span>地址，可以通过</span><span>NtQueryInformationProcess</span><span>函数实现。</span></font></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font size="2" face="Courier New">NtQueryInformationProcess(...)</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font size="2" face="Courier New">{</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;  </span>......</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font size="2" face="Courier New"> </font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;  </span>case ProcessBasicInformation:</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font size="2" face="Courier New"> </font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>BasicInfo.ExitStatus = Process-&gt;ExitStatus;</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>BasicInfo.PebBaseAddress = Process-&gt;Peb;</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>BasicInfo.AffinityMask = Process-&gt;Pcb.Affinity;</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>BasicInfo.BasePriority = Process-&gt;Pcb.BasePriority;</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>BasicInfo.UniqueProcessId = (ULONG_PTR)Process-&gt;UniqueProcessId;</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>BasicInfo.InheritedFromUniqueProcessId = (ULONG_PTR)Process-&gt;InheritedFromUniqueProcessId;</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font size="2" face="Courier New"> </font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font face="Courier New"><font size="2"><span>&nbsp;&nbsp;&nbsp;  </span>......</font></font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font size="2" face="Courier New">}</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span><font size="2" face="Courier New"> </font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: blue; ">ULONG</span><span style="font-size: 10.5pt; color: black; "> </span><span style="font-size: 10.5pt; color: blue; ">CEnumPebDlg</span><span style="font-size: 10.5pt; color: black; ">::</span><span style="font-size: 10.5pt; color: rgb(136, 0, 0); ">GetPebAddress</span><span style="font-size: 10.5pt; color: black; ">(</span><span style="font-size: 10.5pt; color: blue; ">ULONG</span><span style="font-size: 10.5pt; color: black; "> </span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">ulPID</span><span style="font-size: 10.5pt; color: black; ">)</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-size: 10.5pt; color: black; "><font size="2">{</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: blue; ">HANDLE</span><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">hProcess</span><span style="font-size: 10.5pt; color: black; "> = </span><span style="font-size: 10.5pt; color: rgb(160, 0, 160); ">NULL</span><span style="font-size: 10.5pt; color: black; ">;</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: blue; ">ULONG</span><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">ulPebAddr</span><span style="font-size: 10.5pt; color: black; "> = 0;</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: blue; ">PROCESS_BASIC_INFORMATION</span><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">pbi</span><span style="font-size: 10.5pt; color: black; "> = {0};</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: blue; ">ULONG</span><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">dwReturnLength</span><span style="font-size: 10.5pt; color: black; "> = 0;</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-size: 10.5pt; color: black; "><font size="2"> </font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">hProcess</span><span style="font-size: 10.5pt; color: black; "> = </span><span style="font-size: 10.5pt; color: rgb(136, 0, 0); ">OpenProcess</span><span style="font-size: 10.5pt; color: black; ">(</span><span style="font-size: 10.5pt; color: rgb(160, 0, 160); ">PROCESS_QUERY_INFORMATION</span><span style="font-size: 10.5pt; color: black; ">, </span><span style="font-size: 10.5pt; color: rgb(160, 0, 160); ">FALSE</span><span style="font-size: 10.5pt; color: black; ">, </span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">ulPID</span><span style="font-size: 10.5pt; color: black; ">);</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: blue; ">if</span><span style="font-size: 10.5pt; color: black; ">(</span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">hProcess</span><span style="font-size: 10.5pt; color: black; "> != </span><span style="font-size: 10.5pt; color: rgb(160, 0, 160); ">NULL</span><span style="font-size: 10.5pt; color: black; ">)</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-size: 10.5pt; color: black; "><font size="2"><span>&nbsp;&nbsp;&nbsp;  </span>{</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: blue; ">if</span><span style="font-size: 10.5pt; color: black; ">(</span><span style="font-size: 10.5pt; color: rgb(136, 0, 0); ">g_lpNtQueryInformationProcess</span><span style="font-size: 10.5pt; color: black; ">(</span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">hProcess</span><span style="font-size: 10.5pt; color: black; ">,</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: rgb(160, 0, 160); ">ProcessBasicInformation</span><span style="font-size: 10.5pt; color: black; ">,</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>&amp;</span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">pbi</span><span style="font-size: 10.5pt; color: black; ">,</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: blue; ">sizeof</span><span style="font-size: 10.5pt; color: black; ">(</span><span style="font-size: 10.5pt; color: blue; ">PROCESS_BASIC_INFORMATION</span><span style="font-size: 10.5pt; color: black; ">),</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>&amp;</span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">dwReturnLength</span><span style="font-size: 10.5pt; color: black; ">) == 0)</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-size: 10.5pt; color: black; "><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>{</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">ulPebAddr</span><span style="font-size: 10.5pt; color: black; "> = (</span><span style="font-size: 10.5pt; color: blue; ">ULONG</span><span style="font-size: 10.5pt; color: black; ">)</span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">pbi</span><span style="font-size: 10.5pt; color: black; ">.</span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">PebBaseAddress</span><span style="font-size: 10.5pt; color: black; ">;</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-size: 10.5pt; color: black; "><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>}</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-size: 10.5pt; color: black; "><font size="2"> </font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: rgb(136, 0, 0); ">CloseHandle</span><span style="font-size: 10.5pt; color: black; ">(</span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">hProcess</span><span style="font-size: 10.5pt; color: black; ">);</span></font></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-size: 10.5pt; color: black; "><font size="2"><span>&nbsp;&nbsp;&nbsp;  </span>}</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-size: 10.5pt; color: black; "><font size="2"> </font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><font size="2"><span style="font-size: 10.5pt; color: black; "><span>&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 10.5pt; color: blue; ">return</span><span style="font-size: 10.5pt; color: black; "> </span><span style="font-size: 10.5pt; color: rgb(73, 73, 73); ">ulPebAddr</span><span style="font-size: 10.5pt; color: black; ">;</span></font></p>
<span style="font-size: 10.5pt; color: black; "><font size="2">}<br>
<br>
<div forimg="1"><img border="0" src="http://hiphotos.baidu.com/xiaoweitech/pic/item/8b59ff1faa9e3fd9a786691a.jpg" small="0" class="blogimg"></div>
<br>
</font></span> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/windows%20%C4%DA%BA%CB">windows 内核</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/b7245d442be31a49510ffe5d.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-07  21:46</pubDate>
        <category><![CDATA[windows 内核]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/b7245d442be31a49510ffe5d.html</guid>
</item>

<item>
        <title><![CDATA[判断进程的 DEP 状态]]></title>
        <link><![CDATA[http://hi.baidu.com/xiaoweitech/blog/item/1cf8141b9bf100feae513360.html]]></link>
        <description><![CDATA[
		
		<div class="textbox-content" >
<p><font size="2" face="Courier New">lkd&gt; !process 0n1984 0<br>
Searching for Process with Cid == 7c0<br>
PROCESS 85d97268  SessionId: 0  Cid: 07c0&nbsp;&nbsp;&nbsp;  Peb: 7ffdb000  ParentCid: 0788<br>
&nbsp;&nbsp;&nbsp;  DirBase: 17fc00a0  ObjectTable: e12c9158  HandleCount: 466.<br>
&nbsp;&nbsp;&nbsp;  Image: lsass.exe</font></p>
<p><font size="2" face="Courier New">lkd&gt; dt nt!_KPROCESS Flags. 0x85d97268<br>
&nbsp;&nbsp;  +0x06b Flags  : <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 ExecuteDisable : 0y0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 <font style="background-color: rgb(255, 255, 0);">ExecuteEnable : 0y0<br>
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 DisableThunkEmulation : 0y0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 Permanent : 0y0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 ExecuteDispatchEnable : 0y0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 ImageDispatchEnable : 0y0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 Spare  : 0y00</font></p>
<p><font size="2" face="Courier New">lkd&gt; !process 0n448 0<br>
Searching for Process with Cid == 1c0<br>
PROCESS 84f2c3b8  SessionId: 0  Cid: 01c0&nbsp;&nbsp;&nbsp;  Peb: 7ffdc000  ParentCid: 04a0<br>
&nbsp;&nbsp;&nbsp;  DirBase: 17fc0480  ObjectTable: e44a91f0  HandleCount: 731.<br>
&nbsp;&nbsp;&nbsp;  Image: QQ.exe</font></p>
<p><font size="2" face="Courier New">lkd&gt; dt nt!_KPROCESS Flags. 0x84f2c3b8<br>
&nbsp;&nbsp;  +0x06b Flags  : <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 ExecuteDisable : 0y0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 <font style="background-color: rgb(255, 255, 0);">ExecuteEnable : 0y1</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 DisableThunkEmulation : 0y0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 Permanent : 0y0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 ExecuteDispatchEnable : 0y1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 ImageDispatchEnable : 0y1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  +0x000 Spare  : 0y00<br>
</font></p>
<p><font size="2" face="Courier New">通过编写驱动可以从内核中取出这些信息，从而判断进程是否打开了 DEP 保护。还可以直接修改这些值，切换进程的 DEP 状态。</font></p>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiaoweitech/blog/category/windows%20%C4%DA%BA%CB">windows 内核</a>&nbsp;<a href="http://hi.baidu.com/xiaoweitech/blog/item/1cf8141b9bf100feae513360.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-06  21:43</pubDate>
        <category><![CDATA[windows 内核]]></category>
        <author><![CDATA[xiaoweitech]]></author>
		<guid>http://hi.baidu.com/xiaoweitech/blog/item/1cf8141b9bf100feae513360.html</guid>
</item>


</channel>
</rss>