一、基础命令程序重在编程思维,难在程序调试,写出了程序还不行,还必须进行调试,证明结果。 WinDbg是微软开发的一款强大无比的调试器。利用它我们可以进行内核双机调试。 在调试程序之前我们要掌握如何来使用Windbg调试器,也就是掌握Windbg命令。 .sympath命令设置符号表路径。
.reload 命令此命令主要用于加载符号表。 .reload /f //重新装载模块 .reload /i //强制加载mismatched symbol
U命令这个命令主要用于反汇编某个地址,其后面可以跟函数名和地址。 db/dw/dd/dq/dD/df命令这四个命令主要用于查看某地址所储存的数据。他们的不同在于所显示的数据长度。 db显示一字节的长度。 dw显示两字节的长度。 dd显示四字节的长度。 dq显示八字节的长度。 dD 显示double实数(8字节的长度)。 df 显示float实数(4字节的长度)。 da/du/ds/dS命令da 显示asscii值 du 显示unicode值 ds 显示ANI_STRING值 dS显示UNICODE_STRING的值 eb/ew/ed/eq命令eb address value 在address 这个地址写入一个字节value ew address value 在address 这个地址写入两字节value ed address value 在address 这个地址写入四字节字节value eq address value 在address 这个地址写入八字节字节value
二、对象相关命令dt命令dt命令主要用于查看结构体。 lm 命令Lm 列出模块。 lm vm 模块名 查看模块详细信息。
!process 命令!process 0 0//列出系统进程信息 !process 0 0 进程名 //列出该进程的信息 !process 0 1 进程名 //列出该进程更加的信息 !process 0 7 进程名 //列出该进程的详细信息,包括线程的
.process 命令.process EPROCESS //切入该进程中 !object 命令!object 地址 //显示该地址的对象信息。
三、断点命令
bp/ba命令bp命令是通过向指定地址插入int 3 指令来完成的,这种方式容易被发现。 bp address 在地址address插入断点。 ba命令是是硬件断点命令,通过设置cpu的dx寄存器来拦截线程。 ba access size 地址//access 是访问的方式,比如 e (执行),r (读/写),w (写) ,size是监控访问的位置的大小,以字节为单位。值为 1、2或4,在64位机器上还可以是8。
bd/be/bc命令bd 断点号 //此命令是关闭断点号所对应的断点 。 be 断点号 //此命令是开启断点号所对应的断点 。 bc * 去除所有断点。
四、其他命令x命令X命令用来模糊查询。例如可以这样查看SSDT表的地址: x nt!kes*des*table* 0: kd> x nt!kes*des*table* 8055d6c0 nt!KeServiceDescriptorTableShadow = 8055d700 nt!KeServiceDescriptorTable = dds命令dds 地址 //此命令用来解析某连续地址的函数名。 0: kd> dd nt!KeServiceDescriptorTable L1 8055d700 80505450 00000000 0000011c 805058c4 0: kd> dds 80505450 l3 80505450 805a5614 nt!NtAcceptConnectPort 80505454 805f1adc nt!NtAccessCheck
80505458 805f5312 nt!NtAccessCheckAndAuditAlarm
|