上一页 1 ··· 51 52 53 54 55 56 57 58 59 ··· 121 下一页

2011年1月1日

在WinDBG中查看调用栈的命令

摘要: 命令 ========== k k命令显示的是一定数量的栈帧, 其中帧的数量是由.kframes命令来控制的, 默认值是256。 kp 5 显示调用栈中前5个函数以及他们的参数. kb 5 显示调用栈中前五个函数以及他们的前三个参数. kf 5 显示在调用栈中五个函数所使用的栈的大小. 每个栈帧所占的空间使用量的计算方法是: 将当前函数的栈基指针与在函数中调用的任何一个函数栈基指针相减. 举例: 手动构造栈的实践- 如何手工构造调用栈 ============ 首先用几幅图说明一下栈的特点, 帮助大家理解. 1. 栈向低地址增长. 2. 向栈中压入数据, 栈中的情况如图. 3. 阅读全文

posted @ 2011-01-01 22:26 中道学友 阅读(20454) 评论(1) 推荐(2) 编辑

在WinDBG中查看函数的反汇编代码的命令

摘要: 命令 ========== u . u $ip 上面的两个命令是效果是一样的, 反汇编当前$ip地址上的8条命令. uf . uf $ip 上面两个命令的效果是一样的, 反汇编当前$ip地址上的整个函数. ub . ub $ip 反汇编$ip之前的8条指令. ub $ip L2a 反汇编$ip地址之前的42条指令. u $ip $ip+a 反汇编地址$ip到地址$ip+10之间的指令. 注意, 这里包括$ip, 不包括$ip+10。 举例: 阅读全文

posted @ 2011-01-01 21:30 中道学友 阅读(12423) 评论(0) 推荐(0) 编辑

Move EDI, EDI的作用

摘要: 玩WinDBG的时候, 发现函数的反汇编代码的最开始部分总是包含一条move edi, edi的指令. 比如下面的代码生成汇编代码的开头部分如下:Push EBP和Mov EBP, ESP两条指令是标准的栈框架建立的指令, 但是Mov EDI, EDI是做什么的呢? 看起来它就是两个字节的NOP指令.正解:mov edi, edi的确是个双字节的no-op指令, 它存在的目的是使得hot-patc... 阅读全文

posted @ 2011-01-01 18:10 中道学友 阅读(3006) 评论(0) 推荐(0) 编辑

在WinDBG中进行进制转换和简单的计算

摘要: 在WinDBG中可以进行一些简单的计算工作, 比如16进制与10进制之间的相互转换, 加减乘除等. 举例1, 进制转换: 注意, 上面的例子中的第二个命令告诉我们, 十进制的数字在windbg中进行表示的时候前面要加上前缀"0n", 而十六进制则可不必带上前缀"0x". 举例2, 除法计算: Debugging Tips: Use windbg as a calculator, a chat... 阅读全文

posted @ 2011-01-01 13:58 中道学友 阅读(2115) 评论(0) 推荐(0) 编辑

伪寄存器

摘要: 许多寄存器的名字取决于处理器的架构, 因此对于那些偶尔使用调试器的用户来说很难记住所有平台上的寄存器名字. 为了克服这个问题, 调试器的开发团队引入了各种伪寄存器(Pseudo-Register), 由调试器将这些伪寄存器对应到不同的硬件架构上. 所有的伪寄存器都由一个美元符号($)开始. 如果你使用MASM语法, 你可以在$符号之前添加一个@符号, 这个@字符会告诉debugger接下来的tok... 阅读全文

posted @ 2011-01-01 13:44 中道学友 阅读(1175) 评论(0) 推荐(0) 编辑

2010年12月27日

如何使用符号文件?

摘要: 几乎每个命令都会直接或者间接地使用符号信息. 进行符号检查的命令却不多. 查看符号的命令是x, 这个字符表示"查看符号". 语法如下所示: 0.00x [options] module!symbols module和symbols都可以包含通配符. 在调试陌生代码时, 通配符是一种功能强大的工具, 因为它使我们在阅读代码之前能够猜测函数的名字或者全局变量. 其中, 带有_imp前缀的函数... 阅读全文

posted @ 2010-12-27 16:30 中道学友 阅读(1026) 评论(0) 推荐(0) 编辑

如何验证已经加载的symbol file与module是否匹配?

摘要: 可以使用!chksym命令. 该命令接受一个内存地址作为参数, 只要这个内存地址属于某个module的范围之内, 那么该命令就会检查这个module的symbol和module是否匹配. !chksym 01000005 举例如下: 阅读全文

posted @ 2010-12-27 12:53 中道学友 阅读(366) 评论(0) 推荐(0) 编辑

2010年12月26日

成功运行过的WinDBG Commands–12-26-2010

摘要: lm v m 02samp* 列出module的信息, v代表verbose, 即详细, m代表可以使用通配符, 02samp*意图是匹配用02samp开头的所有module !lmi 02sample 显示模块的header中的信息. !lmi接受模块名或者模块地址作为参数 !sym noisy !sym quiet 符号加载过程的详细输出和非详细输出. 用于帮助你检查符号加载过程中可能出现的问... 阅读全文

posted @ 2010-12-26 22:26 中道学友 阅读(305) 评论(0) 推荐(0) 编辑

.reload 命令的一些常用形式

摘要: .reload /f 命令会强制debugger立即解析所有module相关联的符号文件. 于是我就想, 有没有什么命令可以立即去掉所有module相关联的符号文件呢? 找了半天也没找到, 最后发现.reload /f的反命令就是.reload 其他形式 =========== .reload module 抛弃模块module的符号信息. 任何解析符号的动作都将从硬盘上重新加载符号文... 阅读全文

posted @ 2010-12-26 22:24 中道学友 阅读(3147) 评论(0) 推荐(0) 编辑

2010年12月24日

为<<Advanced Windows Debugging>>配置符号路径

摘要: 纸上得来终觉浅, 绝知此事要躬行. 笔者开始动手运行AWD一书中的例子了. 在这里下载源文件, 可执行文件以及符号文件. 一开始设置符号路径的时候就遇到了困难, 这里记录下解决问题的过程. 先把最终可以正常工作的命令写在这里: .sympath srv*c:\symstore.pri*http://msdl.microsoft.com/download/symbols 1. 在http:... 阅读全文

posted @ 2010-12-24 22:59 中道学友 阅读(622) 评论(0) 推荐(0) 编辑

上一页 1 ··· 51 52 53 54 55 56 57 58 59 ··· 121 下一页

导航

技术追求准确,态度积极向上