有關SoftICE的詳細操作指導教程

有關SoftICE的詳細操作指導教程
 
  

命令: .
作用: 在代碼窗口中定位當前指令
語法: .
用法: 當代碼窗口可見時, .命令(點命令)使得當前的CS:EIP
所指向的指令可見, 並且高亮顯示. 另外,此命令也把
SoftICE 從其他內存區域中切回原先彈出的內存區域.
詳見後面的ADDR命令.
點評:   
當你在代碼窗口中上下瀏覽時,有可能走得很遠, 那麼
這時一個"." 命令會讓你在下一瞬間回到SOFTICE當前
所在的CS:EIP處,再也用不着按PGUP,PGDOWN很多次了!
 
 
命令: ?
作用: 計算一個表達式的值
語法: ? 表達式
用法:   
計算一個表達式的值.並以十六進制,十進制,帶符號的
十進制(<0時有)和ASCII值多種形式顯示計算結果.
點評:   
一個非常高級的計算器, 諸如46578*1999+ESI 之類的
計算不會再讓你煩惱,另外由於可以顯示ASCII,所以可
以很方便地在各種數制之間察看.
 
命令: A
作用: 寫入彙編代碼
語法: A [地址]
用法:   
用SICE內置的彙編器在內存中寫入彙編代碼.彙編器支
持標準的80x86指令集.包括386,486,Pentium,Pentium
-Pro,MMX,協處理器,新版的SICE還支持AMD的3D Now!,
PII,PIII的特有指令集.彙編將在A後的地址處開始.如
果在A後沒有加地址, 那麼彙編將在你上次彙編結束處
開始.如果你是第一次鍵入A命令,且沒有追加地址那麼
彙編將在當前CS:EIP處開始.另外,鍵入A命令後, 在單
獨一行指令欄中鍵入USE16或USE32,將告訴彙編器是採
用16位還是32位指令,默認是和當前的CS寄存器的模式
一致.
點評:   
這是和DOS下DEBUG.EXE的用法一樣的命令.一般改程序
時,用A命令寫入,再用CODE ON(見稍後)命令看代碼,記
錄原來的代碼和改過的代碼後再用工具軟件如PCTOOLS
HACKVIEW之類查找修改.
 
命令: ADDR
作用: 在SoftICE中顯示或是切換內存區域
語法: ADDR [內存區域句柄|過程名]
用法:     
用來察看某一個任務的私有內存區域, 或是加參數[內
存區域句柄|過程名]在SoftICE中切換某一任務的私有
內存區域爲當前可尋址的內存區域.

一些參數的顯示:
.HANDLE   內存區域控制塊的地址
.PGTPTR   每個任務私有頁表的起址
.TABLES   每個私有頁表中的表項數目
.MINADDR  每個任務的線性地址的起址
.MAXADDR  每個任務的線性地址的終址
.MUTEX    VMM用於頁表管理的句柄
.OWNER    使用這塊內存區域的實例的名字

如果有多個相同名字的實例運行, ADDR帶OWNER名字切
換的話,切到表中的第一個有此NAME的實例所佔的內存
區域.所以帶HANDLE切換的話比較精確. 當用ADDR加參
數後,可以用上面提到過的"."命令來回到SoftICE彈出
時所屬的任務內存區域.
點評:   
這個牽涉到CPU的保護模式尋址方式和WINDOWS 的內存
管理,由分段機構產生的32位線性地址要經過分頁機構
再轉化爲物理地址,這要牽涉到兩個表的尋址.WINDOWS
每次切換都將每個任務的私有頁表拷貝到CR3寄存器所
指的當前頁表中.而ADDR所作的和WINDOWS所作的一樣.
所以當你在一個任務中彈出時,可以通過ADDR可以來看
別的任務的私有內存區域.
 
命令: ALTKEY
作用: 改變用來呼叫SoftICE的熱鍵
語法: ALTKEY [ALT 字母 | CTRL 字母]
用法:   
SoftICE默認的熱鍵爲CTRL+D, 用此命令可以將熱鍵改
變,如果每次啓動機器都要改, 則可以把這條命令放入
WINICE.DAT中.
這條命令是爲了防止某些程序和SoftICE的熱鍵相沖突
而設的.如:ALTKEY CTRL S 將熱鍵改爲CTRL+S
點評: 無.
 
命令: ALTSCR
作用: 切換SoftICE的視屏輸出.
語法: ALTSCR [ON|OFF]
用法:   
如果你有雙顯示器, 則這條命令將使SoftICE的窗口顯
示在另一臺單顯上.注意,是老式的單顯,不是VGA單顯.
實際上在啓動WINICE時可用參數/M強迫SoftICE用單顯
來顯示.也可在WINICE.DAT中加入初始化串.在WIN95中
用SoftICE自帶的VIDEOSETUP可以很方便地設定.
例:ALTSCR ON  將使輸出改變到單顯上.
點評:   
這條命令將使SoftICE同一些老顯卡兼容, 也使調試變
得方便,試想一臺顯示器顯示正常的圖像, 另一臺來顯
示跟蹤屏幕,免去了按F4看原畫面的步驟, 在某些場合
還是用得上的. 以前的WDEB386調試器就非要雙監視器
才能工作.而SoftICE只要一臺顯示器就行了,這是個很
大的進步,但爲了和老傳統兼容, 它也提供了這個命令
方便用戶.
 
命令: ANSWER
作用: 自動監控通訊端口及將輸出轉移到MODEM
語法: ANSWER [on [com-port] [baud-rate] [i=init] |

off]
用法:   
此命令可以使SoftICE監控通訊端口, 並將輸出改變到
一臺遠程的PC機上, 此遠程PC機必須運行 SERIAL.EXE
(或SERIAL32.EXE).當SoftICE檢測到遠程PC上SERIAL.
EXE發來的特定信息, 就彈出, 告訴你現在將連上遠程
PC,然後再退出窗口,聯接完成.

一些參數:
.COM-PORT   串行通訊口,默認爲COM1
.BAUD-RATE  1200, 2400, 4800, 9600,19200,23040,
            28800,38400,57000,115000
            其中38400爲默認波特率.
.I=INIT     MODEM的初始化字符串.
點評: 無,沒有用過,不知道:-(

有關SoftICE的詳細操作指導教程(2)時間:2009-08-19 14:05

來源:未知 作者:編輯B 點擊:2539次
二 命令: BC 作用: 清除一個或多個斷點 語法: BC list |

* 用法: 清除斷點後,用BL命令就看不到斷點列表, 且被清除

的斷點不再起作用.參數:list: 可以是將要清除的一系列斷點

,中間用空格或逗 號隔開.* : 清除所有的斷


 
  

 

 

命令: BC
作用: 清除一個或多個斷點
語法: BC list | *
用法: 清除斷點後,用BL命令就看不到斷點列表, 且被清除的
斷點不再起作用.
參數:  
list: 可以是將要清除的一系列斷點,中間用空格或逗
      號隔開.
*   : 清除所有的斷點.
點評: BC==Breakpoint Clearing
 
命令: BD
作用: 使一個或多個斷點失效
語法: BD list | *
用法:   
使某個斷點失效不同與 BC 命令的清除,暫時失效的斷
點可以用 BE 命令來恢復.而 BC 命令是徹底清除.
參數:
list: 可以是單個,也可以是一系列斷點, 中間用空格
      或逗號隔開.
*   : 禁止所有的斷點.
點評: BD==Breakpoint Disablling
 
命令: BE
作用: 使一個或多個斷點恢復有效
語法: BE list | *
用法:   
用來恢復前次用 BD 命令使之失效的斷點. (每當新定
義斷點或編輯斷點時,系統自動將其置爲有效)
參數:
list: 可以是單個,也可以是一系列斷點, 中間用空格
      或逗號隔開.
*   : 恢復所有的斷點.
點評: BE==Breakpoint enablling
 
命令: BH
作用: 在SoftICE歷史數據庫中顯示或是選擇曾經設過的斷點
語法: BH
用法:   
用BH命令後,SoftICE將顯示一個表,每一行是一個斷點
,都是以前使用者曾經下過的斷點, 這時可以用上下光
標鍵來定位,用INSERT鍵選擇,再用ENTER鍵來確定. 用
ESC鍵取消.SoftICE只記錄最近的32個斷點. 而且只在
WIN95正常退出後記錄(記錄到WINICE.BRK中), 這樣就
有一個問題.如果你在MSDOS.SYS配置中是BootGUI=1的
話(即最正常的啓動方式),當你SHUT DOWN機器時,控制
並不回到SoftICE手中,就無法記錄剛纔的斷點.這時只
有改爲BootGUI=0.
點評:   
注意:SoftICE只在SHUT DOWN時記錄,如果你用"重新啓
動並切換...",那是不行的.至少在我的V3.20是不行的
.而且,如果你"重新啓動並切換...", 再用EXIT命令想
退回到WIN95,很容易出現VxD聯接錯.因爲這樣 WINICE
並沒有完全退出內存,用 MEM.EXE可以看到這點.所以,
SoftICE的使用者最好在MSDOS.SYS中將上面所說的Boo
-tGUI置爲0.如果怕這樣用多重配置的話還要每次開機
敲一個WIN,可以在AUTOEXEC.BAT中改動,加入WIN.COM.
(可不要在WINICE.EXE後再加WIN.COM!畫蛇添足!)
若用SoftICE次數不多的話, 可以每次啓動WINDOWS後,
再重新啓動並切換到MS-DOS方式,再打WINICE.EXE, 這
樣也可以的. BH的好處是,可以省去紙筆, 下次重調試
這個程序時,不用再挖空心思想斷點了.
 
命令: BL
作用: 顯示當前所設的斷點
語法: BL
用法:   
BL 命令顯示當前所有斷點的序號  (這個序號被BC BE
BD 等命令所用),類型,是否被禁止等信息.如果是被禁
止的斷點,會在序號後跟一個"*"號.比如用上面提到的
BD 命令會產生這種效果)
點評: BL==Breakpoint listing
 
命令: BMSG
作用: 在WIN95的消息上下斷點
語法: BMSG window-handle [L] [begin-msg [end-msg ]]
[IF expression][DO "command1;command2;..."]
用法:   
window-handle: 消息發向的窗口句柄
begin-msg    : 消息標識字的範圍,如果沒有end-msg
               ,那麼只在begin-msg上下斷點, 否則
               在區域內所有消息都會被下斷點
end-msg      : 見上.
IF-expression: 表達式的值爲真時,SoftICE才彈出.
DO "command1;command2;...":
               當到達斷點時,執行的一系列SoftICE
               命令.
L            : 表示不彈出SoftICE,而是在命令窗口
               中記錄WIN95消息.

上面只有窗口句柄是必需的,其他都是可選項. 如果沒
有指定在哪個MSG上下斷點, 那麼所有發向該窗口的消
息都會被攔截.窗口句柄可以用HWND命令來觀看,MSG標
識符可以用 WMSG 命令來察看,可以是16進制的數, 也
可以用習慣的書寫方式,如:WM_CREATE.SoftICE彈出後
,會停在處理該消息的過程的第一句代碼上.
點評:   
BMSG=(set)Breakpoint on MeSsaGe
WINDOWS本身是由消息驅動的, 所以跟蹤一個消息會得
到相當底層的答案,我主頁上一篇"修改RICHWIN4.3"的
文章就是一個例子.
 
命令: BPE
作用: 編輯一個已存在的斷點.
語法: BPE index_number
用法:   
index_number: 斷點的序號,用 BL 命令可以看到.
用BPE命令可以很方便地修改一個已經存在的斷點, 但
要注意一點: BPE 在執行時,會先將你所要修改的斷點
清除,然後再將改過的使能,如果你在修改時按ESC鍵退
出修改,那麼原先的斷點也就不存在了, 修改錯誤的結
果也是一樣的.原先的斷點消失.
點評: 參見後面的 BPT 命令.

有關SoftICE的詳細操作指導教程(3)時間:2009-08-19 14:05

來源:未知 作者:編輯B 點擊:2540次
三 命令: BPINT 作用: 在某個中斷向量上下斷點 語法:

BPINT int-number [IF expression] [DO

command1;command2;...] 用法: int-number : 中斷向量號,

從0到FFHIF expression: 條件表達式,只有條件爲真時,Sof-

tICE


 
  

命令: BPINT
作用: 在某個中斷向量上下斷點
語法: BPINT int-number [IF expression]
[DO "command1;command2;..."]
用法:   
int-number   : 中斷向量號,從0到FFH
IF expression: 條件表達式,只有條件爲"真"時,Sof-
               tICE纔在斷點處彈出
Do command   : 當SICE彈出時,自動執行的一些命令.
當在硬中斷和CPU異常出錯的向量上下斷點時,SoftICE
會在處理這個中斷的過程的第一條語句時彈出.而軟件
中斷則停在INT XX處.注意:BPINT只對由中斷描述符表
中的中斷起作用(WIN95).如果在一個DOS虛擬機(DOS窗
口)中下此種斷點, 控制是由保護模式轉到虛擬機的中
斷向量表中去.這時如果說停在INT XXH 處, 你用F8跟
下去,是一下子看不到對這個中斷的實模式處理過程的
,要走很遠,這時可用:G @ $ 0:int-number*4  來一下
子走到實模式處的處理過程.
點評:   
注意! SoftICE30的命令手冊(英文版PDF格式在此處寫
錯了!把$寫成&了!)($意思是告訴SoftICE 後跟實模式
的段.以後有專門論及這些符號的文章.)  如果你是在
DOS窗口中用命令行調一個東西, 這時 G @ 0:intno*4
也可以,這時默認的SELECTOR就是實模式,選擇符存在.
但如果在EXPLORER中直接雙擊一個程序, 拿INT 21H來
說,一開頭是在KERNEL中,就非得用 $ 不行了!另外:由
於有了IF 子句,可以很方便地下各種INT XX斷點,比如
在文件打開中斷功能上下斷點 bpint 21 if ah==3d
 
命令: BPIO
作用: 在輸入輸出端口上下斷點
語法: BPIO [-h] port [verb] [IF expression]
[DO "command1;command2;..."]
用法:   
port         : 端口號
verb         : 進行什麼樣的操作時彈出,R爲讀;W爲
               寫 ;RW爲讀寫
IF expression: 條件表達式,只有條件爲"真"時,Sof-
               tICE纔在斷點處彈出
Do command   : 當SICE彈出時,自動執行的一些命令.
-h           : 用硬件除錯寄存器在VxD中下斷點,只
               在PENTIUM級的芯片上才行
當SoftICE彈出時,CS:EIP停在執行I/O操作的下一條指
令處.如果不帶參數 verb,默認爲RW.注意:在WIN95中,
若不帶-h參數,則只能在RING 3中下斷, 若要跟 VXD和
VMM的I/O操作,請加-h.
WIN95本身用VXD掛了很多I/O操作,用TSS可以看到
點評: 可以參看後面要講的TSS命令.
 
命令: BPM
作用: 在內存單元上下斷點
語法: BPM[size] address [verb] [debug-reg] [IF

expression]
[DO "command1;command2;..."]
用法:   
size         : 內存單元大小,B 爲字節(默認);W 爲
               字;D 爲雙字.
verb         : 所進行的操作,R 爲讀;W爲寫;RW爲讀
               寫(默認); X 爲執行.
debug-reg    : 除錯寄存器,DR0,DR1,DR2,DR3.
IF expression: 條件表達式,只有條件爲"真"時,Sof-
               tICE纔在斷點處彈出.
Do command   : 當SICE彈出時,自動執行的一些命令.
當verb 爲 R,W,RW時,一旦彈出,SoftICE停在剛纔發生
內存操作的後一條指令處.爲 X 時,停在將要執行的指
令處.一般沒有必要,不要帶 debug-reg 參數,SoftICE
一開始是自動帶DR3的,以後按順序爲2,1,0  只有當你
調試一個DEBUGGER時,而此DEBUGGER也用到了DRx,才需
特別指定一個防止衝突.
BPM斷點如果下在(400000-7FFFFFFF)內,那麼只有你下
斷點時當前的可尋址區域( 見ADDR的點評)被激活才能
發生中斷.別的不行.但如果斷點下在DLL中,這個DLL在
多個地址區域內都存在,那麼在這多個地址區域內都可
能發生中斷,簡單的例子如KERNEL32.DLL另外,size 參
數要緊跟BPM寫,成BPMD,BPMW之類.
點評: BPM用了DR3-DR0寄存器,所以最多隻能設四個斷點.
 
命令: BPR
作用: 在一個內存範圍上下斷點
語法: BPR start-address end-address [verb] [IF

expression]
[DO "command1;command2;..."]
用法:   
start-address: 起始地址
end-address  : 終止地址
verb         : R 讀;W 寫;RW 讀寫;T 回溯跟蹤指令
               ;TW 回溯跟蹤內存寫
IF expression: 條件表達式,只有條件爲"真"時,Sof-
               tICE纔在斷點處彈出
Do command   : 當SICE彈出時,自動執行的一些命令.
BPR 用來在一段內存區域上下斷點它沒有 X 參數, 但
可用 R 參數代替. T,TW是記錄回溯跟蹤的參數, 具體
可見TRACE命令.BPR 有時會極大地降低系統效能,因爲
所有對斷點所在頁的內存操作都會被SoftICE截獲分析
.如果程序中用到頻繁的內存操作,機器就會相當慢.
當條件滿足,SoftICE彈出時,CS:EIP停在發生內存操作
的那條指令上. BPR 斷點是下在當前被激活的頁表上,
如果你下的RANGE在物理4MB以下,斷點就會在各虛擬機
中,這樣,BPR就對LDT,GDT,IDTs,頁表本身不起作用.
另外,VMM中0級堆棧和嚴重(?)內存區域(critical ar-
eas)也不允許下BPR,很有可能死機.在95中,BPR只能用
於RING 3,所以對RING 0的VXD無用.(v3.20)
點評:   
BPR 有時真的很慢,機器就象死了一樣, 原因上面都說
了.所以在知道內存單元的時侯最好用BPM,只有無路可
走才用BPR的範圍來試試.(當然也有非要用BPR 不可的
地方)
 
命令: BPRW
作用: 在某個WINDOWS程序或代碼段所在的內存區域上下範圍

斷點
語法: BPRW module-name | selector [verb] [IF

expression]
[DO "command1;command2;..."]
用法:   
module-name  : WINDOWS程序的模塊名
selector     : 選擇符
verb         : R 讀;W 寫;RW 讀寫;T 回溯跟蹤指令
               ;TW 回溯跟蹤內存寫
IF expression: 條件表達式,只有條件爲"真"時,Sof-
               tICE纔在斷點處彈出
Do command   : 當SICE彈出時,自動執行的一些命令.

BPRW是個在WIN程序的一個或多個可執行模塊上下斷點
的比較便捷的方法實際上它就是BPR, 不信你可以下一
個,再用BL 看看.它只不過比BPR更有目的性.用HEAP命
令可以幫助使用者看module-name和selector.BPRW 不
用你再費心找範圍.BPRW 在回溯跟蹤時很有用.
另外,BPRW 也是不能用於RING 0. 而且在跟 T 參數或
和CSIP命令配合使用時有可能會很慢.RW參數是缺省值
點評:   
BPRW 有時侯很管用的, 因爲你有可能不知道某個程序
在何時在內存中參與運行,用BPRW就可以在這個程序一
運行時就彈出.而且可以分不同的代碼段.
 
命令: BPT
作用: 以前次的斷點爲模板,設定新的斷點.
語法: BPT breakpoint_index
用法:   
breakpoint_index: 斷點序號.(用BL可以看到)
BPT 是以前次的斷點爲藍本,進行修改,成爲新的斷點.
它爲使用者定新的斷點提供了方便.
  
點評: 參見第二部分的BPE 命令
 
命令: BPX
作用: 在可執行語句上設定(或清除)斷點
語法: BPX [address] [IF expression] [DO

"command1;command2;..."]
用法:   
address      : 斷點所在的線性地址
IF expression: 條件表達式,只有條件爲"真"時,Sof-
               tICE纔在斷點處彈出.
Do command   : 當SICE彈出時,自動執行的一些命令.

BPX 用來在指令處下斷點,程序一旦執行到此,SoftICE
就會彈出.當光標在代碼窗口中時,直接打入BPX就會在
光標所在語句處設斷點,再打BPX 就取消. 當光標不在
代碼窗口中時,BPX 必須跟參數(地址). 地址爲標準的
"選擇符:偏移",如果只輸入偏移,當前的CS值默認爲選
擇符.
BPX 實際上是在你下的斷點處加一個INT 3指令, 到這
條指令時就彈出來.這使得可以在一個程序中下多個斷
點,而不必要使用少得可憐的寄存器.但當你在ROM中設
斷點時,SoftICE自動用斷點寄存器來設斷.你也可以用
BPM 命令的X參數來強迫SoftICE用斷點寄存器(DRx)來
設斷.
BPX 也可用16位代碼的模塊名來作地址參數, 這樣,模
塊中每個出口函數都被設了斷點. BPX 最多設256個斷
點.(V3.20) BPX 有個快捷鍵 F9,當光標在代碼窗口中
時,按F9就是設定(取消).
點評: BPX 可能是用得最多的斷點了. 有些ANTI-DEBUGGER的
程序就利用INT 3 來作文章,看了上面的東西我想你可
以閃過了吧!(不包括用DRx做文章的噢!)
 
命令: BSTAT
作用: 顯示某個斷點的狀態
語法: BSTAT [breakpoint-index]
用法:   
breakpoint-index :斷點的序號,用BL 命令可以看到
用BSTAT 來顯示某個斷點的狀態,各種統計參數.
BP #  : 斷點的序號.若前面有 "*" ,表示斷點被禁止
在Total 欄目中:
Hits  : SoftICE每經過一次斷點,計數+1
Breaks: 在IF expression子句爲真的情況下,SoftICE
        就會產生動作,要麼彈出,要麼記錄在內存中,
        不管怎樣,計數+1
Popups: 在Breaks中SoftICE彈出的次數
Logged: 在Breaks中SICE將情況記錄到內存中的次數
Misses: 在IF expression子句爲False的情況下,SICE
        雖然經過這個斷點但沒有彈出行動的次數
Errors: 由於IF 子句中內存變量的問題或其他原因產
        生的錯誤的次數.比如跟一個C寫的程序,用變
        量"IF mysymbol==1"來設斷,而在斷點處 my-
        symbol 這個變量所在的內存由於釋放或其他
        操作而無法訪問,就會產生Error.
在Current 欄目中:
Hits  : 當前的在IF子句計算爲True的情況下,但由於
        BPCOUNT宏所定的次數未到而記錄下的累計數
Misses: 當前在IF子句計算爲False的情況下, 且(或)
        BPCOUNT宏所定的次數未到而記錄下的累計數
在雜項(misc)欄目中:
Status: SoftICE內部對最近一次斷點進行計算的狀態
        代碼.(錯誤代碼)如果爲0 的話,表示沒有錯.
Scode : SoftICE最近一個內部狀態代碼,如果爲0的話
        表示沒有Errors.
Cond. : 如果斷點帶有附加判斷(即有IF expression)
        ,則爲Yes,否則爲No
Action: 如果斷點帶有附加的動作(即有DO command),
        則爲Yes,否則爲No
點評: 無

有關SoftICE的詳細操作指導教程(4)時間:2009-08-19 14:05

來源:未知 作者:編輯B 點擊:2541次
四 命令: C 作用: 比較內存中兩塊區域的內容 語法: C

start-address l length start-address-2 用法: start-

address : 第一塊內存區域的開始地址length : 字節長度

start-address-2: 第二塊內存區域的開始地址如果比


 
  

命令: C
作用: 比較內存中兩塊區域的內容
語法: C start-address l length start-address-2
用法:   
start-address  : 第一塊內存區域的開始地址
length         : 字節長度
start-address-2: 第二塊內存區域的開始地址
如果比較結果不同,將顯示不同的部分和它們的地址
點評: 無
 
命令: CLASS
作用: 顯示WINDOWS的類的信息
語法: CLASS [-x][task-name]
用法:   
task-name: 當前的正在機器中運行的16或32位任務名
-x       : 顯示CLASS(類)的完整結構.
Windows 95在一個16位的模塊中維護着標準的WINDOWS
類.而且,它爲每個進程分別維護着除標準類以外的類.
每當程序註冊一個新的WINDOWS類時, 信息被放入以下
兩個地方中的一個:

1.任務全局列表放該進程所有模塊都可以存取的類(用
  CS_GLOBAL風格)
2.任務私有列表放只有申請該類的模塊才能存取的類.

當任何一個進程想做一個WINDOWS標準類的話,如LIST-
BOX,它會在任務特定的系統冗餘列表中得到一個拷貝,
這樣就不會影響到WINDOWS本身. 所以,當用CLASS命令
時,可以看到以下3個分類:(用虛線隔開)

.任務私有列表
.任務全局列表
.系統冗餘列表

輸出的各項參數:
Class Handle    : 類句柄.
Class Name      : 類的名字, 如果註冊時沒有名字,
                  那麼顯示原子名
Owner           : 註冊此類的模塊
Window Procedure: 處理該類的過程
Style           : 類的風格
點評: 無
 
命令: CLS
作用: 清除命令窗口中的字符
語法: CLS
用法:   
CLS 清屏命令,將清除命令窗口中顯示的數據, 並定位
光標到命令窗口的左上角. (如果光標原先就在命令窗
口中的話)
點評: 無
 
命令: CODE
作用: 顯示指令碼
語法: CODE [ON | OFF]
用法:   
CODE ON  將顯示指令的機器碼
CODE OFF 將不顯示指令的機器碼
CODE 不帶參數將顯示當前是ON 還是 OFF
點評:   
非常有用的,由於安裝SoftICE時默認爲CODE OFF,所以
有必要打開,看到了機器碼就可以記錄下來,以便修改.
 
命令: COLOR
作用: 顯示或修改屏幕顏色
語法: COLOR [normal bold reverse help line]
用法:   
normal : 普通字符的前/背景顏色,默認爲07h(灰/黑)
bold   : 粗體字符的前/背景顏色,默認爲0Fh(白/黑)
reverse: 反象顯示的字符的前/背景顏色, 默認爲71h
         (藍/灰)
help   : HELP命令提示條的前/背景顏色, 默認爲30h
         (黑/青)
line   : SoftICE各個窗口分界線的前/背景顏色, 默
         認爲02(綠/黑)
這些參數採用CGA的標準格式,即0-3位爲前景色,4-6位
爲背景色,這樣就有16種前景色,8種背景色:
0 黑; 1 藍; 2 綠; 3 青; 4 紅; 5 品紅;
6 棕; 7 灰; 8 深灰; 9 淺藍;   A 淺綠;
B 淡青; C 淺紅; D 淡品紅; E 黃; F 白
點評: 默認的顏色已經很好了,不要改得亂七八糟噢!
 
命令: CPU
作用: 顯示寄存器內容
語法: CPU [-i]
用法:   
CPU 命令顯示所有的CPU 寄存器的內容.
(普通,控制,除錯,段)
點評: 不用再裝其他檢測CPU的小軟件了:)
 
命令: CSIP (16位程序纔有用)
作用: 爲所有斷點設定一個界限(CS:EIP在其內)(16位程序)
語法: CSIP [off | [not] start-address end-address |

Windows-module-name]
用法:   
off                : 關閉CS:EIP的界限檢查
not                : 在所定義的模塊之外的區域斷
                     點纔有效
start-address      : 內存區域起始地址
end-address        : 內存區域結束地址
Window-module-name : 用 WINDOWS模塊所在區域來代
                     替地址界限.
CSIP 不帶參數將顯示當前狀態.

對於32位程序,這個命令沒有用.請用帶IF 參數的斷點
命令代替.當然WIN95下也有一些老的16位程序(16位模
塊,這時CSIP就能派上用場.
點評: 無
 
命令: D
作用: 顯示某內存區域的內容
語法: D[size] [address [l length]]
用法:   
size: B 字節; W 字; D 雙字; S 短實型; L 長實型;
      T 10b長實型
D  命令在所指定的內存區域開始顯示指定長度的內存
單元內容. 格式將根據size來變.對於雙字類型, 將分
兩種情況:

1.如果指定地址爲32位的段, 格式爲32bytes的16進制
  值(即8位16進制值)
2.如果指定地址爲16位的段, 則格式爲16:16指針的形
  式(即4:4位16進制值)

如果沒有指定地址,D 命令將繼上次命令後的地址開始
顯示.如果數據窗口可見,則結果在數據窗口中顯示,否
則顯示在命令窗口中.但若用了參數L 和長度, 則結果
不論數據窗口可見還是不可見,都顯示在命令窗口中.
點評: 無

有關SoftICE的詳細操作指導教程(5)時間:2009-08-19 14:05

來源:未知 作者:編輯B 點擊:2542次
五 命令: DATA 作用: 顯示另一個數據窗口 語法: DATA

[window-number] 用法: window-number: 所要選擇的窗口號

,0,1,2,3SoftICE最多支持4個數據窗口.每一個窗口可以獨立

按自己的格式顯示數據. 但同一時刻只能顯示一


 
  

命令: DATA
作用: 顯示另一個數據窗口
語法: DATA [window-number]
用法:   
window-number: 所要選擇的窗口號,0,1,2,3
SoftICE最多支持4個數據窗口.每一個窗口可以獨立按
自己的格式顯示數據. 但同一時刻只能顯示一個窗口.
如果用DATA窗口不帶任何參數, 將按0,1,2,3的次序顯
示各個窗口中的內容.在數據窗口的右上角的橫線上有
窗口序號的提示.
點評: 可以很方便地對多個目標的進行觀察
 
命令: DEX
作用: 在數據窗口中顯示(或賦予)某個表達式
語法: DEX [data-window-number [expression]]
用法:   
data-window-number: 即DATA命令中所講的0,1,2,3號
                    數據窗口
DEX 命令可以爲每一個數據窗口賦予一個表達式,每次
SoftICE彈出該表達式就被重新計算, 並顯示在相應的
數據窗口中.這對某些指針非常有用. 指針可以放在寄
存器中或是在內存變量中,如下二例:

DEX 0 SS:ESP 每次SoftICE彈出, 就在0號數據窗口中
顯示堆棧的值
DEX 1 @pointervariable 每次SoftICE彈出, 就在1號
窗口中顯示由pointervariable指針所指的內存單元的
內容.(@ 操作符後有論述).

用DEX不帶參數將顯示當前在各個數據窗口中所賦予的
表達式. 用 DEX data-window-number(不跟表達式)將
取消前次賦予窗口的表達式.
點評: 相當於自動化的D命令.
 
命令: DIAL
作用: 將控制檯重定向到MODEM
語法: DIAL [on [ com-port] [ baud-rate] [i=init-

string] [p=number] | off] 
用法: COM-PORT :  串行通訊口,默認爲COM1
BAUD-RATE:  1200,2400,4800, 9600, 19200, 23040,
            28800,38400(默認),57000,115000
I=INIT   :  MODEM的初始化字符串.
p=number :  電話號碼
DIAL 命令通過撥號與遠程電腦取得聯繫, 遠程電腦必
需正在運行SERIAL.EXE且在等待對方撥號.一旦聯接完
成,SoftICE的的輸入將來自遠程計算機,輸出也重定向
到遠程計算機.本地計算機除了激活的熱鍵外不接收其
他對SoftICE的輸入.當遠程機結束調試後,用DIAL OFF
來掛斷MODEM.
點評:   
前次的ANSWER命令是等遠程機撥號過來,而DIAL是撥過
去.有機會試一下這兩個命令就好了.
 
命令: E
作用: 修改內存單元
語法: E[size] [address [data-list]] 
用法:   
size     : B 字節;W 字;D 雙字;S 短實型;L 長實型
           ;T 10字節的實型
data-list: 要修改的值,(和size類型一致) 可用單引
           號或雙引號來輸入字符串.
如果鍵入沒有data-list參數的E 命令, 光標將切換到
數據窗口並定位到所指定的內存單元,等待使用者相應
的操作.如果加跟data-list參數,則內存單元立刻被修
改爲所指定的值.數據窗口當前如果不可見, 則鍵入E
命令將使之可見.在修改中可以用TAB鍵在ASCII與十六
進制方式之間切換.
點評: 無
 
命令: EC
作用: 進入或退出代碼窗口
語法: EC
用法:   
EC 命令使得光標在代碼窗口和命令窗口之間切換. 如
果代碼窗口當前不可見,則鍵入 EC 命令後將自動可見
當光標在代碼窗口中時,使用者可以利用 SoftICE的幾
項快捷功能:
1.可以在光標處設斷點,直接打BPX不跟地址,更方便的
是按F9快捷鍵,再執行一遍將清除當前所在的斷點
2.可以用HERE 命令來設個臨時斷點, 所謂臨時斷點好
象DEBUG中的G命令,也可用F7快捷鍵來實現.
3.在代碼窗口中時,也可用上下光標鍵,PageUp,PageDn
來翻頁,上下瀏覽.
另外,當用戶調試源文件時,可以用:
Ctrl+Home    , 到源程序的第一行
Ctrl+End     , 到源程序的最後一行
Ctrl+左右光標, 水平察看源程序
點評: 實際上可以用Ctrl+光標,Ctrl+PgUp,Ctrl+PgDn來直接

翻頁
 
命令: EXIT 
作用: 強行退出DOS程序或WINDOWS程序
語法: EXIT
用法:   
這個命令在PDF手冊中說95已經不被支持, 實際上還是
有用的. 特別是當開個DOS VM跑時,用EXIT退出還是偶
爾會用到.EXIT實際上是強行執行一個INT 21h AH==4C
所以在DOS VM和保護模式的ring3還是有可能正常退出.
只是有可能而已.
點評: 在WIN95(Protected)下除非你很肯定, 否則不要用

EXIT.
一不小心,你的機器將會死得很難看!
 
命令: EXP
作用: 顯示DLL中的出口函數
語法: EXP [[module!][partial-name]] | [!]
用法:   
module!     : 對所指定的模塊列出出口函數(注意要
              加 ! 驚歎號)
partial-name: 指定出口函數的前幾個字符, 可以用?
              來做替代不定字符. (注意要跟緊前面
              的module!)
!           : 只跟! 表示列出SoftICE當前已加載出
              口函數表的模塊.
WIN95中SoftICE自動加載KERNEL,USER,GDI的出口函數
表.你也可以通過WINICE.DAT或SoftICE 的LOADER (加
載器)來加載更多的出口函數列表.
點評:   
比較常用的DLLs,DRVs都在WINICE.DAT中有了, 用戶只
要修改爲相應的路徑就能每次開機自動帶入.這樣帶來
的好處是:
1.可以在反彙編時直接看到調用接口.
2.可以直接在函數上下斷點
 
命令: F
作用: 填充某一塊內存區域
語法: F address l length data-list
用法:   
length   : 字節長度
data-list: 所要填的數據. 可以是用單引號或雙引號
           括起來的字符串
執行F 命令將向所指定的內存區域填充length 長度的
數據,如果數據不夠長度,將重複數據,直到達到長度爲
止.
點評: 無

有關SoftICE的詳細操作指導教程(6)時間:2009-08-19 14:05

來源:未知 作者:編輯B 點擊:2543次
六 命令: FAULTS 作用: 打開或關閉錯誤跟蹤功能 語法:

FAULTS [on | off] 用法: FAULTS 命令將打開或關閉

SoftICE的錯誤跟蹤功能.不加參數將顯示當前的開關狀態. 點

評: 由於SoftICE做爲一個DEBUGGER,FAULTS 默認爲ON


 
  

命令: FAULTS
作用: 打開或關閉錯誤跟蹤功能
語法: FAULTS [on | off]
用法:   
FAULTS 命令將打開或關閉SoftICE的錯誤跟蹤功能.
不加參數將顯示當前的開關狀態.
點評:   
由於SoftICE做爲一個DEBUGGER,FAULTS 默認爲ON, 所
以一旦CPU有非法指令,SoftICE就會不停地彈出, 讓你
知道錯在哪裏,實際在工作中這樣的情況如果太頻繁地
發生,最好將其置爲OFF.我一般將其置爲ON, 當發生非
法指令時再手工置爲OFF.你也可以在WINICE.DAT 中一
開始就置其爲OFF. 初學者一般不知道有這個命令, 一
旦發生非法指令,除了按R鍵,只有傻站着;)
 
命令: FILE
作用: 顯示或切換當前源文件
語法: FILE [[*]file-name]
用法:   
FILE 命令常用來輔助在源文件中沒有符號表的地方下
斷點. 用FILE命令將所需的源文件顯示在代碼窗口中,
用SS 命令查找一下,再用BPX或F9來下斷點.
如果加文件名參數,則所選的文件變成當前文件, 並被
顯示在代碼窗口中. 如果沒有文件名參數,則顯示當前
的源文件(如果當前有的話).如果加 * ,則列出當前符
號表中所有源文件. 在WIN95中,用FILE 加文件名同時
也切換內存地址內容.
點評:   
一般用於高級編程工具的輔助調試,如C語言等.不過這
些編程工具已經內置DEBUGGER,所以就看個人習慣了.
 
命令: FKEY
作用: 顯示或修改當前快捷鍵定義
語法: FKEY [function-key string]
用法:   
function-key: 快捷鍵:
F1 - F12    :
SF1 - SF12  : Shift鍵加F1 - F12
CF1 - CF12  : Ctrl鍵加F1 - F12
AF1 - AF12  : Alt鍵加F1 - F12
string      : 一個或多個SoftICE的命令.
              命令前加 ^ 表示在按快捷鍵時不顯示
              相應的命令內容.命令後加;代表回車.
FKEY 後只跟function-key,而不跟string,將取消該快
捷定義.除了用FKEY命令可以定義快捷鍵外,用SoftICE
的LOADER也能做到這一點
默認快捷鍵清單:
F1=h;  F2=^wr;
F3=^src; F4=^rs;
F5=^x;  F6=^ec;
F7=^here; F8=^t;
F9=^bpx; F10=^p;
F11=^G @SS:ESP; F12=^p ret;
SF3=^format; CF8=^XT;
CF9=TRACE OFF; CF10=^XP;
CF11=SHOW B; CF12=TRACE B;
AF1=^wr; AF2=^wd;
AF3=^wc; AF4=^ww;
AF5=CLS; AF8=^XT R;
AF11=^dd dataaddr->0;
AF12=^dd dataaddr->4;
CF1=altscr off; lines 60; wc 32; wd 8;
CF2=^wr;^wd;^wc;
點評: 無
 
命令: FLASH
作用: 在 P 和 T 命令執行過程中刷新Windows 屏幕
語法: FLASH [on | off]
用法:   
如果將FLASH 置爲 ON ,則在執行T或P命令時,SoftICE
將刷新一下Windows 屏幕,這在調試一個直接對顯存操
作的程序時特別有用.在一般情況下,當用 P 命令跨過
一個CALL 時,而此 CALL 又調用顯示驅動程序時,Sof-
tICE才重新刷新屏幕.
FLASH 命令不帶參數將顯示當前狀態.默認FLASH OFF.
點評: 無
 
命令: FORMAT
作用: 改變數據窗口的顯示格式
語法: FORMAT
用法:   
FORMAT 命令用來改變數據窗口的顯示格式.
SoftICE有快捷鍵 Shift-F3 來代替FORMAT.
顯示格式將按 字節,字,雙字,短實型,長實
型,10字節實型循環.
點評: 參見 D, DATA 命令.
 
命令: G
作用: 執行到某一地址
語法: G [=start-address] [break-address]
用法:   
=start-address: 開始地址
break-address : 中斷地址
G 命令不帶參數將從SoftICE中返回.如果帶參數break-
address,則SoftICE將在所指定的地址處下一個一次性
斷點; 如果帶=start-address,SoftICE 將從指定的地
址處開始執行,否則從當前CS:EIP處執行. 程序中其他
的斷點(非G命令下的斷點)照樣起作用. 無論是誰先彈
出,都將清除G 命令所下的一次性斷點.
G 命令不帶參數類似於 X 命令.
G 命令在Windows95中使用除錯寄存器, 如果除錯寄存
器用完,則用INT 3.
點評: 由於G 命令缺省用DRx,所以有時可以對付一些在INT 3

上作手腳的程序.
 
命令: GDT
作用: 顯示全局描述符表
語法: GDT [selector]
用法:   
selector: 指定GDT選擇器
GDT 命令將顯示全局描述符表的內容.如果加選擇符參
數,則只顯示此選擇符所指的描述符.
輸出:GDT 的線性基址和長度將顯示在輸出數據的頂行

輸出數據的每一行內容的說明:
value: 最低兩位即描述符特權級
type : 描述符類型,如下:
       Code16 : 16位代碼描述符
       Data16 : 16位數據描述符
       Code32 : 32位代碼描述符
       Data32 : 32位數據描述符
       LDT    : 局部描述符表描述符
       TSS32  : 32位任務狀態段描述符
       TSS16  : 16位任務狀態段描述符
       CallG32: 32位調用門描述符
       CallG16: 16位調用門描述符
       TaskG32: 32位任務門描述符
       TaskG16: 16位任務門描述符
       TrapG32: 32位陷肼門描述符
       TrapG16: 16位陷肼門描述符
       IntG32 : 32位中斷門描述符
       IntG16 : 16位中斷門描述符
       Reserved: 保留的描述符
base : 描述符中的段基址
limit: 描述符中的段界限
DPL  : 描述符特權級,0,1,2,3
present bit: P 或 NP 表示該段是否在內存中
segment attributes: 段特性:
       RW: 數據段可讀寫
       RO: 數據段只讀
       RE: 代碼段可讀可執行
       EO: 代碼段只可執行
       B:  TSS(任務狀態段)忙置位
       ED: 數據擴展方式
參見 LDT.
點評:   
這段翻譯並不完全用PDF手冊上的.如"selector" 原指
選擇符(器),用來指向描述符表中的描述符, 而 PDF中
type 的說明全用到 selector說的意思雖是一樣,但和
別的文獻矛盾,故認爲不妥,將其翻譯成descriptor 即
描述符.實際上可以看出,一個選擇符指向一個描述符,
兩者是一致的.描述符類型實際上也就是指向它的選擇
符類型.
 
命令: GENINT
作用: 強行產生一箇中斷
語法: GENINT [nmi | int1 | int3 | interrupt-number]
用法:   
interrupt-number: 對Windows95來說,0-5fh
GENINT強行產生一箇中斷,用於SoftICE和別的DEBUGGER
協作的時侯,如:GENINT nmi 將使SoftICE將控制返還給
CodeView For Dos.(對其他DEBUGGER,請嘗試0,1,2,3)
GENINT還用於測試中斷例程.但SoftICE不檢測一箇中斷
是否有效,它只是摹擬中斷的產生,所以當用此命令時要
注意相應的中斷例程是否存在.
點評: 無

有關SoftICE的詳細操作指導教程(7)時間:2009-08-19 14:05

來源:未知 作者:編輯B 點擊:2544次
七 命令: H 作用: 顯示幫助信息 語法: H [command] 用法:

鍵入 H 命令不帶任何參數將顯示所有命令的幫助. 要獲得詳

細的幫助,在 H 後加命令名就可.詳細的幫助將包括命令的描

述,命令的語法,和例子. 點評: H 命令可以


 
  

命令: H
作用: 顯示幫助信息
語法: H [command]
用法:   
鍵入 H 命令不帶任何參數將顯示所有命令的幫助. 要
獲得詳細的幫助,在 H 後加命令名就可.詳細的幫助將
包括命令的描述,命令的語法,和例子.
點評:   
H 命令可以很方便地幫助使用者查詢SoftICE的命令.
實際上在命令窗口的底部有一個狀態條,它提供的實時
幫助也是很有用的.
 
命令: HBOOT
作用: 系統重新啓動
語法: HBOOT
用法:   
HBOOT 將重新啓動計算機.等同於按 Ctrl+Alt+Del 組
合鍵.HBOOT 一般都能成功,只有特殊情況下(某些插卡
需要重加電)才用機器上的RESET或POWER鍵.
點評:   
HBOOT 讓我想到兩件事:
1,以前學微機時,老師老是盯着我們,唯恐我們亂啓動
機器.想起來真是不寒而慄, 好象是我們的過錯一樣.
可機器明明死了嘛,不重新啓動怎麼行?
2,有大部分品牌機上沒有RESET鍵, 死機就按POWER鍵
,按得老闆倒抽涼氣.:)
 
命令: HEAP
作用: 顯示Windows全局堆
語法: HEAP -L [free | module-name | selector]
用法:   
-L         : 只顯示含局部堆的全局堆入口
module-name: 模塊名.
selector   : LDT 選擇符

HEAP FREE 將顯示空閒的全局堆.
HEAP 跟模塊名將只顯示由指定的模塊擁有的全局堆入
口. HEAP 跟LDT 選擇符將只顯示與此選擇符相應的全
局堆入口. HEAP 不帶參數將顯示整個全局堆的情況.

輸出:
selector or handle: 選擇符符或句柄.
address           : 32位虛擬地址
size              : 堆的大小(字節)
module name       : 模塊名
        --------------------------------
        type      : 全局堆的類型
        code      : 不可丟棄的代碼段
        code D    : 可丟棄的代碼段
        Data      : 數據段
        ModuleDB  : 模塊數據基礎段
        TaskDB    : 任務數據基礎段
        BurgerM   : "三明治"(就是堆本身)
        Alloc     : 被動態分配的內存
        Resource  : Windows 資源
        --------------------------------
       
        額外信息:
        如果某全局堆的入口是代碼段或數據
        段,則會顯示該段在.EXE中的段號.如
        果某全局堆的入口是Windows資源,則
        會附加顯示如下資源類型:
        --------------------------------
        UserDef(用戶自定義);Icon(圖標);
        String(字符串); Accel(快捷鍵);
        IconGrp(圖標組);Cursor(光標);
        Menu(菜單);FontGrp(字體組);
        ErrTable(錯誤表);NameTabl(名字表);
        Bitmap(位圖);Dialog(對話框);
        Font(字體);CursGrp(光標組)
        --------------------------------
  
點評:   
PDF 手冊中稱堆本身爲Burger-->"三明治"(碎肉夾餅)
很貼切,堆本來就是亂七八遭.
 
命令: HEAP32
作用: 顯示Windows全局堆
語法: HEAP32 [hheap32 | task-name]
用法:   
hheap32  : 由HeapCreate()返回的堆句柄.
task-name: 32位任務的名字.

HEAP32 不帶參數顯示32位進程的堆的情況:
.KERNEL32 缺省系統堆.
.進程用HeapCreate()申請的私有堆.
.兩個由VMM產生的Ring-0級的堆.第一個是換頁鎖定的
 堆,第二個是可換頁的堆.
.一個屬於所有虛擬機的Ring-0堆.
  
如果加上進程名,SoftICE將顯示所有該進程的缺省堆,
且地址內容也切換到該進程中.如果加上堆的基地址而
不是進程名,SoftICE將顯示該進程的非缺省堆.

WINDOWS 95的調試版還提供了額外的調試信息,想要用
SoftICE看到這些信息,必須:
.對於KERNEL32 Ring-0堆,必須安裝有SDK除錯版.
.對於VMM Ring-0堆,必須安裝VMM的DDK除錯版

輸出信息(HEAP32):
HeapBase : 堆的基址
MaxSize  : 堆可增長的最大範圍, 在此範圍內堆無需
           再創建一個新段.
Committed: 以千字節爲單位當前存在於物理內存中的
           被保證的內存大小
Segments : 堆中段的數量. 當堆增長超出段所能容納
           的範圍,就建立一個新段
Type     : 堆的類型:
        --------------------------------
        Private: 由應用程序建立的Ring-3堆
        System : KERNEL32建立的Ring-3堆
        Ring0  : VMM建立的Ring-0堆
        VMM##  : 由VMM建立的爲特定虛擬機
                 存儲數據的堆.
        --------------------------------
       
輸出信息(HEAP32 帶參數):
Address: 堆元素的地址.
Size   : 以字節爲單位堆元素的長度.
Free   : 如果堆元素是空閒的塊,則會顯示"FREE",否
         則不顯示.
點評: 在SoftICEv3.20實際操作上和手冊說的中有些許不同.
 
命令: HERE
作用: 運行到當前光標所在行
語法: HERE
用法:   
HERE 命令讓程序一直走到光標所在行再停下來.注意:
只有當光標在代碼窗口中時纔有效.如果代碼窗口不可
見或光標不在代碼窗口中,則請用 G 命令代替.也可用
 EC 命令將光標移到代碼窗口中去,再用 HERE.
HERE 命令有個快捷鍵 F7.將光標定位到你想讓程序暫
停的指令處,按下F7 ,程序將在此處設一個一次性斷點
.程序中其他非一次性的斷點照樣起作用. 無論是誰先
彈出,都將清除 HERE 所下的一次性斷點.和G命令一樣
,HERE 命令儘量採用除錯寄存器DRx, 只有用完時才用
INT 3
點評: 無.
 
命令: HWND
作用: 顯示窗口句柄的信息
語法: HWND [-x][hwnd | [[level][process-name]]
用法:   
level       : 窗口等級號碼.0 是最高級.1 其次,等
              等.窗口等級代表了父窗口和子窗口的
              關係.
-x          : 顯示窗口的冗餘信息.
hwnd        : 窗口句柄.
process-name: 任何當前進程名

如果指定了窗口句柄,就無需指定等級, 進程名等其他
參數,SoftICE將顯示所指定窗口句柄的信息.

輸出:
Class Name      : 此窗口所屬類的名稱或類的原子.
Window Procedure: 窗口函數.  
            
點評: 窗口句柄很有用的.(廢話!)
 
命令: I
作用: 從輸入/輸出(I/O)端口讀入數據
語法: I[size] port
用法:   
size: B 字節(默認);W 字;D 雙字
port: 端口地址.
I 命令在大多數情況下是作一個I/O輸入指令, 獲取真
實的硬件端口的數據. 在虛擬端口的情況下,取得真實
值和應用程序所見到的虛擬值可能不同. 對於 21h 和
A1h 端口,SoftICE是例外,它不進行讀取,而是返回So-
ftICE彈出時的值.
點評: 參見 O 命令.

有關SoftICE的詳細操作指導教程(8)時間:2009-08-19 14:05

來源:未知 作者:編輯B 點擊:2545次
八 命令: I1HERE 作用: 遇到內嵌的INT 1指令時激活

SoftICE 語法: I1HERE [on | off] 用法: I1HERE 命令使

SoftICE在遇到程序中內嵌的INT 1指令時彈出.I1HERE在調試

程序時需在某處暫停時特別有用.在SoftICE彈出之前,


 
  

命令: I1HERE
作用: 遇到內嵌的INT 1指令時激活SoftICE
語法: I1HERE [on | off]
用法:   
I1HERE 命令使SoftICE在遇到程序中內嵌的INT 1指令
時彈出.I1HERE在調試程序時需在某處暫停時特別有用
.在SoftICE彈出之前, SoftICE會檢查當前是否有一條
INT 1指令在程序中.如果沒有的話,SoftICE將不彈出.
在程序要暫停的指令之前加一句INT 1  就能做到這一
點.SoftICE彈出時,EIP 會停在INT 1的下一條指令後.
I1HERE 不帶參數將顯示當前I1HERE的狀態.缺省爲OFF
I1HERE 在與如BoundsChecker 之類的調試工具分工協
作時很有用,因爲BoundsChecker用到 INT 3,爲了防止
衝突應使用INT 1. 另外,VMM,Windows內存管理的VxD,
在Windows出現某些嚴重錯誤時會在嚴重錯誤返回前執
行一個INT 1指令.如果此時I1HERE 爲ON時, 你就能跟
蹤這類錯誤. 如由VMM因換頁錯誤而產生INT 1 時寄存
器的值如下:
.EAX = 錯誤地址.
.ESI   指向一個ASCII字符串(信息).
.EBP   指向一個CRS(在DDK的VMM.INC中定義的客戶寄
       存器結構)
點評:   
基礎信息: INT 1 實際上是單步中斷的處理例程. CPU
在檢測到 TP 標誌爲1時(TP是由DEBUGGER設的), 就自
動進行這一例程. DEBUGGER 們掛接這個中斷例程進行
一些諸如顯示當前寄存器值等操作,並等待用戶進一步
的指令. 在程序中直接用 INT 1指令也能達到效果.
SoftICE不象DOS下的DEBUG.EXE,一碰到 INT 1 就中斷,
缺省是不中斷的,只有當I1HERE 爲 ON 時才中斷.
 
命令: I3HERE
作用: 在遇到INT 3 指令時激活SoftICE
語法: I3HERE [on | off]
用法:   
I3HERE ON 將使SoftICE每碰到一個 INT 3 時都彈出,
這在調試程序時需要在某處暫停特別有用.在你需要暫
停的指令之前加一個INT 3 就行.如果你是編 WINDOWS
程序,加個函數  DebugBreak(). 這個函數也執行一個
INT 3.
I3HERE 不帶參數將顯示當前狀態.請參見I1HERE.
點評:   
基礎信息: INT 3 是斷點中斷處理例程.也被DEBUGGER
們掛接,顯示寄存器值,給出一些信息,並等待用戶下一
步操作. DEBUGGER在下斷點時,將斷點處的指令替換成
INT 3,把替換下的指令保存,在執行完例程後再恢復原
先保存的指令,修改堆棧中的斷點地址, 使程序得以繼
續. DOS下的老DEBUG.EXE當遇到程序中的INT 3 指令時
會進行同樣的操作,也修改堆棧中的斷點地址,所以IP又
停在那條INT 3 上, 如果你打入 G ,程序將一直停在此
處,這時改一下IP就可以了.
 
命令: IDT
作用: 顯示中斷描述符表
語法: IDT [interrupt-number]
用法:   
interrupt-number: 所要顯示的中斷號
IDT 命令讀取中斷描述符表寄存器的值, 獲得表基址,
然後顯示中斷描述符表的內容.IDT 命令不帶參數將顯
示所有中斷的情況,如果帶中斷號, 則只顯示相應的入
口.  輸出參數如下:
interrupt number: 0-05fh的中斷號.
interrupt type  : 中斷類型如下:

        ---------------------
        CallG32: 32位調用門.
        CallG16: 16位調用門.
        TaskG:   任務門.
        TrapG16: 16位陷肼門.
        TrapG32: 32位陷肼門.
        IntG32:  32位中斷門.
        IntG16:  16位中斷門.
        ---------------------

address         : (選擇符:偏移量)形式的地址.
selector's DPL  : 選擇符的描述符特權級,0,1,2,3
present bit     : P 或 NP, 表示該描述符是否在內
                  存中.
Owner+Offset    : 符號名或擁有者名,和在它們中的
                  偏移.
點評: 參見GDT,LDT.
 
命令: LDT
作用: 顯示局部描述符表
語法: LDT [selector]
用法:   
selector: 指定LDT 選擇符
LDT 命令將顯示局部描述符表的內容. SoftICE先讀取
局部描述符表寄存器的值,再定位描述符表. 如果局部
描述符表不存在,會顯示一個錯誤信息. 如果指定選擇
符,則只顯示該選擇符所指向的描述符. 如果指定的選
擇符是一個全局選擇符, 則SoftICE將自動顯示該全局
選擇符所指的描述符.

輸出:LDT 的線性基址和長度將顯示在輸出數據的頂行
輸出數據的每一行內容的說明:
value: 最低兩位即描述符特權級
type : 描述符類型,如下:
        ---------------------------
        Code16 : 16位代碼描述符
        Data16 : 16位數據描述符
        Code32 : 32位代碼描述符
        Data32 : 32位數據描述符
        CallG32: 32位調用門描述符
        CallG16: 16位調用門描述符
        TaskG32: 32位任務門描述符
        TaskG16: 16位任務門描述符
        TrapG32: 32位陷肼門描述符
        TrapG16: 16位陷肼門描述符
        IntG32 : 32位中斷門描述符
        IntG16 : 16位中斷門描述符
        Reserved: 保留的描述符
        ---------------------------
       
base       : 描述符中的段基址
limit      : 描述符中的段界限
DPL        : 描述符特權級,0,1,2,3
present bit: P 或 NP 表示該段是否在內存中
segment attributes: 段特性:
        ---------------------------
        RW: 數據段可讀寫
        RO: 數據段只讀
        RE: 代碼段可讀可執行
        EO: 代碼段只可執行
        B : TSS(任務狀態段)忙置位
 ---------------------------
點評:   
這段翻譯並不完全用PDF手冊上的.如"selector" 原指
選擇符(器),用來指向描述符表中的描述符,而PDF手冊
中type 的說明全用到 selector. 說的意思雖是一樣,
但和別的文獻矛盾,故認爲不妥,將其翻譯成descriptor
即描述符. 實際上可以看出,一個選擇符指向一個描述
符,兩者是一致的. 描述符類型實際上也就是指向它的
選擇符類型.
 
命令: LHEAP
作用: 顯示Windows 局部堆
語法: LHEAP [selector | module-name]
用法:   
selector   : 局部描述符表數據選擇符.
module-name: 16位 模塊名.
LHEAP 顯示Windows程序在全局堆中申請的數據信息.
如果不跟選擇符參數,當前的DS 寄存器的內容(數據選
擇符)被做爲缺省值. 用前次說過的 HEAP 命令找標有
LH 的選擇符來做爲LHEAP的參數.如果用module-name
做參數,則SoftICE用此模塊的缺省數據段進行堆遍歷.
輸出:
offset: 16位的偏移量(相對於相應的選擇符基址)
size  : 堆入口(每個組成部分)的字節大小.
type  : 類型如下:
       
        ---------------------
        FIX : 固定的.
        MOV : 可移動的.
        FREE: 空閒的.
        ---------------------

handle: 相應的句柄.對固定的堆組成部分來說, 此值
        和offset 相等,且是由 LocalAlloc()返回的.
        對於可移動的組成部分來說,此值將會被做爲
        LocalLock()的參數.
點評: 無.(天氣好熱!翻譯得好累!)
 
命令: LINES
作用: 改變SoftICE窗口的顯示行數
語法: LINES [25 | 43 | 50 | 60]
用法:   
LINES 命令用來改變SoftICE窗口的顯示行數. 默認爲
25行.可以有:
25 行;43 行;50 行;60 行;43,50,60行只適用於VGA卡.
LINES 不帶參數將顯示當前行數.如果用 ALTSCR 命令
切換顯示器輸出到單顯,SoftICE自動轉爲25行,再轉回
VGA卡時要手工用 LINES 命令來恢復原值.
點評:   
實際上, 我的3.20用的是SoftICE自帶的通用視頻驅動
程序,行範圍可以從25一直到128 !!(除非爲SoftICE開
的顯存不夠)
 
命令: LOCALS
作用: 從當前棧中列出局部變量
語法: LOCALS
用法:   
輸出:
Stack Offset   : 棧偏移.
Type definition: 類型定義.
Value,Data,or structure symbol({...})
               : 值,數據,或結構符號.
SoftICE根據局部變量的類型來用不同的形式顯示它們,
如果是指針,則顯示所指向的數據.如果是結構,則顯示
結構符號.如果既不是指針,又不是結構,則顯示本身值.
點評: 無.

有關SoftICE的詳細操作指導教程(9)時間:2009-08-19 14:05

來源:未知 作者:編輯B 點擊:2546次
九 命令: M 作用: 傳送數據 語法: M source-address l

length dest-address 用法: source-address:源數據的起址

;length :要傳送的字節長度;dest-address :目的數據塊的

起址.用 M 命令將數據塊從源地址傳送到目的地


 
  

命令: M
作用: 傳送數據
語法: M source-address l length dest-address
用法:   
source-address: 源數據的起址;
length        : 要傳送的字節長度;
dest-address  : 目的數據塊的起址.
用 M 命令將數據塊從源地址傳送到目的地址.
如M ds:1000 l 2000 es:5000
將2000h個字節從DS:1000h傳到ES:5000h處.
點評: 無
 
命令: MACRO
作用: 定義一個宏命令,使之執行一系列SoftICE指令.
語法: MACRO [ macro-name] | [*] | [= "macro body"]
用法:   
macro-name: 3-8個字符的宏名,(不區分大小寫);
macro-body: 用分號隔開的一系列SoftICE指令, 首末
            加冒號;
*         : 刪除一個或所有的已定義的宏命令;
=         : 定義(或重定義)一個宏命令.
MACRO 命令用於定義SoftICE指令的超集.macro-body
可以包含SoftICE的指令,也可包含宏定義,甚至是當前
的宏定義本身.(這當然會產生遞歸調用,如果編得不好
的話會產生錯誤,也沒有什麼大意思).在這一系列命令
之間用分號(;)隔開,最後一個命令後不用加分號.
macro-body中還可以帶入命令行參數,和DOS命令的%1,
%2...一樣,合法值在1-8之間.注意一點,macro-body首
尾是用冒號的.所以在宏定義體中如果要用到 /, ", %
時要在前加一 /,這跟C語言的寫法是一致的.
macro_name參數用來代表宏名,可以是字母或數字或下
劃線組成.可以是現有的宏名, 那樣的話就會重定義這
個宏.宏名不可以和現有的SoftICE內部指令相同.會發
生錯誤.MACRO * 表示刪除當前定義的所有(有名字的)
宏.(因爲斷點的DO 子句實際上也是宏, 不過是無名字
的,它們不能就這樣被刪除了!)
MACRO mnames * 刪除當前名爲 mnames 的宏.
MACRO mnames 將編輯名爲 mnames 的宏, 在編輯過程
中可以用ESC鍵取消改動.一個很有用的例子:
:MACRO 1shot = "bpx %1 do /"bc bpindex/""
用這個宏可以設一個一次性斷點,非常方便!
點評: 宏病毒!
 
命令: MAP32
作用: 顯示當前所有32位模塊的內存映象(圖).
語法: MAP32 [module-name | module-handle |address]
用法:   
module name  : Windows模塊名;
module handle: 模塊的基址;
address      : 落在可執行模塊中的地址.
MAP32 不帶參數將顯示所有的32位模塊的信息.加參數
將只顯示指定模塊的信息.
輸出如下:
Owner   : 模塊名.
OBJ Name: 可執行文件的區段名.
Obj#    : 可執行文件中的區段號.
Address : 選擇符:偏移量 格式的區段地址.
Size    : 區段的大小(字節)
Type    : 區段類型:
        --------------------
        CODE    代碼
        IDATA   初始化的數據
        UDATA   未初始化的數據
        RO      只讀
        RW      讀/寫
        SHARED  對象是共享的.
        --------------------
點評: 無.
 
命令: MAPV86
作用: 顯示當前虛擬機的DOS內存映象
語法: MAPV86 [address]
用法:   
address : 段:偏移量格式的地址
MAPV86 不帶參數將顯示當前整個虛擬機的內存映象.
加參數將顯示指定包含所指定地址的內存區域的信息.
有時侯DOS VM的頁沒有切進來,所以會有 "PAGE NOT
PRESENT"的出錯信息,所以可以再彈出一次.
MAPV86 在配合SYMLOC命令時很有用,因爲在Windows
啓動前裝載的程序,Windows不會自動將它們的符號信
息映射到V86內存,用MAPV86命令就可以取得它們的代
碼段,將符號表與之對齊,就可以跟蹤調試了.

輸出如下:
VM ID      : 虛擬機的ID.
VM handle  : 32位虛擬機的句柄.
CRS pointer: 虛擬機的32位客戶登記表的指針.(?)
VM address : 32位線性地址.
另外,如果SoftICE彈出時CS:IP指向一個MAPV86的入口
,那一行的內容將高亮顯示.
點評: 無.
 
命令: MOD
作用: 顯示Windows模塊列表.
語法: MOD [partial-name]
用法:   
partial-name: Windows模塊名,(可以是開頭的若干個
              字母).
MOD 不帶參數將顯示所有的模塊.若加 partial-name,
則符合要求的模塊將被列出.輸出如下:

module handle: 16位的句柄.
base         : 線性基址.
pe-header    : 選擇符:偏移量格式的PE文件頭.
module name  : 模塊名.(編程序時在.DEF中用NAME或
               LIBRARY命名的.)
file name    : 文件的路徑(全名).
點評: 無.
 
命令: O
作用: 向I/O端口輸出數據.
語法: O[size] port value
用法:   
size : B 字節(缺省值);W 字;D 雙字
port : 端口地址.
value: 要輸出字節,字,或雙字.
O 命令將立即輸出到硬件端口(當然那兩個21h和A1h要
等退出SoftICE窗口時才執行)(?)
  
點評:   
關於21h和A1端口,二者是關係到中斷的, PDF文檔在這
寫得不是很詳細.實際操作情況是多種多樣的.
 
命令: P
作用: 單步執行程序.
語法: P [ret]
用法:   
P 命令將單步執行程序.在彙編模式中,當遇到 CALL,
INT,LOOP,REP指令時,P將不跟蹤進去,直到這些指令執
行完畢,控制才返回SoftICE,換句話說,P命令是"跨"過
這些指令的.P 後加RET 參數,SoftICE將一直單步執行
直到它找到一條返回語句(RET,RETF).在源程序模式中
,P 命令將執行一個源程序表達式. 但也不跟蹤到子例
程中去.P 命令實際上是利用了單步標誌, 大多數情況
下是如此.但碰到CALL,INT,LOOP,REP指令時,就用INT 3
(一次性) 在這些指令的後面設一下.
P 命令有快捷鍵 F10; P RET 命令有快捷鍵 F12.
點評: F10可能是按得最多的鍵了,好好保護你的鍵盤吧!

有關SoftICE的詳細操作指導教程(10)時間:2009-08-19

14:05來源:未知 作者:編輯B 點擊:2547次
十 命令: PAGE 作用: 顯示頁表信息 語法: PAGE [address

[L length]] 用法: address : 段:偏移量 或 選擇符:偏移

量 格式的地址length : 要顯示頁的數量.PAGE 命令用來列出

當前頁目錄和各個頁表的情況.(在Windows NT


 
  

命令: PAGE
作用: 顯示頁表信息
語法: PAGE [address [L length]]
用法:   
address : 段:偏移量 或 選擇符:偏移量 格式的地址
length  : 要顯示頁的數量.
PAGE 命令用來列出當前頁目錄和各個頁表的情況.(在
Windows NT 中可以實現列出多個頁目錄的情況, 這裏
就不涉及了) 在x86的體系中, 一個頁目錄包含1024個
頁目錄項(每個頁目錄項佔4個字節)每個頁目錄項又指
向一個頁表,每個頁表包含1024個頁表項 (每個頁表項
也佔4個字節),每個頁表項指向一個4KB大小的頁.所以
這樣的體系管理着1024*1024*4=4GB大小的空間.

PAGE 加地址參數將顯示映射到相應地址處的頁表項的
內容,包括以下部分:
.由該頁表項映射的頁的線性虛擬地址.
.由該頁表項映射的頁的物理地址.
.該頁表項的各種特性,比如是否在內存中,存取權限等.
 這裏的特性是CPU架構時確定的.
.該頁的類型,這個是頁表項中的Windows定義位決定的.

PAGE 加地址,加L參數將顯示連在一塊的若干個頁表項
但要注意的一點是:PAGE命令在顯示這樣一塊連續頁表
項區域時,不會跨過頁表界線. 也就是說顯示出來的頁
表項有可能會少,這時再用一個PAGE就可.

PAGE 不加參數將顯示當前頁目錄的內容. 第一行顯示
頁目錄的物理和線性地址.後面的每一行顯示一個頁目
錄項的內容.

輸出:
physical address: 物理地址.如果顯示的是頁目錄,(
即PAGE不加參數),這個地址是頁目錄項的物理地址,即
相應頁表的地址. 如果顯示的是頁表,(即PAGE 加地址
參數), 則這個地址是內存中相應頁的物理地址.

linear address  : 線性地址.如果顯示的是頁目錄,(
即PAGE不加參數),這個地址是頁目錄項的線性地址,即
相應頁表的地址. 如果顯示的是頁表,(即PAGE 加地址
參數), 則這個地址是內存中相應頁的線性地址. 如果
加L參數,則此地址是第一個頁的線性地址.

attribute       :下面是頁目錄項或頁表項的屬性:
        ---------------------
        P      在內存中
        NP     不在內存中
        D      又髒又快的DOS!
        A      存取位
       
        U      用戶屬性
 S      管理員屬性
 R      只讀
 ---------------------

type             :每個頁表項在架構中都留有一個
                  3bit的OS字段,被操作系統利用,
                  Windows就定義如下的類型:
        ---------------------
        System    Private
        Instance  Relock
        VM        Hooked
        ---------------------
        系統      私有
        實例      重鎖
        虛擬機    鉤子
        ---------------------
點評: 無
 
命令: PAUSE
作用: 滿屏後是否暫停顯示
語法: PAUSE [ON | OFF]
用法:   
PAUSE 命令將控制是否在SoftICE命令顯示輸出到達滿
屏後暫停.默認PAUSE 爲ON,即在滿屏時暫停. PAUSE命
令不加參數將顯示當前狀態.
點評: 也可用SET PAUSE [ON|OFF]
 
命令: PCI
作用: 顯示系統中每個PCI設備的情況.
語法: PCI
用法:   
PCI 命令顯示系統中每個PCI設備的配置寄存器內容.
不要在非PCI的系統上使用這個命令. 大多數輸出的內
容都一目瞭然,少數的沒有說明,可以參考PCI詳細的說
明書.
點評: 我倒是用它來看顯卡的製造商.
 
命令: PEEK
作用: 從物理內存中讀數據
語法: PEEK[size] address
用法:   
size   : B 字節(默認值);W 字;D 雙字;
address: 物理內存地址.

PEEK 命令顯示從指定物理內存中來的指定大小的數據
PEEK 命令在讀取內存映象的I/O 寄存器的值時很有用.
點評: 參見POKE
 
命令: PHYS
作用: 顯示某個物理地址對應的所有虛擬地址.
語法: PHYS physical-address
用法:   
physical-address: 物理地址, 是由x86的分頁機構轉
換來的.這個物理地址是傳到計算機的總線上的地址.
而且在操作內存映象的硬件設備時(如顯存 )顯得特別
重要.
Windows用x86體系的虛擬尋址方式在虛擬地址(被程序
用到)和物理地址(被硬件設備用到)之間建起一座橋樑.
在很多情況下,一段物理地址可能出現在多個頁表項中,
所以就存在一個物理地址對多個虛擬地址.
SoftICE在表達式中不接受物理地址,所以應用PHYS 命
令來進行轉換.
點評: 無.
 
命令: POKE
作用: 向物理內存寫數據.
語法: POKE[size] address value
用法:   
size   : B 字節(缺省值);W 字;D 雙字
address: 物理內存地址;
value  : 要輸出字節,字,或雙字.
POKE 命令將往指定的物理內存地址處寫指定大小的數
據.這對在寫內存映象的I/O 寄存器的值時很有用.
點評: 無
 
命令: Print Screen鍵
作用: 打印屏幕內容
語法: 按下PrintScreen鍵
用法:   
這個功能將SoftICE屏幕上的內容輸出到打印機. 默認
的打印機端口是LPT1.可以用PRN命令來改變打印端口.
由於SoftICE對外設的讀寫是直接往I/O端口的,所以這
個功能只能用於直接聯接在COM口或LPT口上的設備,而
不支持網絡打印.
也可以用SoftICE Loader將內容記錄到文件中去.
點評:   
打印機我沒有試過,可用Loader將內容都記錄下來是非
常不錯的,有時記錄一段小代碼不必動用w32dasm了,用
Loader就可以代替,非常好的,我推薦您試一下!!!!

有關SoftICE的詳細操作指導教程(11)時間:2009-08-19

14:05來源:未知 作者:編輯B 點擊:2548次
十一 命令: PROC 作用: 顯示系統中所有進程的簡要信息 語

法: PROC [-xo] [task] 用法: -x: 即-eXtended : 顯示每

個線程的擴展信息-o: 即-Objects : 顯示在進程句柄表中的

對象列表task : 任務名輸出:Process : 任務


 
  

十一

命令: PROC
作用: 顯示系統中所有進程的簡要信息
語法: PROC [-xo] [task]
用法: -x: 即-eXtended : 顯示每個線程的擴展信息
-o: 即-Objects  : 顯示在進程句柄表中的對象列表
task            : 任務名
輸出:
Process         : 任務名
pProcess        : 指向進程數據庫的指針
Process ID      : 進程的Ring 3的ID
Threads         : 進程所擁有的線程數量
Context         : 地址區域
DefHeap         : 缺省堆
DebuggeeCB      : 調試塊
 
點評: 無
 
命令: QUERY
作用: 顯示某個進程的虛擬地址映象
語法: QUERY [[-x] address] | [process-type]
用法:   
-x         : 顯示某個線性地址在所有有效的地址區
             域中的內存映象
address    : 線性地址
processtype: 可被解釋成進程的表達式

QUERY  命令可以顯示某個進程的虛擬地址映象或某個
線性地址的映象.如果QUERY命令不加任何參數,將顯示
當前進程的映象.
輸出:
Base       : 指向連續頁的基址
AllocBase  : 由VirtualAlloc函數申請的內存的基址
AllocProtect:在申請時被指定爲存取保護
Size       : 有相同特性的頁組成的內存區的大小Bytes
State      : 內存區中頁的狀態:
        ----------------------------------
        .Commit  受委託的頁,意即物理定位的.
        .Free    空閒的頁,可以被申請
        .Reserve 保留
        ----------------------------------
Protect    : 當前存取保護
Owner      : 內存區的所有者
Context    : 地址區域
點評: 無
 
命令: R
作用: 顯示或更改寄存器的內容
語法: R [-d | register-name | register-name [=]

value]
用法:   
register-name: 以下任何一種:
        ----------------    
         AL,AH, AX,EAX
         BL,BH, BX,EBX
         CL,CH, CX,ECX
         DL,DH, DX,EDX
         DI,EDI,SI,ESI
         BP,EBP,SP,ESP
         IP,EIP,FL,DS
         ES,SS,CS,FS,GS
        ----------------
value      : 將要修改的寄存器內容.寄存器名除 FL
             (標誌寄存器)以外,其他所有的都是 16
             進制的值.如果是FL的話,value應如下:
        ----------------
        O 溢出位
        D 方向位?
        I 中斷位?
        S 符號位
        Z 零標誌
        A 輔助進位
        P 奇偶位
        C 進位標誌
        ----------------
        在相應的標誌前加"+","-"號,表示打開或關閉
        如: R FL +O 將溢出標誌置位.如果不帶"+,-"
        號,則將當前的狀態反轉.

-d        :在命令窗口中顯示寄存器的值.

如果 R 命令不加參數,光標將移到寄存器窗口中,進行
實時修改.如果當前寄存器窗口不可見, 那麼這個命令
將自動顯示它.
另外,修改FL寄存器時,參數不必按照順序,如:
R fl=o+a-c 一次修改3個標誌位.

 
點評: 無.
 
命令: RS
作用: 暫時恢復程序屏幕
語法: RS
用法:   
RS 命令允許用戶暫時恢復程序的視屏畫面. 這個命令
在調試頻繁更新屏幕的程序時特別有用.當顯示出程序
的原畫面後,可以按任意鍵返回SoftICE.RS有個快捷鍵
F4.
點評: 無.
 
命令: S
作用: 在內存中搜尋特定數據
語法: S [-cu][address L length data-list]
用法:   
address  :搜索的起始地址
length   :搜索的長度(字節長)
data-list:可以是一系列字節,也可以是字符串, 字符
          串可以用單引號,也可以用雙引號括住.
-c       :使查找區分大小寫
-u       :查找Unicode 編碼的字符串.

S 命令將從指定的內存地址開始查找指定內容的數據,
一直到超過指定的長度爲止.如果查到相應數據,會在
當前的數據窗口中顯示它,並在命令窗口中顯示信息.
想要繼續查找,則只要打入 S 即可,不需另外帶參數.
S 命令忽略被標記爲不在內存中的頁. 想搜索一大段
內存的話,請用一馬平川的30做爲選擇符.
點評: 無.
 
命令: SERIAL
作用: 將控制檯轉移到串口終端上
語法: SERIAL [on [com-port] [baud-rate] | off]
用法:   
com-port : 從1-4,分別代表COM1,COM2,COM3,COM4
    其中COM1是默認值.
baud-rate: 波特率,默認值由SoftICE自動偵測. 可能
           值爲:1200,2400,4800,9600,19200,23040,
           28800,38400,57000,115000.
用一條電纜將兩臺機器的COM口聯起來, 有被調試程序
的機器稱爲本地機(local), 另一臺做爲控制檯的機器
稱爲遠程機(remote).在聯接前, 遠程機上必須運行軟
件包中的serial.exe程序,所以,遠程機至少要是MSDOS
操作系統.Serial.exe 程序的命令格式和Serial 指令
的格式一致. 當聯接建立後,本地機的屏幕將恢復被調
試程序的屏幕(即windows屏幕), 而遠程機將顯示Sof-
tICE的調試窗口.電纜的做法如下:
        25Pin的電纜
        ===========================
        遠程                   本地
        2 ---------------------- 3
        3 ---------------------- 2
        4 ---------------------- 5
        5 ---------------------- 4
        6 ---------------------- 20
        8 -----^
        20---------------------- 6
                        ^------- 8
        7 ---------------------- 7
        ===========================
       
        9 Pin的接法:
        ===========================
        本地                   遠程
        2 ---------------------- 3
        3 ---------------------- 2
        5 ---------------------- 5
        7 ---------------------- 8
        8 ---------------------- 7
        6 ---------------------- 4
        1 ------^
        4 ---------------------- 6
                         ^------ 1
        ===========================
        注:表中的^代表相接.如上面的
        表示6和1先相接,再接對方的4

遠程機上總可以用CTRL+D 來激活調試.
結束調試可以在遠程機上打入SERIAL off
遠程機要退出serial.exe程序可以用CTRL+Z
點評: 無
 
命令: SET
作用: 顯示或改變SoftICE的內部參數
語法: SET [keyword] [on | off] [value]
用法:   
keyword : 內部變量
value   : 有些變量有數值量,不是簡單的ON,OFF

Set 命令用來設置SoftICE的內部變量. 不加參數將顯
示所有這些變量的當前狀態, 只加keyword將只顯示當
前變量的狀態.
            變量列表
        ----------------------
        ALTSCR        [ON|OFF]
        CASESENSITIVE [ON|OFF]
        CODE          [ON|OFF]
        EXCLUDE       [ON|OFF]
        FAULTS        [ON|OFF]
        FLASH         [ON|OFF]
        I1HERE        [ON|OFF]
        I3HERE        [ON|OFF]
        LOWERCASE     [ON|OFF]
        MOUSE         [ON|OFF][1,2,3]
        PAUSE         [ON|OFF]
        SYMBOLS       [ON|OFF]
        TABS          [ON|OFF][1,2,3,4,5,6,7,8]
        THREADP       [ON|OFF]
        VERBOSE       [ON|OFF]
        ----------------------

CASESENSITIVE ON 將使符號名對大小寫敏感
MOUSE 允許或禁止使用鼠標.還可以設定鼠標移動的速
度,1最慢,3最快,2是中速,也是缺省值.
SYMBOLS ON 將允許反彙編器在代碼中顯示符號名. 如
果爲OFF,將只顯示數字化的地址等.
其餘見它們各自的命令解釋.
點評: 無.

有關SoftICE的詳細操作指導教程(12)時間:2009-08-19

14:05來源:未知 作者:編輯B 點擊:2549次
十二 命令: SHOW 作用: 列出回溯跟蹤歷史緩衝區中的指令

語法: SHOW [B | start] [l length] 用法: start : 十六

進制的值, 用以確定從回溯跟蹤緩衝區 開始反彙編的指令序

號. 爲 1表示是緩衝區 中的最新一條指令.len


 
  

十二

命令: SHOW
作用: 列出回溯跟蹤歷史緩衝區中的指令
語法: SHOW [B | start] [l length]
用法: start  : 十六進制的值, 用以確定從回溯跟蹤緩衝區
         開始反彙編的指令序號. 爲 1表示是緩衝區
         中的最新一條指令.
length : 顯示幾條指令.

SHOW命令將從SoftICE的回溯跟蹤歷史緩衝區中顯示指
令.如果有源程序的話,將顯示源程序與反彙編代碼,若
沒有,則只顯示彙編指令.

結果將在命令窗口中顯示,所有指令都有一個數字前綴
用來表示指令的序號.1 是最新的指令. 可以用上下光
標鍵來瀏覽,用ESC鍵退出.
SHOW 不帶參數或加B 參數將從緩衝區中最舊的一條指
令開始顯示. SHOW 帶序號參數將從指定的序號開始顯
示指令.
SHOW 命令只在回溯跟蹤歷史緩衝區不爲空時纔有用.
用BPR 的 T ,TW參數來裝滿它!
點評: 無
 
命令: SRC
作用: 在源程序,反彙編代碼,兩者混和之間切換顯示.
語法: SRC
用法:   
SRC 命令將在程序源代碼,反彙編後的指令, 或兩者混
合之間來回切換顯示.SRC 的快捷鍵爲 F3.
點評:   
注意:要在當前程序有源文件時這一功能才能奏效, 例
如:用BORLAND C編程序時,所調試的程序example.c;
example.obj,example.exe 都存在纔可以.
 
命令: SS
作用: 在源程序文件中查找字符串
語法: SS [line-number] ['string']
用法:   
line-number :十進制數的行號
string      :用引號括起來的字符串

SS 命令將從指定的line-number(行號)開始,在當前的
源程序文件中查找字符串.如果查找到附合要求的數據,
將在代碼窗口的第一行處顯示.
如果不指定行號,則SS將從當前代碼窗口的第一行處開
始查找.不帶任何參數的SS命令將繼續上次的查找.
注意:在用SS命令之前必須使代碼窗口可見, 並使代碼
窗口顯示源程序文件纔可.
 
點評: 無.
 
命令: STACK
作用: 顯示某個調用棧
語法: STACK [task-name | SS:[E]BP]
用法:   
task-name     :可以用TASK命令看到的任務名
SS:[E]BP      :某個有效的棧框的SS:[E]BP值

STACK 命令用來顯示DOS程序,Windows任務, 32位代碼
的調用棧.STACK命令不加參數的話,當前的SS:[E]BP的
值被默認爲棧框的基址.也可以加任務名或SS:[E]BP來
明確指定一個.
點評: 無.
 
命令: SYM
作用: 顯示或設置符號
語法: SYM [[section-name] ! ] symbol-name [value]]
用法:   
section-name  : 有效的區段名.可以只打部分字母.
                區段名後要加!號,如: SYM .TEXT!
                將顯示可執行文件中.TEXT區段的
                所有符號.
!             : 如果只加參數 ! ,將只顯示此符號
                表中的模塊.
symbol-name   : 有效的符號名,可以加*來模糊尋找.
value         : 用來將某個符號設爲某個指定地址.

SYM命令用來顯示和設置符號地址.SYM命令在找尋某個
你或許只記得部分名字的符號時特別有用,可以用* 來
代替末尾的字符,也可以用 ,(逗號)來代替某一個字符
 
點評: 無.
 
命令: SYMLOC
作用: 重定位符號基址
語法: SYMLOC [segment-address | o | r | -c process-

type | (section-number selector linear-address)]
用法:   
segment address  :段基址,只在DOS中有用
o                :對16位的表起作用.使所有選擇符
                  恢復原序
r                :對16位的表起作用.改變所有段值
                  爲適當的選擇符.
-c               :指定一個context值.
section-number   :32位表.PE文件中從1開始的區段
selector         :32位表.保護模式的選擇符
linear-address   :32位表.區段的基址

SYMLOC 命令可對一個已裝載的符號表進行調整.
 
點評: 無
 
命令: T
作用: 單步跟蹤
語法: T [=start-address] [count]
用法:   
count  :指定SoftICE將單步跟蹤多少次才停止.

T 命令是利用CPU的單步標誌來進行單步跟蹤的.
如果指定 start-address,SoftICE 將從指定的地址處
開始單步跟蹤.如果寄存器窗口可見, 則寄存器窗口將
高亮顯示哪些改變的寄存器的值.
 
點評: 無.
 
命令: TABLE
作用: 改變或顯示當前符號表
語法: TABLE [partial-table-name] | autoon | autooff

| $
用法:   
partial-table-name:符號表的名字或開頭的幾個字符
autoon            :用來打開自動符號表切換功能
autooff           :用來關閉自動符號表切換功能
$                 :用$ 來表示切換到當前指令所在
                   的表中.

TABLE 命令當你有多個符號表裝入內存的時侯很有用.
SoftICE支持16,32位WINDOWS程序,DLLs,VxDs,DOS程序
DOS設備驅動程序,TSRs.
每一時刻只能從一個符號表中取得符號,你若是要用某
個符號表中的符號,必須先用TABLE命令選中!
關鍵字AUTOON將使SoftICE每次彈出都自動切換到當前
指令所在的符號表中.而AUTOOFF正相反.
 
點評: 無.

有關SoftICE的詳細操作指導教程(13)時間:2009-08-19

14:05來源:未知 作者:編輯B 點擊:2550次
十三 命令: TABS 作用: 顯示或修改在顯示源文件時TAB鍵的

寬度 語法: TABS [tab-setting] 用法: tab-setting : 從1

到8,表示TAB鍵的跨度用TABs命令或SET TABS都可設置TAB鍵

的跨度(列), 默認值是8. TAB 命令不加參數將


 
  

十三

命令: TABS
作用: 顯示或修改在顯示源文件時TAB鍵的寬度
語法: TABS [tab-setting]
用法: tab-setting : 從1到8,表示TAB鍵的跨度
用TABs命令或SET TABS都可設置TAB鍵的跨度(列), 默
認值是8. TAB 命令不加參數將顯示當前的TAB鍵設置.
 
點評: 不過我用的3.20默認是4
 
命令: TASK
作用: 顯示Windows任務列表
語法: TASK
用法:   
TASK 命令將顯示當前機器中運行的所有任務. 當前的
任務前面會有一個 * 號.這個命令在WINDOWS出現所謂
的general protection fault 時可以幫助你確定是由
哪個任務引起的.輸出:
Task Name   :任務名
SS:SP       :該任務最後交出控制時的堆棧地址.
StackTop    :堆棧偏移的頂
StackBot    :堆棧偏移的底
StackLow    :當產生地址切換時最低的SP值
TaskDB      :任務數據基址的選擇符
hQueue      :任務的隊列句柄.
Events      :隊列中事件
 
點評: 無.
 
命令: THREAD
作用: 顯示線程信息
語法: THREAD [TCB | ID | task-name]
用法:   
TCB       :線程控制塊
ID        :線程ID
task-name :當前運行的32位過程.

THREAD 命令將顯示某個線程的信息.
如果不帶任何參數,將顯示當前系統中所有活動的線程
如果將某個進程名作爲參數,將顯示所有該進程的線程
如果指定TCB或ID,則只顯示指定的線程.
Ring0TCB   :Ring-0線程控制塊的地址.
ID         :VMM線程ID
Context    :該線程所屬進程的context句柄
Ring3TCB   :Ring-3線程控制塊的地址
ThreadID   :Ring-3線程ID
Process    :擁有該進程的KERNEL32進程數據庫的地址
TaskDB     :任務數據的選擇符
PDB        :程序數據的選擇符(PSP)
SZ         :線程的大小(16,32)
Owner      :進程的所有者.
 
點評: 無.
 
命令: TRACE
作用: 進入或退出摹擬跟蹤模式
語法: TRACE [b | off | start]
用法:   
start  :16進制的值.用來表示回溯跟蹤歷史緩衝區中
        指令的序號.1 表示最新的一條指令.

TRACE 命令不帶參數將顯示當前摹擬跟蹤的狀態.
TRACE OFF 將退出當前的摹擬跟蹤模式,回到正常的跟
蹤模式下.
TRACE B 從最老的一條指令開始摹擬跟蹤.  TRACE 加
數字將從指定的序號開始摹擬跟蹤.
只有當回溯跟蹤歷史緩衝區不爲空時才能用TRACE命令
參見BPR命令的說明.
回溯(摹擬)跟蹤中可以用XT,XP,XG來跟蹤程序,寄存器
窗口中除了EIP改變外,其他的都不變,因爲SoftICE 在
回溯跟蹤中不記錄所有寄存器的值.SoftICE 的命令除
了 X,T,G,P,HERE,XRSET不能在回溯跟蹤模式下用外其
他都可以使用.
 
點評: 無.
 
命令: TSS
作用: 顯示任務狀態段和I/O端口的掛接
語法: TSS [TSS-selector]
用法:   
TSS-selector :任何代表是個TSS的GDT選擇符

TSS命令通過讀取TR命令來獲得地址, 從而顯示任務狀
態段的內容.用GDT命令可以看到TSS選擇符.如果TSS命
令不加參數,將顯示當前的TSS.
輸出:
TSS selector value :TSS選擇符
selector base      :TSS的線性地址
selector limit     :TSS的大小
下面四行顯示TSS中寄存器的內容:
LDT, GS, FS, DS, SS, CS, ES, CR3
EAX, EBX, ECX, EDX, EIP
ESI, EDI, EBP, ESP, EFLAGS
Level 0, 1 and 2 stack SS:ESP
下面將顯示被VxD掛接的I/O端口
port number        :16位的端口號
handler address    :32位的I/O句柄地址
handler name       :句柄的符號名.
 
點評: 無.
 
命令: TYPES
作用: 列出當前內存區域(context)中的類型名
語法: TYPES [type-name]
用法:   
type-name  : 顯示指定的類型名
TYPES 命令不加參數將顯示當前所有的類型名.如果加
參數將只顯示所指定的類型.如果參數是個結構,TYPES
將自動展開結構,並顯示其成員.
 
點評: 無
 
命令: U
作用: 反彙編指令
語法: U [address [l length]] | [symbol-name]
用法:   
address     : 段:偏移量或選擇符:偏移量
symbol-name : 將從指定的函數開始反彙編
length      : 反彙編的長度(字節)

U 命令將從指定地址開始反彙編指定長度的指令.如果
代碼窗口可見,則顯示結果將在代碼窗口中, 否則在命
令窗口中. U 命令跟symbol-name(符號名)如果當前符
號表裝載的話,U 命令可以從指定的符號地址開始反匯
編.
 
點評: 可用U在命令窗口中反彙編,再用LOADER32存盤
 
命令: VCALL
作用: 顯示VxD可調用例程的名字和地址
語法: VCALL [partial-name]
用法:   
partial-name:符號表的名字或開頭的幾個字符.

VCALL 命令將顯示Windows VxD API例程的名字和地址.
這些例程是Windows本身的VxD提供的併爲爲其他VxD準
備的.所顯示的地址只有當VMM VxD初始化過後纔有效,
如果SoftICE的初始化字符串中沒有一個 X;SoftICE將
在Windows啓動但VMM沒有初始化時彈出.
 
點評: 無.

有關SoftICE的詳細操作指導教程(14)時間:2009-08-19

14:05來源:未知 作者:編輯B 點擊:2551次
十四 命令: VER 作用: 顯示SoftICE版本號 語法: VER 用法

: 用Loader32的ABOUT也可以顯示詳細的信息. 點評: 無 命

令: VM 作用: 顯示虛擬機的信息 語法: VM [-S] [VM-ID]

用法: -S : 切換到由VM-ID標識的VMVM-ID : 虛


 
  

十四

命令: VER
作用: 顯示SoftICE版本號
語法: VER
用法: 用Loader32的ABOUT也可以顯示詳細的信息.
 
點評: 無
 
命令: VM
作用: 顯示虛擬機的信息
語法: VM [-S] [VM-ID]
用法:   
-S    : 切換到由VM-ID標識的VM
VM-ID : 虛擬機的序號.從1開始,並且1是賦予Windows
        系統VM的.(Windows應用程序在這個VM上運行)

如果VM 命令不加參數,SoftICE將顯示系統中所有虛擬
機的信息.如果加 VM-ID 參數,該VM的寄存器值將被顯
示.這裏的寄存器值是在VM控制塊用戶區中的寄存器值.
所以,這些寄存器表示的是最後當有內存地址切換時存
入該控制塊時的值.當SoftICE彈出時正好某個VM 正在
運行的話,在寄存器窗口中的值纔是真正當前的值, 而
不是用VM命令在命令窗口中看到的值. 有一點要注意:
如果你在某個中斷例程中的頭幾句指令處,而此時這個
VM的寄存器值正在被存入控制塊,那麼可能當前只有CS:
IP的值(由VM顯示)是真的.其餘的有可能還沒有存入控
制塊.
命令窗口中顯示兩組CS:EIP和SP的值. 分別代表保護模
式和實模式.兩者的排列是由VM最後的執行模式決定的.
如果最後是在保護模式中切出來的,那麼先顯示PROT.反
過來就先顯示REAL.
一般情況下,除了系統VM之外,其他的VMs只有一個V86線
程.但是DPMI程序會從V86轉到保護線程.

VM命令在調試VxDs,DPMI程序,DOS程序時比較有用.如果
一個DOS程序在運行時掛起,你可以用VM命令看到該VM最
後執行的一條指令.
輸出:

status:
---------------------------------
0001H 獨佔模式
0002H 後臺運行
0004H 正在建立
0008H 暫時終止
0010H 部分被破壞
0020H 執行保護模式指令
0040H 執行保護模式程序
0080H 執行32位保護模式程序
0100H 從VxD中調用CALL
0200H 後臺高度優先權
0400H 信號阻斷
0800H 阻斷喚醒
1000H V86程序的部分可換頁
2000H V86程序其他的部分被鎖定
4000H 時間切片
8000H 空閒,已釋放時間片
---------------------------------
 
點評: 無.
 
命令: VXD
作用: 顯示Windows VxD 映象
語法: VXD [VxD-name]
用法:   
VxD-name : 虛擬設備驅動程序的(部分)名字

VXD 命令將顯示指定的某個VxD的信息.如果不加參數,
VXD命令將顯示系統中所有的虛擬設備驅動程序的映象.
動態裝載的VxD將顯示在靜態裝載的VxD後面.
輸出:
VxDName   : VxD 名字
Address   : 段基址
Length    : 段的長度
Seg       : 可執行部分的區段數
ID        : VxD的ID
DDB       : VxD描述符塊的地址
Control   : 控制分配句柄的地址
PM        : Y表示該VxD有一個保護模式的API,N相反
V86       : Y表示該VxD有一個V86API,N相反
VXD       : 實現的VxD服務數
Win32     : 實現的Win32服務數
 
點評: 無.
 
命令: WATCH
作用: 加入一個監視窗口
語法: WATCH expression
用法:   
WATCH 命令監視所指定表達式的值.目標數的大小由它
本身的類型信息提供. SoftICE在無法確定大小時默認
爲雙字.SoftICE一次最多支持8個表達式.每次SoftICE
彈出,表達式的當前值就會在監視窗口中顯示出來.
表達式的信息:
.表達式
.類型
.當前的值,以指定格式顯示.
如果類型前有個+號,則此類型可擴展.用鼠標雙擊或用
ALT+W切進監視窗口,用光標移動到該類型上去,再按回
車鍵.
如果要求的表達式當前無法計算,SoftICE會顯示:
"Error evaluating expression"
要刪除某個監視的表達式,選中它,再按DEL鍵.
 
點評: 無.
 
命令: WC
作用: 打開或關閉代碼窗口;或改變代碼窗口大小
語法: WC [window-size]
用法:   
window-size   : 窗口大小,十進制值

WC 命令不加參數將打開或關閉代碼窗口.
WC 命令加參數將改變代碼窗口的大小.
 
點評: 無.
 
命令: WD
作用: 打開或關閉數據窗口;或改變數據窗口大小
語法: WD [window-size]
用法:   
window-size   : 窗口大小,十進制值

WD 命令不加參數將打開或關閉數據窗口.
WD 命令加參數將改變數據窗口的大小.
 
點評: 無
 
命令: WF
作用: 以浮點或MMx形式顯示浮點棧
語法: WF [-d] [b | w | d | f | *]
用法:   
-d     : 在命令窗口中顯示結果,另外加上FPU狀態字
         和FPU控制字.
b      : 以字節形式顯示
w      : 以字形式顯示
d      : 意雙字形式顯示
f      : 以10byte實數形式顯示
*      : 按順序以下一種形式顯示.

以10bytes的實數顯示時,會標記有ST0-ST7
以別的形式顯示會有 MM0-MM7
 
點評: 無.
 
命令: WHAT
作用: 用來確定一個名字或表達式是否是已知類型
語法: WHAT [name | expression]
用法:   
name      :任何符號名(不能被解釋成表達式)
expression:任何表達式

WHAT 命令將分析它的參數,並和它已知的名字相比較,
枚舉每一個可能的匹配,顯示出結果.
 
點評: 無.

有關SoftICE的詳細操作指導教程(15)時間:2009-08-19

14:05來源:未知 作者:編輯B 點擊:2552次
十五 命令: WL 作用: 打開或關閉本地窗口;設置本地窗口的

大小 語法: WL [window-size] 用法: window-size : 十進

制的行數WL 命令不加參數將使本地窗口在打開與關閉狀態之

間切換.WL 命令加參數將使本地窗口改變爲指


 
  

 

十五

命令: WL
作用: 打開或關閉本地窗口;設置本地窗口的大小
語法: WL [window-size]
用法: window-size   : 十進制的行數

WL 命令不加參數將使本地窗口在打開與關閉狀態之間
切換.WL 命令加參數將使本地窗口改變爲指定大小.
所謂本地窗口,也可稱局部(變量)窗口, 它是從當前棧
中取的.
 
點評: 無
 
命令: WMSG
作用: 顯示Windows消息的名字和消息代碼
語法: WMSG [partial-name| msg-number]
用法:   
partial-name  : Windows 消息名或消息名的前幾個字符.
msg-number    : 十六進制數消息代碼

WMSG 用來察看Windows消息名和消息代碼.這個命令在
和BMSG配合下斷點時非常有用.WMSG不加參數將顯示所
有Windows消息的名字,如果加partial-name和msg-num
參數,則只顯示附和條件的消息.
 
點評: 無.
 
命令: WR
作用: 打開或關閉寄存器窗口
語法: WR
用法:   
如果當前寄存器窗口不可見, 那麼WR命令將使之可見,
反過來,WR命令將使寄存器窗口不可見.
寄存器窗口顯示80386寄存器集,CPU的FLAGS.
該命令有快捷鍵 F2.
 
點評: 無.
 
命令: WW
作用: 打開或關閉監視窗口;或改變監視窗口的大小
語法: WW [window-size]
用法:   
window-size  : 十進制的窗口行數

WW 命令不加參數, 將使監視窗口在打開和關閉的狀態
之間切換.WW命令加參數將使監視窗口改變爲指定大小.
另外 ALT+W鍵將使光標在監視窗口和命令窗口之間來
回切換.
參見 WATCH
 
點評: 無.
 
命令: X
作用: 從SoftICE窗口中退出
語法: x
用法:   
X 命令將退出SoftICE,將控制交還給剛纔被SoftICE中
斷的程序.SoftICE的窗口將消失,若有斷點的話再彈出.
用SoftICE呼叫熱鍵(默認CTRL+D)或在窗口中鍵入G 命
令所取得的效果和 X 的效果一樣.
 
點評: 無.
 
命令: XFRAME
作用: 顯示當前的異常出錯句柄框
語法: XFRAME [except-frame* | thread-type]
用法:   
except-frame*     : 指向異常出錯框的指針
thread-type       : 代表一個線程
異常出錯框是由微軟結構化異常出錯處理API建立的.
 
點評: 無
 
命令: XG
作用: 在模擬(回溯)跟蹤狀態中運行程序到某一地址
語法: XG [r] address
用法:   
XG 命令意思是在模擬跟蹤狀態中的G命令.R 參數表示
在回溯跟蹤歷史緩衝區中往回走.
 
點評: 無.
 
命令: XP
作用: 在模擬跟蹤模式中執行程序
語法: XP
用法:   
XP 命令在模擬跟蹤模式中單步執行(P)
 
點評: 無.
 
命令: XRSET
作用: 重置回溯跟蹤歷史緩衝區
語法: XRSET
用法:   
XRSET 必須用在非模擬跟蹤模式中,用來清除歷史緩衝
區.
 
點評: 無.
 
命令: XT
作用: 在模擬跟蹤模式中單步跟蹤程序
語法: XT
用法:   
XT 命令在模擬跟蹤模式中單步跟蹤程序,
參數 R 表示反方向.
XT和XP的區別參見P命令.
 
點評: 無.
 
命令: ZAP
作用: 將內嵌的INT 1,INT 3清爲NOP
語法: ZAP
用法:   
ZAP 命令在跟蹤程序時將程序中的INT 1,INT 3指令換
爲相等數量的NOP,這在用戶爲了調試程序方便而在程序
中加雜INT 1或INT 3指令,過後又不想要時特別有用.
需注意:只有當INT 1,INT 3出現在當前CS:EIP的前一條
指令位置處纔有用.
 
點評: 無.

 

歡迎訪問:樂園www.ly8.co

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章