a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 學院 > 邏輯算法 > 正文

(看雪教程) 第3章 第2節 SoftICE與TRW2000操作入門

2019-09-10 09:02:08
字體:
來源:轉載
供稿:網友

由于TRW2000命令和操作完全兼容SoftICE,因此如不特殊說明,在本文對SoftICE的敘說都適合TRW2000。
  SoftICE的所有操作都發生在一個可以隨時可激活的調試窗口中,在這個窗口中可以視Windows應用程序和系統的運行。
一、 調試窗口簡介
  我們假設你的SoftICE己經正常運行,此時在Windows里按"Ctrl+D"鍵就可以呼出SoftICE的調試窗口,當需要返回到Windows系統時,再按"Ctrl+D"鍵,也可使用X命令或按F5鍵。激活的調試窗口如圖2.14所示,分為寄存器窗口、數據窗口、代碼窗口、浮點窗口和命令窗口等部分。
如是在TRW2000環境下,激活是按"CTRL+N",和SoftICE不同的是TRW2000中沒有浮點窗口,不過有一個堆棧窗口。

(圖一)SoftICE或TRW2000調試截圖

1、寄存器窗口
  在這里可以觀察到各種寄存器的當前值,如數據寄存器EAX、EBX、ECX、EDX和控制寄存器(EIP和PSW)等,有一點要注意了,由于我們是在Windows平臺下,所以看到的都是80386寄存器集,其與16位寄存器差別在前多了一字符"E",意為16位寄存器擴展。
2、數據窗口
  在數據窗口顯示指定內存處中的數據,以十六進制和ASCII同時顯示,這可以說是我們的眼睛,因此有必要了解一下各部分的含義。


(圖二)

①號位置的0030:這是段選擇器。
  在Windows的保護模式下CS、DS、ES、SS、FS和GS不叫段寄存器,叫段選擇器。在保護模式中,內存分為了好多的段,在TRW200下用GDT就可以看到段的編號、類型、開始物理地址、大小、屬性。讓我們看看編號0030是什么東西:


(圖三)

  這個段是32位數據類型,長度為4G ,我們還可以看到很多的段,它們有可能會指向同一個物理地址,但它們的類型,屬性可能不同。如一些段指向的地址是不可讀寫的,但另外一個段指向的同一物理地址是可讀寫的!如果我們通過不可寫的那段的編號放到段選擇器,然后進行讀寫操作,肯定死掉了。 但換了另外一個段對同一個地方讀寫那就沒問題!保護模式的內存管理挺有趣的,感興趣的不妨看看這方面的書,當然作為初學者只需稍微了解就可。
②號位置00000000:此處表示內存的虛擬地址。
③號位置的值是當前內存的數據,以十六進制表示。
④號位置的值是"③"處值的另一種表示方法:ASCII碼。
3、代碼窗口
  此處顯示的是當前程序的代碼,因為不管是什么程序,最終在CPU執行時都是以機器語言方式,而匯編語言和機器語言是一一對應的,因此SoftICE為了方便我們理解,把所視的代碼以匯編代碼形式顯示在我們面前。例如:


(圖四)


①段選擇器;
②虛擬地址;
③機器碼:這就是CPU執行的機器代碼,此處是以十六進制表示。你可用Code on/off打開或關閉這項的顯示。
④匯編指令:和機器碼對應的程序代碼
4、堆棧窗口
  這個是TRW2000特有的,通過它很方便視堆棧的狀況。
5、命令窗口
  這是各種命令執行的地方,在屏幕底部的動作狀態行顯示執行命令的各種提示,以及可提供指令語法幫助。
6、程序領空
  所謂領空,實際上是指:在某一時刻,CPU 的 CS:IP(EIP) 所指向的某一段代碼的所有者所在的區域。此例中SoftICE所停下來時光標所指的那一句代碼是屬于KERNEL32.DLL的,因此就叫KERNEL32.DLL領空,在圖2.14中,可看到的領空名是KERNEL32!.text,那我怎么知道它就是KERNEL32.DLL文件呢?這個主要是經驗,KERNEL32.DLL是Windows系統文件,在SoftICE里顯示領空名時不顯示擴展名,只是顯示前一部份。

二、SoftICE常用命令簡介

由于SoftICE命令操作較多,在此就把幾個常用的命令介紹一下,其它詳細說明請參考附錄的"SoftICE手冊"。
1、 G命令
語法:G [=start-address] [break-address]
作用:執行程序,后面如果加地址,則執行到該地址為止。
注意: TRW2000 中G命令與SoftICE稍有不同,SoftICE中G命令必須是在當前段中,這時IP(EIP)為指定值才中斷;而TRW2000則不管段址如何,只要IP(EIP)是指定的值便停下,TRW2000這個特性大大方便我們的操作。
2、P命令
語法: P [ret]
作用:單步執行程序。
只執行P時,相當于按下F10鍵。在匯編模式中,當遇到 CALL、INT、LOOP、REP指令時,P將不跟蹤進去,直到這些指令執行完畢,控制才返回SoftICE,換句話說,P命令是"跨"過這些指令的。
P RET 命令相當于快捷鍵 F12。SoftICE將一直單步執行直到它找到一條返回語句(RET、RETF),也就是說讓SoftICE一直執行代碼,直到出現 RET (XXXX) 命令,再跳出來攔截,這時,當前 IP(EIP) 會是停在 RET (XXXX) 后的某一條語句上,通常是在某一個CALL XXXXXXXX 后面。由于我們通常用SoftICE在某些底層的Windows函數上設置斷點,所以 F12 是很管用的。因為程序的作者用的是高級語言,Windows又是提倡"透明",不希望程序員知道底層的操作,而只提供給他們高層的接口,而相當多的高級函數調用某個一定的底層函數,所以當你在底層函數上下斷點,再用F12,就可以知道他用的是什么函數了。
3、T命令
語法:T [=start-address] [count]
start-address:執行起始地址;
count:指定SoftICE將單步跟蹤多少次才停止。
作用:單步跟蹤。
T命令相當于功能鍵F8,如沒指定起始地址,將從CS:IP(EIP)指向的指令開始執行,此時當遇到 CALL、LOOP等指令時,T將跟蹤進去。
注意: F8和F10功能鍵的主要差別就在這,遇到 CALL、LOOP等指令時,F10是路過,而F8是跟進去。
4、BPX命令
語法:BPX [address] [IF expression] [DO "command1;command2;..."]
address :斷點所在的線性地址;
IF expression:條件表達式,只有條件為"真"時,SoftICE才在斷點處彈出;
Do command:當SoftICE彈出時,自動執行的一些命令。
作用:在可執行語句上設置(或清除)斷點。
BPX 用來在指令處下斷點,程序一旦執行到此,SoftICE就會彈出。當光標在代碼窗口中時,直接打入BPX就會在光標所在語句處設斷點,再打BPX 就取消。BPX的快捷鍵是 F9,當光標在代碼窗口中時,按F9就是設定(取消)。
BPX 也可用函數名來作地址參數:格式為"BPX 函數名"。
這個函數名可以是任意一個API函數、虛擬機指令、DLL文件的引出函數等等,功能強勁。例:
:bpx messageboxa(不用區分大小寫)//只要程序調用了此函數,SoftICE將中斷;
:bpx GetWindowTexta if EAX==8 // 當調用GetWindowTexta函數時EAX=8,SoftICE將中斷;
:BPX GetWindowTexta do "d EAX"http:// 當 GetWindowTexta被中斷,自動顯示EAX的值。
注意: TRW2000與SoftICE條件格式有點不同,如在SoftICE下的是:bpx loadlibrarya do "dd esp->4",而相同的用法在TRW2000中是:bpx loadlibrarya do "dd *(esp+4)" 。另外SoftICE中用鼠標雙擊指令行可設斷,而TRW2000中不行,只能按F9.
5、BPM命令
語法:BPM[size] address [條件表達式] DO[執行的命令]
size:內存單元大小,B為字節(默認);W 為字;D 為雙字;
verb:所進行的操作,R為讀;W為寫;RW為讀寫(默認);X 為執行。
作用:設置內存訪問斷點。
注意: BPM用了DR3-DR0寄存器,所以最多只能設四個斷點。
6、BMSG命令
語法:BMSG window-handle [條件表達式] DO[執行的命令]
window-handle:消息發向的窗口句柄,即消息名
作用:在Windows的消息上下斷點。
Windows本身是由消息驅動的 所以跟蹤一個消息會得到相當底層的答案。如:
我們執行記事本程序(Notepad),然后Ctrl+D激活SoftICE輸入:
   :bmsg wm_char
   :g
然后回到Notepad中,隨便按一個鍵,SoftICE就激活了;原因在于我們在按鍵消息上設置了斷點(退出SoftICE別忘下命令"BC *"清除剛才下的斷點)。
7、BL命令
語法:BL
作用:顯示當前所設的斷點
注意: SoftICE會把所有斷點按從0開始的編號列出,而TRW2000是從1開始編號列出。
8、BC命令
語法:BC list | *
list:可以清除指定編號的斷點多個時中間用空格或逗號隔開。
* :清除所有的斷點。
作用:清除一個或多個斷點
9、BD命令
語法: BD list | *
list:可以是單個,也可以是一系列斷點,中間用空格或逗號隔開。
* :禁止所有的斷點
作用:使一個或多個斷點失效。
10、BE命令
語法:BE list | *
作用:使一個或多個斷點恢復有效。
用來恢復前次用 BD 命令使之失效的斷點。 (每當新定義斷點或編輯斷點時系統自動將其置為有效)
11、BPE命令
語法:BPE index_number(斷點索引號)
作用:編輯一個已存在的斷點。
12、R命令
語法:R 寄存器名
作用:顯示或更改寄存器的內容。
其可更改所有的寄存器的值。此命令較常用的一個功能是更改狀態寄存器(PSW )的值,格式:R FL 標志位。比如當前 Z標志位(零位)為置位狀態,執行"r fl z"之后會被清除;如果C標志位為清除狀態,那么"r fl c"將使之置位。
注意: 利用此命令很方便在一些跳轉指令上改變方向。
13、A命令
語法:A [地址]
作用:進入小匯編狀態,可直接寫入匯編代碼
如不加地址值,直接在當前CS:IP(EIP)處匯編。用SoftICE內置的匯編器在內存中寫入匯編代碼。匯編器支持標準的80x86指令集,包括386、486、Pentium、Pentium-Pro、MMX協處理器,新版的SoftICE還支持AMD的3D Now!、PII、PIII的特有指令集。
14、D命令
語法:D[size] [address [l length]]
size:B 字節;W 字;D 雙字; S 短實型;L 長實型;T 10b長實型
作用:顯示某內存區域的內容。
15、S命令
語法:S [-cu][address L length data-list]
address:搜索的起始地址
length :搜索的長度(字節長)
data-lis:可以是一系列字節,也可以是字符串,字符串可以用單引號,也
可以用雙引號括住.
-c :使查找區分大小寫
-u :查找Unicode 編碼的字符串.
作用:在內存中搜尋特定數據,如果找到數據,那將在數據窗口中顯示出來,如果在找到后,你還要繼續查找,使用不帶參數的S命令。由于S命令忽略不在內存中的頁面,因此你可以使用32位平面地址數據段描述符30h在整個4GB(0~FFFFFFFFh )空間查找。如:
s 30:0 l FFFFFFFF "78787878" //在此令在內存中查找字串"78787878"位置。
注意: TRW2000中S命令的字串應是單引號(而SoftICE皆可)。如:s 30:0 l FFFFFFFF '78787878'.
16、E命令
語法:E[size] [address [data-list]]
作用: 修改內存單元
17、U命令
語法:U [address [l length]] | [symbol-name]
address :段:偏移量或選擇符:偏移量
symbol-name:將從指定的函數開始反匯編
length :反匯編的長度(字節)
作用: 反匯編指令
你可以利用此命令抓取匯編代碼,運行LOADER32后,將歷史緩沖區(history buffer)調大些(默認為256,不能放足夠多的緩沖數據)。然后切換到SoftICE調試畫面下,來到你要抓取的地方,反匯編這些代碼,如:U CS:EIP L 1000 ,立即按Ctrl+D返回到Windows環境,再次來到symbol loader程序,選擇"File/Save SoftICE History As…"。
注意: 在TRW2000下可以直接反匯編代碼輸出到一個文件:
u 401000402000 >路徑/myfile。
18、FAULTS命令
語法:FAULTS [on | off]
作用:打開或關閉錯誤跟蹤功能
由于SoftICE做為一個DEBUGGER,FAULTS 默認為ON,所以一旦CPU有非法指令,SoftICE就會不停地彈出。
19、?命令
語法:? 表達式
作用:計算一個表達式的值
一個非常高級的計算器,另外由于可以顯示ASCII所以可以很方便地在各種數制之間察看。
20、.命令
語法: .
作用:在代碼窗口中定位當前指令
當你在代碼窗口中上下瀏覽時,有可能走得很遠,那么這時一個"."命令會讓你在下一瞬間回到SoftICE當前所在的CS:EIP處。
21、EXP命令
語法: EXP [函數名]
作用: 顯示DLL中的出口函數
函數名可以指定出其前幾個字符 可以用?來做替代不定字符,這樣你就可查找相關函數及其是哪個DLL文件了。這對于你在Win2K系統上非常實用,Win2K系統的KERNEL32.DLL中許多函數形式和Windows 9x可能不同,用此命令你就可找到正確的函數名了。
22、PMODULE命令(TRW2000特有命令)
作用:'pret'(相當于按<F12>) 直至CS:EIP位于模塊中,但比F12更實用,其可以快速回到你的當前程序領空,不用按多次F12了
23、SUSPEND命令(TRW2000特有命令)
作用: 暫停當前的線程,并退出 TRW2000,按熱鍵返回,此命令相當方便。
24、ver blue命令(TRW2000特有命令)
如你的TRW2000背景顏色很暗,可通過此命令來調整背景

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 亚洲第一区国产精品 | 天天看天天爽 | 一本色道精品久久一区二区三区 | 日韩福利在线 | 国产目拍亚洲精品99久久精品 | 99精品国产高清一区二区麻豆 | 亚洲毛片在线 | 久久久91 | 精品日本一区二区 | 亚洲高清在线观看 | 国产三级日本三级美三级 | 久久综合狠狠综合久久综合88 | 黄色片在线免费观看 | 亚洲欧美在线人成swag | 免费网站18| 欧美激情在线播放 | 婷婷色综合色 | 成年人在线观看视频 | a中文字幕| 国产精品一区二区三区免费 | 9久9久9久女女女九九九一九 | 激情一区二区三区 | 在线无码 | 91一区二区在线 | 久草免费在线 | 欧美日韩一区二区三区不卡视频 | 91精品久久久久久综合五月天 | 成人免费在线电影 | 国产精品毛片久久久久久 | 久久久久亚洲精品 | 日韩视频网| 欧美二区精品 | 在线黄色av | 极情综合网 | 黄色免费网 | 国产一区二区三区久久久 | 国产中文字幕在线观看 | 岛国av一区 | 精品国产乱码久久久久久闺蜜 | 欧美欧美欧美 | 亚洲一区二区三区四区在线观看 |