注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

内核调试初步  

2013-01-08 17:13:35|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

2013.1.8

参照windbg的教程《Kernel Debugging with WinDbg》初步学习内核调试。

查看内核都加载了什么模块,下lmo命令

start    end        module name
7c920000 7c9b6000   ntdll      (pdb symbols)          c:\mysymbols\ntdll.pdb\E62AEBA49D7048669405A13F1D46A57E2\ntdll.pdb
804d8000 806ee900   nt         (pdb symbols)          c:\mysymbols\ntoskrnl.pdb\712DF2E984364F7BAF757D983FDC2BD12\ntoskrnl.pdb
806ef000 80702d00   hal        (deferred)            
bf000000 bf011600   dxg        (deferred)            
bf012000 bf02b000   vpc_s3_bf012000   (deferred)            
bf800000 bf9c7000   win32k     (deferred)            
f4b01000 f4b23100   RDPWD      (deferred)            
f4e06000 f4e22000   MRxVPC     (deferred)            
f5a2e000 f5a45900   dump_atapi   (deferred)            
f5a46000 f5ad2600   Ntfs       (deferred)            
f7efd000 f7f11000   vmsrvc     (deferred)            
f7f11000 f7f80a00   mrxsmb     (deferred)            
f7f81000 f7fabe80   rdbss      (deferred)            
f7fac000 f7fcdd00   afd        (deferred)            
f7fce000 f7ff5c00   netbt      (deferred)            
f7ff6000 f804e480   tcpip      (deferred)            
f804f000 f8061600   ipsec      (deferred)            

。。。

查看驱动对象afd的信息

kd> !drvobj afd
Driver object (82144ca8) is for:
 \Driver\AFD
Driver Extension List: (id , addr)

Device Object list:
82127530 

驱动对象afd具体的详细信息

kd> dt _DRIVER_OBJECT 82144ca8
ntdll!_DRIVER_OBJECT
   +0x000 Type             : 4
   +0x002 Size             : 168
   +0x004 DeviceObject     : 0x82127530 _DEVICE_OBJECT
   +0x008 Flags            : 0x12
   +0x00c DriverStart      : 0xf7fac000
   +0x010 DriverSize       : 0x21d00
   +0x014 DriverSection    : 0x8224a110
   +0x018 DriverExtension  : 0x82144d50 _DRIVER_EXTENSION
   +0x01c DriverName       : _UNICODE_STRING "\Driver\AFD"
   +0x024 HardwareDatabase : 0x80690e10 _UNICODE_STRING "\REGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM"
   +0x028 FastIoDispatch   : 0xf7fae030 _FAST_IO_DISPATCH
   +0x02c DriverInit       : 0xf7fc9f40     long  afd!GsDriverEntry+0
   +0x030 DriverStartIo    : (null)
   +0x034 DriverUnload     : 0xf7fb34a0     void  afd!AfdUnload+0
   +0x038 MajorFunction    : [28] 0xf7fb7d50     long  afd!AfdDispatch+0

afd的主函数数组

kd> dds 82144ca8+38 l28
82144ce0  f7fb7d50 afd!AfdDispatch
82144ce4  f7fb7d50 afd!AfdDispatch
82144ce8  f7fb7d50 afd!AfdDispatch
82144cec  f7fb7d50 afd!AfdDispatch
82144cf0  f7fb7d50 afd!AfdDispatch
82144cf4  f7fb7d50 afd!AfdDispatch
82144cf8  f7fb7d50 afd!AfdDispatch
82144cfc  f7fb7d50 afd!AfdDispatch
82144d00  f7fb7d50 afd!AfdDispatch
82144d04  f7fb7d50 afd!AfdDispatch
82144d08  f7fb7d50 afd!AfdDispatch
82144d0c  f7fb7d50 afd!AfdDispatch
82144d10  f7fb7d50 afd!AfdDispatch
82144d14  f7fb7d50 afd!AfdDispatch
82144d18  f7fb7290 afd!AfdDispatchDeviceControl
82144d1c  f7fb7d50 afd!AfdDispatch
82144d20  f7fb7d50 afd!AfdDispatch
82144d24  f7fb7d50 afd!AfdDispatch
82144d28  f7fb7d50 afd!AfdDispatch
82144d2c  f7fb7d50 afd!AfdDispatch
82144d30  f7fb7d50 afd!AfdDispatch
82144d34  f7fb7d50 afd!AfdDispatch
82144d38  f7fb7d50 afd!AfdDispatch
82144d3c  f7fb7d50 afd!AfdDispatch
82144d40  f7fb7d50 afd!AfdDispatch
82144d44  f7fb7d50 afd!AfdDispatch
82144d48  f7fb7d50 afd!AfdDispatch
82144d4c  f7fb7d50 afd!AfdDispatch
82144d50  82144ca8
82144d54  00000000
82144d58  00000000
82144d5c  00080006
82144d60  822fe1b8
82144d64  00000000
82144d68  00000000
82144d6c  00000000
82144d70  0001001f
82144d74  20707249
82144d78  0a040001
82144d7c  61546552

 afd设备对象信息

kd> dt _DEVICE_OBJECT 82127530
ntdll!_DEVICE_OBJECT
   +0x000 Type             : 3
   +0x002 Size             : 0xb8
   +0x004 ReferenceCount   : 17
   +0x008 DriverObject     : 0x82144ca8 _DRIVER_OBJECT
   +0x00c NextDevice       : (null)
   +0x010 AttachedDevice   : (null)
   +0x014 CurrentIrp       : (null)
   +0x018 Timer            : (null)
   +0x01c Flags            : 0x50
   +0x020 Characteristics  : 0
   +0x024 Vpb              : (null)
   +0x028 DeviceExtension  : (null)
   +0x02c DeviceType       : 0x11
   +0x030 StackSize        : 4 ''
   +0x034 Queue            : __unnamed
   +0x05c AlignmentRequirement : 0
   +0x060 DeviceQueue      : _KDEVICE_QUEUE
   +0x074 Dpc              : _KDPC
   +0x094 ActiveThreadCount : 0
   +0x098 SecurityDescriptor : 0xe100ab68
   +0x09c DeviceLock       : _KEVENT
   +0x0ac SectorSize       : 0
   +0x0ae Spare1           : 0
   +0x0b0 DeviceObjectExtension : 0x821275e8 _DEVOBJ_EXTENSION
   +0x0b4 Reserved         : (null)

 

下断点bp afd!AfdDispatchDeviceControl并运行ms11046的利用程序

程序中断如下:

eax=0000000e ebx=820f7c38 ecx=82127530 edx=820f7c38 esi=82144ca8 edi=820d3540
eip=f7fb7290 esp=f4cb3c38 ebp=f4cb3c58 iopl=0         nv up ei ng nz na pe nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00000286
afd!AfdDispatchDeviceControl:
f7fb7290 8bff            mov     edi,edi

查看是哪个进程引起的

kd> !process
PROCESS 820e6260  SessionId: 0  Cid: 073c    Peb: 7ffd6000  ParentCid: 042c
    DirBase: 1701e000  ObjectTable: e15e7dc0  HandleCount:  25.
    Image: ms11046.exe
    VadRoot 8212f590 Vads 44 Clone 0 Private 123. Modified 0. Locked 0.
    DeviceMap e1a71bc8
    Token                             e1112030
    ElapsedTime                       00:00:00.050
    UserTime                          00:00:00.010
    KernelTime                        00:00:00.000
    QuotaPoolUsage[PagedPool]         19948
    QuotaPoolUsage[NonPagedPool]      2192
    Working Set Sizes (now,min,max)  (478, 50, 345) (1912KB, 200KB, 1380KB)
    PeakWorkingSetSize                478
    VirtualSize                       16 Mb
    PeakVirtualSize                   16 Mb
    PageFaultCount                    479
    MemoryPriority                    BACKGROUND
    BasePriority                      8
    CommitCharge                      697

        THREAD 821833b8  Cid 073c.0740  Teb: 7ffdf000 Win32Thread: e1928540 RUNNING on processor 0

中断处堆栈如下:

kd> k
ChildEBP RetAddr 
f4cb3c34 804e4807 afd!AfdDispatchDeviceControl
f4cb3c44 80568f71 nt!IopfCallDriver+0x31
f4cb3c58 8057bc7f nt!IopSynchronousServiceTail+0x70
f4cb3d00 805893d4 nt!IopXxxControlFile+0x611
f4cb3d34 804df7ec nt!NtDeviceIoControlFile+0x2a
f4cb3d34 7c92e514 nt!KiFastCallEntry+0xf8
0012f9f8 7c92d28a ntdll!KiFastSystemCallRet
0012f9fc 719c4f14 ntdll!ZwDeviceIoControlFile+0xc
WARNING: Frame IP not in any known module. Following frames may be wrong.
0012fab4 719c6a32 0x719c4f14
0012fb58 719c542d 0x719c6a32
0012fb88 71a24a5a 0x719c542d
0012fcac 7c92cf7a 0x71a24a5a
0012fcb0 7c938f33 ntdll!ZwAllocateVirtualMemory+0xc
0012ff80 0040173c ntdll!RtlpFindAndCommitPages+0xb9
0012ffd0 8054c6b8 0x40173c
0012fff0 00000000 nt!ExFreePoolWithTag+0x676

堆栈内容

kd> dd esp
f4cb3c38  804e4807 82127530 820f7c38 806f0070
f4cb3c48  80568f71 820f7d14 820d3540 820f7c38

根据定义

NTSTATUS  (*PDRIVER_DISPATCH) (      IN PDEVICE_OBJECT DeviceObject,      IN PIRP Irp      );
可知82127530是设备对象指针,820f7c38是IRP结构的指针
查看设备堆栈
kd> !devstack 82127530
  !DevObj   !DrvObj            !DevExt   ObjectName
> 82127530  \Driver\AFD        00000000  Afd
查看IRP信息
kd> dt _IRP 820f7c38
ntdll!_IRP
   +0x000 Type             : 6
   +0x002 Size             : 0x190
   +0x004 MdlAddress       : (null)
   +0x008 Flags            : 0
   +0x00c AssociatedIrp    : __unnamed
   +0x010 ThreadListEntry  : _LIST_ENTRY [ 0x821835c8 - 0x821835c8 ]
   +0x018 IoStatus         : _IO_STATUS_BLOCK
   +0x020 RequestorMode    : 1 ''
   +0x021 PendingReturned  : 0 ''
   +0x022 StackCount       : 4 ''
   +0x023 CurrentLocation  : 4 ''
   +0x024 Cancel           : 0 ''
   +0x025 CancelIrql       : 0 ''
   +0x026 ApcEnvironment   : 0 ''
   +0x027 AllocationFlags  : 0xc ''
   +0x028 UserIosb         : 0x0012fa58 _IO_STATUS_BLOCK
   +0x02c UserEvent        : 0x820b0b70 _KEVENT
   +0x030 Overlay          : __unnamed
   +0x038 CancelRoutine    : (null)
   +0x03c UserBuffer       : 0x0012fa74
   +0x040 Tail             : __unnamed
 
再查irp有关的信息
kd> !irp 820f7c38
Irp is active with 4 stacks 4 is current (= 0x820f7d14)
 No Mdl: No System Buffer: Thread 821833b8:  Irp stack trace. 
     cmd  flg cl Device   File     Completion-Context
 [  0, 0]   0  0 00000000 00000000 00000000-00000000   
   Args: 00000000 00000000 00000000 00000000
 [  0, 0]   0  0 00000000 00000000 00000000-00000000   
   Args: 00000000 00000000 00000000 00000000
 [  0, 0]   0  0 00000000 00000000 00000000-00000000   
   Args: 00000000 00000000 00000000 00000000
>[  e, 0]   5  0 82127530 820d3540 00000000-00000000   
        \Driver\AFD
   Args: 0000001a 0000001a 00012003 0012fa74
kd> !irp 820f7c38 1
Irp is active with 4 stacks 4 is current (= 0x820f7d14)
 No Mdl: No System Buffer: Thread 821833b8:  Irp stack trace. 
Flags = 00000000
ThreadListEntry.Flink = 821835c8
ThreadListEntry.Blink = 821835c8
IoStatus.Status = 00000000
IoStatus.Information = 00000000
RequestorMode = 00000001
Cancel = 00
CancelIrql = 0
ApcEnvironment = 00
UserIosb = 0012fa58
UserEvent = 820b0b70
Overlay.AsynchronousParameters.UserApcRoutine = 00000000
Overlay.AsynchronousParameters.UserApcContext = 00000000
Overlay.AllocationSize = 00000000 - 00000000
CancelRoutine = 00000000  
UserBuffer = 0012fa74
&Tail.Overlay.DeviceQueueEntry = 820f7c78
Tail.Overlay.Thread = 821833b8
Tail.Overlay.AuxiliaryBuffer = 00000000
Tail.Overlay.ListEntry.Flink = 00000000
Tail.Overlay.ListEntry.Blink = 00000000
Tail.Overlay.CurrentStackLocation = 820f7d14
Tail.Overlay.OriginalFileObject = 820d3540
Tail.Apc = 00000000
Tail.CompletionKey = 00000000
     cmd  flg cl Device   File     Completion-Context
 [  0, 0]   0  0 00000000 00000000 00000000-00000000   
   Args: 00000000 00000000 00000000 00000000
 [  0, 0]   0  0 00000000 00000000 00000000-00000000   
   Args: 00000000 00000000 00000000 00000000
 [  0, 0]   0  0 00000000 00000000 00000000-00000000   
   Args: 00000000 00000000 00000000 00000000
>[  e, 0]   5  0 82127530 820d3540 00000000-00000000   
        \Driver\AFD
   Args: 0000001a 0000001a 00012003 0012fa74
以上就是初步学习内核调试的一些练手。
 
  评论这张
 
阅读(647)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017