阅读:2117回复:2
windbg常用命令
windbg常用命令
1.基本调试控制 运行程序(Run): 快捷键:F5 命令:g 单步步入(Step In): 快捷键:F8 命令:p 单步步过(Step Over): 快捷键:F10 运行到光标所在行: 快捷键:F7 执行到返回:gu 执行到指定地址:g [Address] 重新运行调试程序: 快捷键:Ctrl+Shift+F5(这个对驱动一般用不到) 2.断点 断点之于调试当然是非常重要的 常用命令: bp [Address]or[Symbol] 在指定地址下断 可以使用地址或符号,如 bp 80561259(Windbg默认使用16进制) bp MyDriver!GetKernelPath bp MyDriver!GetKernelPath+0x12 bp [Address] /p eprocess 仅当当前进程为eprocess时才中断 这个很常用,比如你bp nt!NtTerminateProcess,但是只想在某一进程触发此断点时才断下来,那就加上这个参数吧,因为内核中的代码是各个进程共用的,所以此命令很实用 bp [Address] /t ethread 仅当当前线程为ethread时才中断,用法跟/p参数类似 bu [Address]or[Symbol] 下一个未解析的断点(就是说这个断点需要延迟解析) 这个也很常用,比如我们的驱动名为MyDriver.sys,那么在驱动加载之前下断bu MyDriver!DriverEntry, 然后加载这个驱动时就可以断在驱动入口,并且这个是不需要调试符号支持的 bl 列出所有断点,L=List bc[id] 清除断点,c=Clear,id是bl查看时的断点编号 bd[id] 禁用断点,d=Disable,id即断点编号 be[id] 启用断点,e=Enable,id为断点编号 3.查看和修改数据 调试中不可避免的要查看和修改数据 查看内存: db/dw/dd/dq [Address] 字节/字/双字/四字方式查看数据 da/du [Address] ASCII字符串/Unicode字符串方式查看指定地址 其它常用的如查看结构 dt nt!_EPROCESS dt nt!_EPROCESS 89330da0 (把0x89330da0作为对象指针) 修改内存: eb/ew/ed/eq/ef/ep Address [Values] 字节/字/双字/四字/浮点数/指针/ ea/eu/eza/ezu Address [Values] ASCII字符串/Unicode字符串/以NULL结尾的ASCII字符串/以NULL结尾的Unicode字符串 搜索内存: s -[b/w/d/q/a/u] Range Target 搜索字节/字/双字/四字/ASCII字符串/Unicode字符串 4.寄存器 在用Windbg调试时可以Alt+4直接调出寄存器窗口,然后拖放到合适的位置就可以。 要修改呢就直接双击相应的项就可以了。 把命令的方式也说一下,比较简单: r 显示所有寄存器的值 r eax 显示eax的值 r eax=1 修改eax的值为1 5.辅助命令 !process 显示当前进程信息 !process 0 0 显示当前所有进程(会有僵尸进程) !process 1f4 显示pid为1f4的进程信息,后面也可以跟eprocess的值 !thread 显示当前线程信息 !thread !process 1f4 显示tid为768的线程信息,后面也可以跟ethread的值 栈相关: k 显示调用栈 kb 显示ebp和前3个参数 kp 以函数调用形式显示栈 以上就是常用的命令了~~~ |
|
沙发#
发布于:2010-05-28 19:13
不错!学习了!
|
|
板凳#
发布于:2010-10-12 10:54
学习了
|
|