| 導購 | 订阅 | 在线投稿
分享
 
 
 

SoftICE技巧九則

來源:互聯網網民  2006-04-20 05:58:40  評論

SoftICE技巧九則

ShackSing

sharksing@163.com

SoftICE是由美國 Compuware (NUMEGA)公司出品的系統級的程序調試工具, 原本單獨發行,但自 4.0.5 版本後不再單獨發行,而是包含在 DriverStudio 和 SoftICE Driver Suite 之中,最新版本爲 4.3.0。它出色的性能不僅得到專業用戶的喜愛,似我等菜鳥更是深深爲其強大的功能所折服!在此以我使用 SoftICE 過程中積累的一點小小技巧形成塗鴉之作奉獻給大家,希望你能喜歡。(注意:以Windows XP、DriverStudio 3.0爲講解平台,在其他版本中執行可能會有所不同)

1、配置:在 DriverStudio Configuration 中的 SoftICE Initialization General 項中,Initialization 的字符串長度可能有一定限制,不能超過128個字符(含空格),例如輸入:

“Faults off;set font 2;lines 40;width 80;wd.1 1;dd;dex 1 @esp;wd.2 1;dd;dex 2 esp->4;wd.3 2;dd;dex 3 ss:esp;wd.0 2;wc 18;code on;x;”

在 window系統目錄下system32\driver\winice.dat 文件中則保存爲:

INIT=“Faults off;set font 2;lines 40;width 80;wd.1 1;dd;dex 1 @esp;wd.2 1;dd;dex 2 esp->4;wd.3 2;dd;dex 3 ss:esp;wd.0 2;wc 18;code o”

顯然不能正確的保存,啓動 SoftICE 時將出現錯誤指令 “code o”,須輸入“X”才能退出。

解決辦法很簡單,直接在 winice.dat 文件中輸入兩條 INIT 指令即可:

INIT=“Faults off;set font 2;lines 40;width 80;wd.1 1;dd;dex 1 @esp;wd.2 1;dd;dex 2 esp->4;wd.3 2;dd;dex 3 ss:esp;wd.0 2;wc 18;”

INIT=“code on;x;”

2、宏命令:設置宏命令時,最好直接在 winice.dat 文件中輸入,當在 SoftICE Initialization Micro Definitions 中輸入時,例如輸入:

"bpx GetDlgItemTextA DO \"D esp->c\";bpx GetWindowTextA DO \"D esp->8\""

被保存爲:

"bpx GetDlgItemTextA DO \D esp->c\;bpx GetWindowTextA DO \D esp->8\"

可見有時DriverStudio Configuration 程序無法正確保存宏命令中的引號而導致宏命令失敗。但是如果用“記事本”直接在 winice.dat 中輸入宏命令,就可以正確保存並正確裝載。

3、點號(.)有妙用:一般情況下,.命令可以使代碼窗口回複顯示當前執行的代碼,當調試源代碼時,“.n”可以回到第 n 行代碼,例如執行“u .n”命令,代碼窗將顯示第 n 行源代碼。

4、用好下劃線(_):設置斷點時,在參數前加“_”可以代表參數當前的數值,從而得到動態條件斷點,例如:

bpx eip if eax==_eax ;表示當寄存器 eax 的值再次等于現在的值時中斷;

bpx MessageBoxA if pid==_pid ;表示該斷點僅僅對當前的進程(process)有效。

5、運用命令修改符 .t .p :命令修改符.t、.p 可以加在 bpm、bpx 等命令後面,分別表示斷點僅僅對當前線程、進程有效,例如:

bpx.t GetWindowTextA

6、利用 SoftICE 內置函數 bpindex 設置一次性斷點:bpindex 代表引起當前中斷的斷點序號,利用這個函數可以設置動態的或一次性的斷點,例如:

bpint 3 do "bc bpindex" 這個斷點可以用來中斷在程序入口處之後再刪除這個斷點,以防某些 int 3 的反調試方法。

7、ctrl+L 速清屏:當新的線程創建時,常常使 SoftICE 窗口出現窗口碎片而覆蓋了 SoftICE 的窗口字符,這時同時按下 ctrl 和 L 鍵即可快速清屏。

8、讓 SoftICE 窗口與全屏顯示自由切換:一般情況下,DriverStudio Configuration SoftICE Video 設置爲Universal Video Driver 時,SoftICE 將顯示在窗口中,設置爲 Full screen VGA mode 時將全屏顯示,兩種顯示改變之前要重啓動計算機。其實設置爲Universal Video Driver 時,也可以實現全屏顯示,方法爲:

啓動命令行方式 cmd.com 並激活爲當前窗口,同時按 Alt 和 Enter 鍵,將啓動到全屏 VGA 模式,此時按 Ctrl + D 即可啓動到 VGA 全屏方式,該方式比設置爲 Full screen VGA mode 的方式更好,可以通過 cmd.com 來設置字體、字符大小等,簡直酷呆了!

9、用 G 命令代替 BPX、BPM 的部分功能,可以對付部分設有斷點清除的反調試程序:用 BPM、BPX 設斷時,反調試程序會清除斷點使得斷點失效,而改爲 G 命令可以避免這個問題,例如:

bpx GetWindowTextA 改爲 G GetWindowTextA

bpmb 0040AAAA X 改爲 G 0040AAAA

SoftICE 的功能太強大了,行文至此,無法繼續,且作抛磚引玉之舉,希望各位大蝦不吝賜教,各位菜鳥也勿忘多多探討

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
SoftICE技巧九則 ShackSing sharksing@163.com SoftICE是由美國 Compuware (NUMEGA)公司出品的系統級的程序調試工具, 原本單獨發行,但自 4.0.5 版本後不再單獨發行,而是包含在 DriverStudio 和 SoftICE Driver Suite 之中,最新版本爲 4.3.0。它出色的性能不僅得到專業用戶的喜愛,似我等菜鳥更是深深爲其強大的功能所折服!在此以我使用 SoftICE 過程中積累的一點小小技巧形成塗鴉之作奉獻給大家,希望你能喜歡。(注意:以Windows XP、DriverStudio 3.0爲講解平台,在其他版本中執行可能會有所不同) 1、配置:在 DriverStudio Configuration 中的 SoftICE Initialization General 項中,Initialization 的字符串長度可能有一定限制,不能超過128個字符(含空格),例如輸入: “Faults off;set font 2;lines 40;width 80;wd.1 1;dd;dex 1 @esp;wd.2 1;dd;dex 2 esp->4;wd.3 2;dd;dex 3 ss:esp;wd.0 2;wc 18;code on;x;” 在 window系統目錄下system32\driver\winice.dat 文件中則保存爲: INIT=“Faults off;set font 2;lines 40;width 80;wd.1 1;dd;dex 1 @esp;wd.2 1;dd;dex 2 esp->4;wd.3 2;dd;dex 3 ss:esp;wd.0 2;wc 18;code o” 顯然不能正確的保存,啓動 SoftICE 時將出現錯誤指令 “code o”,須輸入“X”才能退出。 解決辦法很簡單,直接在 winice.dat 文件中輸入兩條 INIT 指令即可: INIT=“Faults off;set font 2;lines 40;width 80;wd.1 1;dd;dex 1 @esp;wd.2 1;dd;dex 2 esp->4;wd.3 2;dd;dex 3 ss:esp;wd.0 2;wc 18;” INIT=“code on;x;” 2、宏命令:設置宏命令時,最好直接在 winice.dat 文件中輸入,當在 SoftICE Initialization Micro Definitions 中輸入時,例如輸入: "bpx GetDlgItemTextA DO \"D esp->c\";bpx GetWindowTextA DO \"D esp->8\"" 被保存爲: "bpx GetDlgItemTextA DO \D esp->c\;bpx GetWindowTextA DO \D esp->8\" 可見有時DriverStudio Configuration 程序無法正確保存宏命令中的引號而導致宏命令失敗。但是如果用“記事本”直接在 winice.dat 中輸入宏命令,就可以正確保存並正確裝載。 3、點號(.)有妙用:一般情況下,.命令可以使代碼窗口回複顯示當前執行的代碼,當調試源代碼時,“.n”可以回到第 n 行代碼,例如執行“u .n”命令,代碼窗將顯示第 n 行源代碼。 4、用好下劃線(_):設置斷點時,在參數前加“_”可以代表參數當前的數值,從而得到動態條件斷點,例如: bpx eip if eax==_eax ;表示當寄存器 eax 的值再次等于現在的值時中斷; bpx MessageBoxA if pid==_pid ;表示該斷點僅僅對當前的進程(process)有效。 5、運用命令修改符 .t .p :命令修改符.t、.p 可以加在 bpm、bpx 等命令後面,分別表示斷點僅僅對當前線程、進程有效,例如: bpx.t GetWindowTextA 6、利用 SoftICE 內置函數 bpindex 設置一次性斷點:bpindex 代表引起當前中斷的斷點序號,利用這個函數可以設置動態的或一次性的斷點,例如: bpint 3 do "bc bpindex" 這個斷點可以用來中斷在程序入口處之後再刪除這個斷點,以防某些 int 3 的反調試方法。 7、ctrl+L 速清屏:當新的線程創建時,常常使 SoftICE 窗口出現窗口碎片而覆蓋了 SoftICE 的窗口字符,這時同時按下 ctrl 和 L 鍵即可快速清屏。 8、讓 SoftICE 窗口與全屏顯示自由切換:一般情況下,DriverStudio Configuration SoftICE Video 設置爲Universal Video Driver 時,SoftICE 將顯示在窗口中,設置爲 Full screen VGA mode 時將全屏顯示,兩種顯示改變之前要重啓動計算機。其實設置爲Universal Video Driver 時,也可以實現全屏顯示,方法爲: 啓動命令行方式 cmd.com 並激活爲當前窗口,同時按 Alt 和 Enter 鍵,將啓動到全屏 VGA 模式,此時按 Ctrl + D 即可啓動到 VGA 全屏方式,該方式比設置爲 Full screen VGA mode 的方式更好,可以通過 cmd.com 來設置字體、字符大小等,簡直酷呆了! 9、用 G 命令代替 BPX、BPM 的部分功能,可以對付部分設有斷點清除的反調試程序:用 BPM、BPX 設斷時,反調試程序會清除斷點使得斷點失效,而改爲 G 命令可以避免這個問題,例如: bpx GetWindowTextA 改爲 G GetWindowTextA bpmb 0040AAAA X 改爲 G 0040AAAA SoftICE 的功能太強大了,行文至此,無法繼續,且作抛磚引玉之舉,希望各位大蝦不吝賜教,各位菜鳥也勿忘多多探討
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 
 熱帖排行
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有