首 页文章中心黑客软件黑客动画绿色软件私服技术私服下载本站论坛
您当前的位置:黑客之家文章中心脱壳破解基础知识 → 文章内容 退出登录 用户管理
本类热门文章
相关文章
站内广告


1.3  调用栈窗口

在WinDbg中没有堆栈窗口,取而代之的是调用栈窗口(ALT+6)。下面让我们来看看怎么用。

 
如图,我以号码为04的调用来说明。“ntdll!RtlReleasePebLock+0x2d”调用函数的名称,77fa15d3是函数返回地址,0012fd30是函数第一个参数,如此类推。这里其实是将堆栈横排,也就是说当你进入ntdll!RtlReleasePebLock+0x2d,该窗口就会生成一个项目,并且把堆栈中的内容横排,其实就是下面的数据:

77fa15d3 
0012fd30 
77f80000 
00000000 

调用窗口中最左边的0012fd1c=ESP。

在命令窗口输入kb,然后你会看到跟调用栈窗口一模一样的内容。最后,此窗口功能同样没有Ollydbg强大。

1.4  内存窗口

按ALT+5,然后你会看到下图所示的窗口:

 
它提供多种风格的显示,可惜它仍然是一个文本框,你只能复制粘贴,不能象Ollydbg那样能下断点,也能直接改内存。
同样地,你可以使用d*指令来达到同样多样化的内存显示。例如db address,将会以内存窗口的默认风格显示给出地址的数据。

要改变内存数据,你需要使用e*命令,格式如下:

e Address [Values] 
例如改变00100000的数据
Eb 00100000 01 02 03 04      数据类型为BYTE
Ed 00100000 0201 0403       数据类型为DWORD
Ea 00100000 ‘hello’           数据类型为ASCII
Eu 00100000 ‘你好’           数据类型为UNICODE

1.5  命令窗口

在Ollydbg中,命令行只是一个默认插件。这也是WinDbg唯一比Ollydbg好的界面了。它的快捷键是alt+1。

由于是文本框,所以你可以很容易就翻查当前调试记录。例如单步到某一步的时候,想知道之前经过的某一条指令的某个寄存器的值,向上滚动窗口就可以了,你甚至可以CTRL+F打开查找窗口,并按F3查找下一个。同时因为是文本框的关系,把整个过程复制下来,做点文字编辑,就可以成为一篇破文了。而且WinDbg也提供了把命令窗口内容保存到文件的功能,你可以通过菜单“EDIT=>Write windows text to file”。假如你需要重复使用某一命令,也可以通过上箭头或者下箭头翻查历史记录。按ENTER则自动重复上一条指令的操作

上一页 1 2 3 4 5 6 下一页

从Ollydbg说起-----WinDbg用户态调试教程(图)
作者:佚名  来源:不详  发布时间:2008-1-10 16:27:44

减小字体 增大字体

文章标题】: 【原创】从Ollydbg说起-----WinDbg用户态调试教程
文章作者】: 笨笨雄
【作者邮箱】: nemo314@gmail.com
【工具】:Windbg 6.6.7.5;Ollydbg 1.10

    我假设你已经掌握Ollydbg的使用,并且希望用WinDbg进行内核级的调试。这篇教程将会以Ollydbg为线索,帮助你尽快掌握WinDbg的使用,并简单介绍它的一些特性。我把这篇文章定位为Ollydbg到WinDbg内核调试之间的过渡。假如你是新手,那么本文同样适用,因为我会提到这两种调试器各自的一些特点,方便选择。全文分为3部分,每部分各占1楼。1是讲解界面及其设置,2是讲解调试中常用的指令,3是调试实例,目标是增加对TLSCALLBACK了解。我在4楼放了附件和一些资源的连接方便大家深入学习。希望大家会喜欢这篇文章

1.  调试界面
1.1  反汇编窗口
在Ollydbg中,反汇编窗口占的位置最大,功能也很强大。不过在WinDbg中,反汇编窗口很简陋,也更容易受花指令影响。界面如图:

 
这是一个文本框,唯一的功能,也是几乎所有在WinDbg中的文本框共有的特性:鼠标左键选中文本,点右键就自动复制选中内容到剪贴板。另外一个共同的特点,红色圈处是一个下拉菜单,里面提供一些功能,针对源码调试的,作为逆向工作者,我们不关心这个。”offset”指定反汇编的地址,默认值为@$scopeip,伪寄存,它的值等于当前EIP。“Previous”=上一页;“Next”=下一页。此窗口不是默认打开的(只有命令窗口是默认打开的),你需要ALT+7来打开它,如果你希望它能自动打开,你可以通过程序的菜单栏:

Windows =>Automatically Open Disassembly

你可以在命令窗口中输入下面命令来完成一些OllyDbg反汇编窗口中的一些功能

u[b] Address len 以给出的地址为起点向前反汇编,LEN指定指令的个数,格式为L+NUM。如果你使用ub则反汇编的方向相反。例如你可以使用下面指令汇编入口点的头10条指令(@$exentry伪寄存器,总是等于EP)。
U @$exentry L10

uf Address 反汇编指定函数

a [Address] 进入汇编模式。不输入任何内容,按ENTER结束汇编模式。

r $ip=address   $ip伪寄存器,修改它的值将会影响命令指针。r指令用于修改或显示寄存器 

WinDbg也有查找指令,功能比Ollydbg差,而且有点复杂,让我们来看看下面3条指令
s 0012ff40 L20 'H' 'e' 'l' 'l' 'o' 
s 0012ff40 L20 48 65 6c 6c 6f 
s -a 0012ff40 L20 "Hello" 

它们都是等效的。意为在0012ff40到0012ff60之间搜索hello字符,-a参数指定以ACSII的方式搜索字符,类似的还有-u,它指定以UNICODE的方式搜索字符。

注意:这里是字符,而不是Ollydbg的字符参考。如果你了解PE结构,或者你可以搜索资源段,找出字符的首址,下内存访问断点。如果你希望查找某一条指令,你需要知道它的机器码。

1.2  寄存器窗口

    如图,它同样简陋,而且不方便。尽管我们能用“Customize…”对寄存器重新排序。

 
它的快捷键是ALT+4。由于命令窗口会显示当前EIP的所有X86寄存器状态,所以我们一般不会用到这个窗口。为了使WinDbg象Ollydbg一样可以显示出寄存器所指向的字符。可以用以下命令:

.pcmd -s ".if(eax<70000000 and eax>00120000){da eax;du eax}; .if(edx<70000000 and edx>00120000){da edx;du edx}"

它的功能是当EAX,EDX指向指定内存范围(这里的设置是70000000以上,00120000一下。)时,就以ASCII和UNICODE显示内存中的字符。

.pcmd 不带参数则显示每条指令之后自动使用的指令。-s "命令" 设置命令。-c 清除命令。你可以不必每次启动都重新设置它。

[] [返回上一页] [打 印]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 文章投稿 - 软件发布 - 购物资讯网 - _