zoukankan      html  css  js  c++  java
  • windbg 常用命令

    一、基础命令

        程序重在编程思维,难在程序调试,写出了程序还不行,还必须进行调试,证明结果。

    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命令是是硬件断点命令,通过设置cpudx寄存器来拦截线程。

       ba access size 地址//access 是访问的方式,比如 e (执行)r (/)w (size是监控访问的位置的大小,以字节为单位。值为 124,在64位机器上还可以是8

     

    bd/be/bc命令

       bd 断点号 //此命令是关闭断点号所对应的断点 。

       be 断点号 //此命令是开启断点号所对应的断点 。

       bc * 去除所有断点。

     bu TestDriver!DriverEntry //给驱动入口下断点 

     

    四、其他命令

    x命令

       X命令用来模糊查询。例如可以这样查看SSDT表的地址:

       x nt!kes*des*table*

       0: kd>  x nt!kes*des*table*

       8055d6c0 nt!KeServiceDescriptorTableShadow = <no type information>

       8055d700 nt!KeServiceDescriptorTable = <no type information>

    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

     

    lm n 显示驱动模块信息 

    kd> lm n
    start end module name
    00400000 005f9200 nt_400000 ntkrnlpa.exe
    7c920000 7c9b6000 ntdll ntdll.dll
    804d8000 806d1200 nt ntkrnlpa.exe
    806d2000 806f2300 hal halaacpi.dll

    kd> !dh -a ede65000  //显示PE信息

    File Type: EXECUTABLE IMAGE
    FILE HEADER VALUES
    14C machine (i386)
    8 number of sections
    4ED9EB19 time date stamp Sat Dec 03 17:25:45 2011

    0 file pointer to symbol table

  • 相关阅读:
    前端发展态势 && 前端工作流程个人浅析
    Mac在Django安装mysqlclient时报错
    rabbitMQ简单配置及OSError: [Errno 9] Bad file descriptor问题
    MacOS 出现command not found
    Celery简单说明以及在Django中的配置
    Celery目录结构配置
    shell脚本之安装docker
    阿里云按需购买设置
    Java中的关键字 transient
    jvm常用参数
  • 原文地址:https://www.cnblogs.com/Snark/p/3386878.html
Copyright © 2011-2022 走看看