內存讀取
[addr] 讀取DWORD / QWORD
n:[addr] 從addr開始讀取n個字節
seg:[addr] 段寄存器加偏移讀取DWORD / QWORD seg
可以gs
,es
,cs
,fs
,ds
,ss
byte:[addr] 讀取BYTE
word:[addr] 讀取word
dword:[addr] 讀取dword
qword:[addr] 讀取qword
字節/字/雙字/四字/指針(ptr)
ReadByte,Byte,byte(addr):從 addr 讀取一個字節,並返回該值。
ReadWord,Word,word(addr):從 addr 讀取一個字(2字節),並返回該值。
ReadDword,Dword,dword(addr):從 addr 讀取雙字(4字節),並返回該值。
ReadQword,Qword,qword(addr):從 addr 讀取四字(8字節),並返回該值(僅用於x64)。
ReadPtr,ReadPointer,ptr,Pointer,pointer(addr):從 addr 讀取一個指針(4/8 字節),並返回該值。
數字
默認情況下,所有數字都解釋為十六進制!如果要指定,可以x
或0x
作為前綴。十進制數可以通過在數字前加點號來使用.123=7B
模塊數據
鍵入GetProcAddress,
它將自動解析為函數的實際地址。要明確定義從哪個模塊加載API,請使用:[module].dll:[api]
或[module]:[api]
。當[module]
為空字符串時:GetProcAddress
,將使用CPU中當前選擇的模塊。
加載的模塊基地
如果您要訪問加載模塊的基地址,你可以寫:[module]:0
,[module]:base
,[module]:imagebase
或[module]:header
RVA /文件偏移量
如果要訪問模塊RVA,則可以寫[module]:0+[rva]
,也可以寫[module]:$[rva]
。如果要將文件偏移量轉換為VA,可以使用[module]:#[offset]
。例如,當[module]
為空字符串時,將使用CPU中當前選擇的模塊
模塊的入口點
要訪問一個模塊的入口點,你可以寫[module]:entry
,[module]:oep
或[module]:ep
。請注意,當有名稱為的導出時entry
,oep
否則ep
將返回這些地址
表達式
調試器允許使用基本表達式。只需在命令窗口中鍵入一個表達式,結果就會顯示在控制台中。除了計算之外,它還允許使用類似C的語法快速更改變量
- 括號:
(1+2)
,[1+6]
比其他操作優先。 - 一元減/二進制非/邏輯非:(
-1
負1),~1
(二進制非1),!0
(邏輯非0)。 - 乘法/除法:(
2*3
常規乘法),2`3
(得到乘法的高分),6/3
(常規除法),5%3
(除法的模/余數)。 - 加法/減法:(
1+3
加法),5-2
(減法)。 - 左/右移位/旋轉:(
1<<2
向左移位,shl表示無符號,sal表示有符號),10>>1
(向右移位,shl表示無符號,sal表示有符號),1<<<2
(向左旋轉),1>>>2
(向右旋轉)。 - 小(相等)/大(等於):
4<10
,3>6
,1<=2
,6>=7
(如果真解析為1,0,如果假)。 - 等於/不等於:
1==1
,2!=6
(如果為true,則解析為1;如果為false,則解析為0)。 - 二進制和:(
12&2
常規二進制和)。 - 二進制異或:(
2^1
常規二進制異或)。 - 二進制或:(
2|8
常規二進制或)。 - 邏輯和:(
0&&3
如果為true,則解析為1;如果為false,則解析為0)。 - 邏輯或:(
0||3
如果為true,則解析為1;如果為false,則解析為0)。 - 邏輯含義:(
0->1
如果為true,則解析為1;如果為false,則解析為0)
處理信息
peb()
:獲取PEB地址。teb()
:獲取TEB地址。tid()
:獲取當前線程ID