-
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。
猜您喜欢
- Win7笔记本小技巧:如何关闭触摸板,..2024-04-30
- win7安全证书过期,如何轻松解决?快..2024-04-30
- Win7本本无线网络不显示?这5招轻松解..2024-04-29
- windows7开机密码遗忘?别急,教你轻松..2024-04-29
- Win7电脑锁屏壁纸轻松换,让你的Wind..2024-04-29
- win7电脑开机无法进入桌面?看这里,..2024-04-29
相关推荐
- Windows 10如何使用系统自带的虚拟光驱..2017-08-27
- Win7下手机和电脑通过蓝牙对频传输文..2021-06-29
- 安装Windows 7补丁失败?如何解决!秘密..2023-12-11
- Win7系统将WPS文件上传到云端实现永久..2023-02-18
- Win7电脑只剩下c盘怎么办?磁盘丢失或..2017-06-22
- Win7电脑无法打开CHM文件怎么办?Win7电..2020-12-20