欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > windows >内容正文

windows

Windows软件调试学习笔记(1)

发布时间:2023/12/13 windows 29 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Windows软件调试学习笔记(1) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

——WINDBG中的表达式

WINDBG接受两种表达式,C++表达式和MASM表达式。

1、 MASM表达式中的数值:

MASM表达式中的数值可以基于16,10,8,2四种进制。用n命令可以设置WINDBG的缺省进制,如果没有设置过则默认为16。

所有没有使用前缀和后缀的数值都被认为是使用缺省进制,例如如果当前的缺省进制是16,那么“20”这个数值代表的是16进制的“20”,而不是10进制的“20”。通过使用前缀和后缀可以改变数值的进制,“0x”前缀和“h”后缀代表16进制数,“0n”前缀代表10进制数,“0t”前缀代表8进制数,“0y”前缀代表2进制数。

例子:

0:000> n 10

base is 10

0:000> ? 1b

Syntax error at '1b'

0:000> ? 0x1b

Evaluate expression: 27 = 0000001b

0:000> ? 1bh

Evaluate expression: 27 = 0000001b

0:000> n 16

base is 16

0:000> ? 1b

Evaluate expression: 27 = 0000001b

0:000> ? 20

Evaluate expression: 32 = 00000020

2、 MASM表达式中的symbol:

在MASM表达式中,symbol的数值被认为是它的地址。根据symbol的类型,可以是全局变量的地址,局部变量的地址,函数的地址或模块的地址。

3、 MASM表达式中的数值运算符:

一些一元运算符:

运算符

说明

hi

返回数值的高字,相当于C语言的hiword

low

返回数值的低字,相当于C语言的lowword

by

参数为一个地址,返回该地址指向的字节值,相当于*(byte*)arg

wo

参数为一个地址,返回该地址指向的字值,相当于*(word*)arg

dwo

参数为一个地址,返回该地址指向的双字值,相当于*(dword*)arg

qwo

参数为一个地址,返回该地址指向的四字值,相当于*(qword*)arg

poi

参数为一个地址,返回该地址指向的指针长度的数值,在32位程序中相当于dwo

例子:

0:000> db 400000

00400000 4d 5a 90 00 03 00 00 00-04 00 00 00 ff ff 00 00 MZ..............

00400010 b8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00 ........@.......

00400020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

00400030 00 00 00 00 00 00 00 00-00 00 00 00 00 01 00 00 ................

00400040 0e 1f ba 0e 00 b4 09 cd-21 b8 01 4c cd 21 54 68 ........!..L.!Th

00400050 69 73 20 70 72 6f 67 72-61 6d 20 63 61 6e 6e 6f is program canno

00400060 74 20 62 65 20 72 75 6e-20 69 6e 20 44 4f 53 20 t be run in DOS

00400070 6d 6f 64 65 2e 0d 0d 0a-24 00 00 00 00 00 00 00 mode....$.......

0:000> ? by(400000)

Evaluate expression: 77 = 0000004d

0:000> ? wo(400000)

Evaluate expression: 23117 = 00005a4d

0:000> ? dwo(400000)

Evaluate expression: 9460301 = 00905a4d

0:000> ? qwo(400000)

Evaluate expression: 12894362189 = 00000003`00905a4d

0:000> ? poi(400000)

Evaluate expression: 9460301 = 00905a4d

0:000> ? hi(poi(400000))

Evaluate expression: 144 = 00000090

0:000> ? low(poi(400000))

Evaluate expression: 23117 = 00005a4d

转载于:https://www.cnblogs.com/taco/archive/2009/11/21/1607651.html

总结

以上是生活随笔为你收集整理的Windows软件调试学习笔记(1)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。