系统吧 专业的电脑操作系统,支持重装各种原版系统xp/win7/win8/win10 这个系统怎么样?试试系统吧系统,体验办公系统畅快愉悦感。 各种电脑系统安装过程一样,神一般的畅快!
-->
当前位置:主页 > win7 >

Win7系统中使用WinDbg与虚拟机调试驱动程序的操作方法和要点(6)

作者:宋惜瑶 分类:win7 发布时间:2017-10-12 21:37:56

但通常使用Windbg时,可以直接用Ctrl+O来打开并查看源文件 寄存器指令 r 相信大家对这个指令都很熟悉,在Windbg中r指令除了可以显示修改CPU寄存器之外,...

但通常使用Windbg时,可以直接用Ctrl+O来打开并查看源文件

寄存器指令 r

相信大家对这个指令都很熟悉,在Windbg中r指令除了可以显示修改CPU寄存器之外,Pseudo-Register可使用这个命令来修改。对eax 操作,r eax 显示其值,r eax=2,修改其值;r $t2=10,修改Pseudo-Register的值,r @$t2显示其值。

Search 指令 s,#

S 指令对内存区别进行查找,可用于查找数字,字符串,但不支持模式查找。s -d @esp L100 8187bc40,从esp指向的内存地址0x100个字节内查找 DWORD 8187bc40。查找字符串 s -a 0012ff40 L20 “Hello” 。s -sa 和 s -su 显示内存可打印的ASCII和Unicode字符串。

#指令可以查询汇编指令模式, # “call[ ]+esp” kernel32 L1000查找call esp 指令。

其他常用指令 lm,!peb,x,dt

lm 查看当前载入的模块

!peb 查看当前进程环境块(PEB)

x 查看模块的符号,如x mydriver!*FastIo*,显示所有与*FastIo*匹配的符号列表

dt 查看类型数据,还可用于查看模块类型的符号列表,如 dt dgguarder!_IMAGE_DOS_HEADER 00400000

从00400000处查看_IMAGE_DOS_HEADER类型的数据

上下文的概念

Windbg下上下文的概念很重要,根据文档中说明有多种上下文概念。

Session Context

Process Context

Register Context(其实也就是线程上下文)

Local Context(这个关系的本地如果解析本地变量的问题)

调 试Win32应用程序,Session Context和Process Context是确定的,主要是Register Context,也即Thread Context,可以使用~指令来查看,改变当前的Thread Context 。~*显示所有线程列表,~xs用于切换上下文(x是数字),如:~1s,将上下文切换到1号线程。

.frame用来设置Local Context。

PAUSE

好了,基本的指令都已经列出了来了,Kernel Debug现在先不写了,其实跟Win32也差不多。如果再有时间再写吧。本文对指令没有说的太细,详细说明见Windbg文档,希望见谅。

WINDBG Script简易教程

声明: 希望更多人使用WINDBG,然后大概就能看到debugging tools for windows的帮助文件的中文翻译了吧。花了 几天时间才在翻译软件的帮助下看完debugger commands部分,痛苦死了。也找不到WINDBG的插件,还是WINDBG没插件功能?为了简化调试过程,只有学习使用SCRIPT了,现在把这几天的经验跟大家分享。附件中所有代码经NOTEPAD,REGEDIT等调试,花了几小时,基本通过。

废话多了,现在是正文。WINDBG的指令比较多,还是英文的,所以我只挑了一部分经常会用到的,并通过实例去告诉大家那些指令的作用和格式。正如大多数高级语言教程一样,我们先来看看如何写一个HELLO WORLD的程序。

如果使用.echo “HELLO WORLD”作为例程就太简单了,我希望介绍更多的指令。所以我在OD直接用汇编写了个程序:

PUSH 0

PUSH 12345678 ;TITLE跟显示内容都在这个跟下一个PUSH

PUSH 12345678 ;我比较懒。。。就用一样的字符了

PUSH 0

MOV EAX,OFFSET MESSAGEBOXW

CALL EAX

先用EAX保存MESSAGEBOXW的指针,然后再CALL。这是为了你在任何一个程序下都能用使用这个SCRIPT。如果直接 CALL MESSAGBOXW的指针,翻译成机器码是相对于当前位置的偏移,这样写出来的SCRIPT文件在这个程序能用,别的程序就不能用了。

机器码 6A 00 68 78 56 34 12 68 78 56 34 12 6A 00 b8 68 3d e2 77 ff d0

我虚拟机使用的是WIN 2000 连SP1都不是。。所以我不保证你的机器仍然能正常运行这个程序。为了能正常使用,你可以随便找一个程序,然后 BP MESSAGEBOXW,中断之后当前的EIP就是了,把ff d0前面的68 3d e2 77换掉了就可以了。我的目的并不是介绍如何写一个兼 容性差的程序,重点是学会如何写SCRIPT。

xp 更多>>
win7 更多>>
win8 更多>>
win10 更多>>
U盘 更多>>
电脑技术 更多>>
网站地图 | 豫ICP备2021035069号-4 | 友情链接qq:191064436
系统吧

版权所有 © 2012-2023 系统吧 免责声明:本站资源均收集于互联网,其著作权归原作者所有,如果有侵犯您权利的资源,请来信告知,我们将及时删除相应资源。