. CODE
HWND PRET
TRTCB
? D IDT PROC U
ADD E LDT R VCALL
ADDR EC LINES RS VER
BC EXP MakePE S VM
BD EXP16 MOD16 SRC VXD
BE EXP32 MOD32 SRCLINES VXDSYM
BL FKEY NAME SS W
BP FILE P Suspend WC
BPE FONT PAGE SYM WD
BPIO G PageIn T WMSG
BPM GDT PDLL32 TABLE WR
BPMSG H PEDump task WS
BPMX HBOOT PHYS thread X
BPX HELP PMODULE TRNEWDOS
CLEARDR HotKey PNEWSEC TRNEWTCB
命令: .
作用: 代表當(dāng)前值(如當(dāng)前進(jìn)程,當(dāng)內(nèi)存區(qū)域等)
用法:
命令: ?
作用: 幫助,相當(dāng)于“HELP”或“H”命令
用法:
命令: ADD STACK|DATA|DASM
作用: 增加一個(gè)堆棧/數(shù)據(jù)/反匯編窗口
用法: 例:ADD STACK
ADD DATA
ADD DASM
命令: ADDR 內(nèi)存句柄|過程名
作用: 顯示或是切換內(nèi)存區(qū)域
用法: 用來察看某一個(gè)任務(wù)的私有內(nèi)存區(qū)域 或是加參數(shù)[內(nèi)存區(qū)域句柄|過程名]在TRW2000中切換某一任務(wù)的私有內(nèi)存區(qū)域?yàn)楫?dāng)前可尋址的內(nèi)存區(qū)域。
一些參數(shù)的顯示:
.HANDLE 內(nèi)存區(qū)域控制塊的地址
.PGTPTR 每個(gè)任務(wù)私有頁表的起址
.TABLES 每個(gè)私有頁表中的表項(xiàng)數(shù)目
.MINADDR 每個(gè)任務(wù)的線性地址的起址
.MAXADDR 每個(gè)任務(wù)的線性地址的終址
.MUTEX VMM用于頁表管理的句柄
.OWNER 使用這塊內(nèi)存區(qū)域的實(shí)例的名字。如果有多個(gè)相同名字的實(shí)例運(yùn)行,ADDR帶OWNER名字切換的話,切到表中的第一個(gè)有此NAME的實(shí)例所占的內(nèi)存區(qū)域。所以帶HANDLE切換的話比較精確。
當(dāng)用ADDR加參數(shù)后,可以用上面提到過的"."命令來回到TRW2000彈出時(shí)所屬的任務(wù)內(nèi)存區(qū)域。
命令: BC list|*
作用: 清除一個(gè)或多個(gè)斷點(diǎn)
用法: 清除斷點(diǎn)后,用BL命令就看不到斷點(diǎn)列表,且被清除的斷點(diǎn)不再起作用。
參數(shù): list: 可以是將要清除的一系列斷點(diǎn),中間用空格或逗號隔開。
*: 清除所有的斷點(diǎn)。
命令: BD list|*
作用: 使一個(gè)或多個(gè)斷點(diǎn)失效
用法: 使某個(gè)斷點(diǎn)失效與 BC 命令的清除不同,暫時(shí)失效的斷點(diǎn)可以用 BE 命令來恢復(fù)。而 BC 命令是徹底清除
參數(shù):list: 可以是單個(gè),也可以是一系列斷點(diǎn),中間用空格或逗號隔開。
*: 禁止所有的斷點(diǎn)。
命令: BE list|*
作用: 恢復(fù)被 BD 命令使之失效的斷點(diǎn)。(每當(dāng)新定義斷點(diǎn)或編輯斷點(diǎn)時(shí),系統(tǒng)自動(dòng)將其置為有效)
用法: 參數(shù):list: 可以是單個(gè),也可以是一系列斷點(diǎn),中間以空格或逗號隔開。
* : 恢復(fù)所有的斷點(diǎn)。
命令: BL
作用: 顯示當(dāng)前所設(shè)的斷點(diǎn)
用法: 用 BL 命令顯示當(dāng)前所有斷點(diǎn)的序號(這個(gè)序號就是使用BC BD BD等命令時(shí)要指定的)、類型、是否被禁止等信息。如果是被BD禁止的斷點(diǎn),會(huì)在序號后出現(xiàn)一個(gè)"*"號。
命令: BP [address][if (condition)]
作用: 設(shè)置通過執(zhí)行地址或所設(shè)條件激發(fā)的斷點(diǎn)。
用法: 例:BP if (eip>10000)
命令: BPE number
作用: 編輯一個(gè)已存在的斷點(diǎn)。
用法: 用BPE命令可以很方便地修改一個(gè)已經(jīng)存在的斷點(diǎn)。
但要注意一點(diǎn): BPE 在執(zhí)行時(shí)會(huì)先將你所要修改的斷點(diǎn)清除然后再將改過的使能。
如果你在修改時(shí)按ESC鍵退出修改那么原先的斷點(diǎn)也就不存在了 修改錯(cuò)誤的結(jié)果也是一樣的,會(huì)造成原先的斷點(diǎn)消失。
命令: BPIO port
作用: 設(shè)置一個(gè)由I/O端口觸發(fā)調(diào)試寄存器斷點(diǎn)。
用法: 相關(guān)內(nèi)容: BreakPoint Overall
命令: BMSG hwnd [msg] hwnd為句柄 msg為用于觸發(fā)的消息
作用: 設(shè)置由Windows消息觸發(fā)的斷點(diǎn)
用法: BPMSG hwnd [msg]
相關(guān)內(nèi)容:
WMSG
BreakPoint Overall
例:BMSG 12c wm_destroy
命令: BPM address R
BPM address W
BPM address X
作用: 通過DRx設(shè)置一個(gè)硬件斷點(diǎn);相關(guān)內(nèi)容: BreakPoint Overall
用法:
命令: BPMX 地址
作用: 通過DRx設(shè)置一個(gè)可執(zhí)行的斷點(diǎn)
用法: 等同于命令 'BPM address X'
命令: BPX [[seg:]address]
BP [[seg:]address]
作用: 執(zhí)行時(shí)斷點(diǎn);TRW 會(huì)在代碼中相應(yīng)位置插入一條 int3(0xcc) 指令。
用法: 相關(guān)內(nèi)容:
BreakPoint Overall
BPMX
命令: CLEARDR 清除DRx寄存器
作用:
用法:
命令: CODE [ON|OFF|number]
作用: 設(shè)置代碼窗口的顯示方式
用法: 設(shè)為ON則顯示16進(jìn)制的機(jī)器碼,設(shè)為OFF則不顯示16進(jìn)制的機(jī)器碼
number決定顯示代碼的風(fēng)格(方式),可以以各種方式顯示
命令: D [address]
作用: 將內(nèi)存某處的內(nèi)容映像到數(shù)據(jù)窗口或者將內(nèi)存某處的內(nèi)容映像到文件中。
用法: D range >200456125628.htm
例:
d 401000
d cs:402000
d 401000402000 >myfile
d 401000 L 100 >myfile
命令: E [address [partern]]
作用: 編輯內(nèi)存
用法: 例: E ds:edi 'nothing'0
命令: EC
作用: 打開或關(guān)閉子窗口
用法: 如果當(dāng)前子窗口不可見,那么EC命令將打開它,反過來,EC命令將關(guān)閉它。
命令: EXP
作用: 顯示一個(gè)模塊所有的API。
用法: EXP !
Exp module-name!
Exp partial_export_name
搜索所引用的所有模塊輸出的 API 函數(shù)名
EXP !
Exp kernel32!
Exp *
Exp Get*
Exp *window*
命令: EXP16
作用: 顯示16位的exp
用法:
命令: EXP32
作用: 顯示32位的exp
用法:
命令: FILE [source-200456125628.htm]
作用: 選擇/顯示源文件。
用法:
命令: FONT 1|2
作用: 設(shè)定TRW2000用于顯示的字體,默認(rèn)為2。
用法:
命令: FKEY [function-key strings]
作用: 顯示/設(shè)置功能鍵
用法: 例:
FKEY
FKEY f10 "d 2;U 3;"
命令: G
作用: 運(yùn)行
用法: G address ;運(yùn)行到由address指出的地址 等同于 'gox address'命令
G if conditions ;如果 conditions 滿足則運(yùn)行
命令: GDT [Selecter]
作用: 顯示指定全局選擇子GDT的詳細(xì)信息。
用法:
命令: H [command]
作用:
用法:
命令: HELP [command]
作用: 顯示所有命令的幫助,后面跟命令名則顯示該命令的詳細(xì)說明。
用法:
命令: HOTKEY
作用: 顯示當(dāng)前有效的熱鍵,也可以顯示新按鍵。
用法:
命令: HBOOT
作用: 重新熱啟動(dòng)計(jì)算機(jī)
用法: HBOOT 將重新啟動(dòng)計(jì)算機(jī),等同于按 Ctrl+Alt+Del 組合鍵。
HBOOT 一般都能成功只有特殊情況下(某些插卡需要重加電)才用機(jī)器上的RESET或POWER鍵
命令: HWND [HWND]
作用: 顯示W(wǎng)inodws句柄信息。
用法:
命令: IDT number
作用: 顯示IDT的信息
用法:
命令: LDT number
作用: 顯示LDT的信息
用法:
命令: Page [address [L length]]
作用: 顯示頁表信息。
用法: address : 段:偏移量 或 選擇符:偏移量 格式的地址
length : 要顯示頁的數(shù)量.PAGE 命令用來列出當(dāng)前頁目錄和各個(gè)頁表的情況.
命令: PageIn <address>
作用: 將非當(dāng)前頁調(diào)入內(nèi)存。
用法: 例:PageIn cs:401000
命令: LINES [25 | 43 | 50 | 60]
作用: 設(shè)置/顯示當(dāng)前顯示的屏幕行數(shù)。
用法: 例: lines 43
相關(guān)主題:
Ini file
命令: MOD16 [hmod|mod_name]
作用: 顯示16位模塊列表,如果后跟mod_name則顯示指定模塊的詳細(xì)信息。
用法: MOD16
MOD16 1cf
MOD16 KERNEL
MOD16 . ; .是指當(dāng)前模塊
命令: MOD32 [hmod|mod_name]
作用: 顯示32位模塊列表,如果后跟mod_name則顯示指定模塊的詳細(xì)信息。
用法: MOD32
MOD32 1cf
MOD32 KERNEL32
MOD32 . ; .是指當(dāng)前模塊
命令: MAKEPE
作用: 從內(nèi)存中整理出一個(gè)名為 'newpe.exe' 的PE格式的exe文件。
用法: 每次使用該命令前應(yīng)先刪除當(dāng)前目錄下的 'newpe.exe' 否則 TRW2000 會(huì)將新的文件附加在原文件的后面。當(dāng)前的 EIP 將成為新的程序入口。
該命令將在當(dāng)前目錄下生成文件,但生成文件的 Import table 已經(jīng)重新生成過了。
命令: NAME address newname
作用: 定義指定地址的新符號名
用法:
命令: PDLL32
作用: 運(yùn)行到32位的 DLL 的入口。
用法: PDLL32 mydll32.dll
命令: PEDUMP
作用: 將PE文件的內(nèi)存映像直接映像到文件'DUMP1.EXE',
用法: 您只要使用 MakePE 命令就可以重新整理出一個(gè)可用的 PE 可執(zhí)行文件來。
命令: BP if condition
作用: 條件斷點(diǎn),當(dāng)條件滿足時(shí)產(chǎn)生中斷
用法: 例: bp if (eax>=3456787)
bp if (dx<543)
bp if (ch==23)
go if (ah!=34)
命令: P 單步跟蹤指令
作用: P 命令將單步執(zhí)行程序。在匯編模式中,當(dāng)遇到 CALLINTLOOPREP指令時(shí),P將不跟蹤進(jìn)去直到這些指令執(zhí)行完畢,控制才返回TRW2000。換句話說,P命令是"跨"過這些指令的。
P 后加RET 參數(shù),SoftICE將一直單步執(zhí)行直到它找到一條返回語句(RETRETF)。在源程序模式中,P 命令將執(zhí)行一個(gè)源程序表達(dá)式,但也不跟蹤到子例程中去。
P 命令實(shí)際上是利用了單步標(biāo)志。 大多數(shù)情況下是如此.但碰到CALLINTLOOPREP指令時(shí),就用INT 3(一次性)在這些指令的后面設(shè)一下。
用法: P 命令對應(yīng)的有快捷鍵 F10
命令: PNEWSEC
作用: 運(yùn)行直到進(jìn)入一個(gè) PE 程序內(nèi)存的新的 section (這個(gè)詞不知如何描述:D)時(shí)產(chǎn)生斷點(diǎn)
用法:
命令: PMODULE
作用: 'pret'(相當(dāng)于按<F12>) 直至CS:EIP位于模塊中。
用法:
命令: PRET
作用: 運(yùn)行到遇到 RETRETFIRET指令時(shí)停下。
用法: 快捷鍵: F12
命令: PROC
作用: 顯示進(jìn)程列表
用法: output:
:proc
Process pProcess ID Threads Context
-------- -------- -------- ------- --------
Trw2k 81641D9C FFFB0415 1 C8070F70
Iexplore 81638644 FFFC9FCD 4 C80EA130
WINOLDAP 81636FE0 FFFC7669 1 C17D9E80
Spool32 8162C990 FFFDD019 2 C80711A0
KERNEL32 81702204 FFEF3B8D 8 C151CEA0
Mdm 8161B708 FFFEAE81 2 C17E4DC0
Osa 81615458 FFFE4DD1 1 C17DC0D0
RUNDLL 816239D8 FFFD2051 1 C807C010
Internat 8161A9A4 FFFEB02D 1 C17D5140
Systray 81616B5C FFFE72D5 1 C17C1E10
Taskmon 81616080 FFFE7909 1 C17B9790
Explorer 8160E6A0 FFFFFF29 4 C153FCC0
Mstask 8160D390 FFFFCA19 2 C152C9E0
Mprexe 8160720C FFFF6B85 1 C15274F0
MSGSRV32 8160603C FFFF79B5 1 C1442F90
命令: R [-d | register-name | register-name [=] value]
作用: 顯示或更改寄存器的內(nèi)容。
用法: 如果 R 命令不加參數(shù),光標(biāo)將移到寄存器窗口中,進(jìn)行實(shí)時(shí)修改。如果當(dāng)前寄存器窗口不可見, 那么這個(gè)命令將自動(dòng)顯示它。
另外修改FL寄存器時(shí)參數(shù)不必按照順序如: R fl=o+a-c 可以一次修改3個(gè)標(biāo)志位。
命令: RS
作用: 顯示用戶屏幕。 (快捷鍵為<F4>).
用法:
命令: S
作用: 在內(nèi)存中搜索指定內(nèi)容
用法: 例: S 0 L -1 'window'
S 100200 'bug12'34
命令: SRC
作用: 切換源代碼模式,可以是源代碼|混合代碼|單純的可執(zhí)行代碼
用法:
命令: SUSPEND
作用: 暫停當(dāng)前的線程,并退出 TRW2000,按熱鍵返回。
用法:
命令: SYM
作用: 顯示所有的調(diào)試符號列表。
用法:
命令: T [startaddress][count]
作用: 單步跟蹤指令。 T 命令是利用CPU的單步標(biāo)志來進(jìn)行單步跟蹤的。如果指定 startaddress,將從指定的地址處開始單步跟蹤。如果寄存器窗口可見,則寄存器窗口將高亮顯示哪些改變的寄存器的值。
用法: 快捷鍵為<F7>
命令: TABLE [table name]
作用: 選擇/顯示調(diào)試符號表
用法:
命令: TASK
作用: 顯示任務(wù)列表
用法: output:
:task
W16TDB TaskName THCB Ring0TCB TDBX
------ -------- -------- -------- --------
39E6 Trw2k 81643454 C8095D30 C8092650
3EAE WINOLDAP 816371E4 C80BC9F0 C17DC9E0
0FCE Spool32 8162CB7C C152A970 C8081730
00CF KERNEL32 817022DC C29202B0 C1415CF0
2FCE Mdm 8161B930 C17E4EF0 C17DEE40
2A16 Osa 81625884 C17DC290 C17DC170
2E56 RUNDLL 8161FD80 C807C1D0 C807C0A0
305E Internat 8161ABA0 C17D5320 C17D51F0
21DE Systray 81616D00 C17C1BC0 C17C1EC0
226E Taskmon 81616294 C17B9970 C17B9840
2466 Explorer 8160E8B0 C153FEA0 C153FD70
265E Mstask 8160D5A8 C152AE60 C152A150
1D8E Mprexe 81607434 C1528AB0 C1526C40
1FC6 MSGSRV32 8160620C C144B0A0 C14D1390
命令: THREAD
作用: 顯示線程的有關(guān)信息。
用法: 例:
THREAD [TCB]
THREAD . ; .代表當(dāng)前線程
THREAD c1547690
output:
:thread
Ring0TCB ID Context Ring3TCB ThreadID Process TaskDB PDB SZ Owner
c1574d40 7f c1574b60 81641d88 fffb069b 81641b68 1BEE 1BE7 32 *Trw2k
c152cbb0 2a c152ca60 8162a678 fffdbd6b 8160fee0 2CAE 2C7F 16 *WINOLDAP
c1547690 21 c1548cc0 81623a94 fffd2187 8162383c 307E 3077 16 *RUNDLL
c15245b0 8 c1431fc0 8160b2b4 ffffa9a7 81709204 00C7 00D7 32 KERNEL32
c14167d0 2
c29202b0 1 c1431fc0 817092dc ffef89cf 81709204 00C7 00D7 32 VM 1
c65202b0 2b VM 2
:thread c1547690
Ring0TCB ID Context Ring3TCB ThreadID Process TaskDB PDB SZ Owner
c1547690 21 c1548cc0 81623a94 fffd2187 8162383c 307E 3077 16 *RUNDLL
Thread Flag = 00511401
00000001 ????
00000400 THFLAG_THREAD_BLOCKED
00001000 ????
00010000 THFLAG_OEM
00100000 ????
00400000 ????
ClientPtr = C5BF3F70
TDBX = C1548DD0
命令: TRNEWDOS
作用: 捕獲另外的DOS程序。
用法:
命令: TRNEWTCB
作用: 捕獲一個(gè)新的線程的入口操作碼
支持 32位和16位程序
不要在DOS提示符下運(yùn)行 Windows 程序,否則 TRW2000 會(huì)捕獲 START.EXE。
用法:
命令: TRTCB <thread_handle>
作用: 跟蹤一個(gè)正在運(yùn)行的線程。
用法:
命令: U [address]
作用: 在代碼窗口反匯編程序或?qū)⒎磪R編的代碼輸出到一個(gè)文件。
用法: U range >200456125628.htm
例: u 401000
u cs:402000
u 401000402000 >myfile
u 401000 L 100 >myfile
命令: VER
作用: 顯示TRW2000的版本信息
用法:
命令: VCALL
作用: 顯示VxD 調(diào)用
用法: Vcall * -顯示所有的 VxD 調(diào)用
Vcall num -如果指定的num<10000h 顯示所有的 VxD 調(diào)用
-如果指定的num>10000h 則顯示所指定的 VxD 調(diào)用
例:
Vcall partial-name
Vcall 0d
Vcall 100001
Vcall *sys*
命令: VM [VMID]
作用: 顯示虛擬機(jī)的信息。
用法: 如果VM命令不加參數(shù),將顯示系統(tǒng)中所有虛擬機(jī)的信息。如果加 VMID 參數(shù)該VM的寄存器值將被顯示。
這里的寄存器值是在VM控制塊用戶區(qū)中的寄存器值。所以,這些寄存器表示的是最后當(dāng)有內(nèi)存地址切換時(shí)存入該控制塊時(shí)的值。
當(dāng)TRW2000彈出時(shí)正好某個(gè)VM 正在運(yùn)行的話,在寄存器窗口中的值才是真正當(dāng)前的值,而不是用VM命令在命令窗口中看到的值。
有一點(diǎn)要注意:如果你在某個(gè)中斷例程中的頭幾句指令處,而此時(shí)這個(gè)VM的寄存器值正在被存入控制塊,那么可能當(dāng)前只有CS:IP的值(由VM顯示)是真的。其余的有可能還沒有存入控制塊。
命令: VXD [VXDNAME]
作用: 顯示W(wǎng)indows VxD 映象。
VXD 命令將顯示指定的某個(gè)VxD的信息。如果不加參數(shù),VXD命令將顯示系統(tǒng)中所有的虛擬設(shè)備驅(qū)動(dòng)程序的映象。動(dòng)態(tài)裝載的VxD將顯示在靜態(tài)裝載的VxD后面。
用法:
命令: W range 200456125628.htm
作用: 將內(nèi)存內(nèi)容寫入指定文件
用法: 例: w ds:401000402000 myfile
w 401000 L 100 c:/myfile.bin
命令: WC [codewindow_lines]
作用: 設(shè)置代碼窗口的行數(shù),如果不帶參數(shù)則切換其開/關(guān)狀態(tài)。
用法: 例:
wc 25
wc
命令: WD [datawindow_lines]
作用: 設(shè)置數(shù)據(jù)窗口的行數(shù),如果不帶參數(shù)則切換其開/關(guān)狀態(tài)。
用法: 例:
wd 25
wd
命令: WR
作用: 打開或關(guān)閉寄存器窗口
如果當(dāng)前寄存器窗口不可見,那么WR命令將使之可見,反過來,WR命令將使寄存器窗口不可見。
寄存器窗口顯示80386寄存器集。
用法:
命令: WS
作用: 打開或關(guān)閉堆棧窗口
如果當(dāng)前堆棧窗口不可見,那么WS命令將使之可見,反過來,WS命令將使堆棧窗口不可見。
用法:
命令: WMSG
作用: 顯示W(wǎng)indows消息
用法: WMSG [partial-name] [WMSG-number]
例:
WMSG 12
WMSG wm_destroy
命令: X
作用: 退出當(dāng)前調(diào)試狀態(tài),返回Windows
用法:
--------------------------------------------------------------------------------
條件斷點(diǎn)語法
幾乎所有的斷點(diǎn)都可以通過如下的語法:
BP?? <parameters> [IF (conditions)] [DO "statement"]
而且開始的2個(gè)字母 'BP' 可以代換成 'GO',即:
GO?? <parameters> [IF (conditions)] [DO "statement"]
來設(shè)置條件斷點(diǎn)。 TRW2000 能夠根據(jù)要求設(shè)置、使用和清除這些斷點(diǎn)。
conditions:
用法: 條件必須用閉括符括起來:
Operator Meaning
== Logical Equal
!= Logical Not equal
> Logical Greater than
>= Logical Greater than or equal to
< Logical Less than
<= Logical Less than or equal to
& Bit and
| Bit or
^ Bit xor
>> Bit shift right
<< Bit shift left
;not support ! Logical NOT
&& Logical AND
|| Logical OR
+ add
- sub
* mul
/ division
% mod
() parenthesis
(byte)
(word)
(dword)
* get value from point
+ positive
- negative
Ex:
g if ((byte)*eip==c2)
g if (*esp==ebx)
go if (eip>401000&&eip<<10000000)
未注冊版本,條件表達(dá)示長度有限制.
Do statement:
用法: <statement> 可以是任何有效的 TRW2000 的命令,但必須用雙引號""引起來。
例:
BPX cs:401000 if (eax>200) do "d eax"
GOX 401000 if (cs!=28) do "d ss:esp"
G if (eip<1000)
(編輯:天命孤獨(dú))
新聞熱點(diǎn)
疑難解答
圖片精選