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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Discuz!NT 缓存设计简析 [原创
- 下一篇: windows mobile开发循序渐进