前    言
                           ∼∼∼∼∼∼

    由於保護越來越強悍, 使得合法買軟體的我們, 還要受到各種千奇百怪的折磨,
弟深深覺得受到侮辱。(您呢 ?) 所以小弟和朋友們不遺餘力的尋找各種好的破解工具,
並將之推薦給諸位。軟體公司應當知道, 將盜版的成本轉嫁給合法的使用者,
那是不對的, 唯有尊重 User, 並加強服務態度, 臺灣軟體業才有起飛的一天。

Soft-ICE 功能之強大, 如以下文件所言, "可以比擬硬體偵錯器", 換言之只要
程式沒有進入保護模式, 都逃不過本程式的中斷, 而且一般軟體刻意當掉
debugger 的陷阱都不用費心。

本文件由 Chi-hao Tseng 和朋友一起翻譯, 如果文件中有不當之處, 歡迎
在 90 Net - Copy Board 區寫信給弟 (Chi-hao Tseng)...

另外本文件非常非常歡迎你 copy 給有需要的人, 不過不要讓小弟看到本文
件中任何一部份的內容被修改或被拿來圖利 (小弟和朋友們會很痛心的),
在最後還是要感謝你肯花時間來看小弟的拙作....


第 一 章
--------
[介紹] 1.1 本程式的功能
       1.2 使用手冊
       1.3 系統需求


1.1 本程式的功能
----------------
  Soft-ICE 是一個軟體除錯工具。可是它擁有相當於硬體偵錯器(hardware-level)
的能力, 使它能凌駕於 DOS 一般的除錯程式之上。

  Soft-ICE 使用 386 的虛擬 86 模式(virtual 86 mode) 將 DOS 所有程式擺在
一個虛擬機器 (Virtual Machine) 上, 使得 Soft-ICE 可以完全控制 DOS 的環境。

  Soft-ICE 使用 80386 保護模式的特色,
像是 paging、I/O privilege level 和 break point register,
加'硬體偵錯器'中斷指示著你存在的DOS 除錯程式.

  我們設計 Soft-ICE 時有三個目標:
1. 利用這 80386 實際上的機器潛在能力 去偵錯未來的東東 那個是不可能的 或以
緩慢 僅軟體的除錯程式 是禁止的.
即時的'硬體偵錯器'中斷點,記憶體保護,中斷跳出程式 , 等等.

2. 和現有偵錯器的使用方式相容。我們想要提供一個工具 -- 它的使用方式和現有
偵錯器的使用方式相同, 可是它卻擁有硬體除錯器的能力。如此使用者就可以省去
不必要學習的時間, 而得到有力的工具。

3. 是一個擁有友善使用者介面 (user-friendly) 的程式。
由於 Soft-ICE 的視窗可以自由移動, 和變換大小, 所以即使一些資訊被檔
在視窗底下, 只要經過移動和變換大小, 也可以被使用者看到, 另外動態
的線上輔助功能, 使得你偶而才用一次 Soft-ICE 也不會感到困擾....

Soft-ICE 的特色:

* 可設定某記憶體在讀/寫時、I/O 埠在讀/寫時、到達某塊記憶體範圍, 或是某插斷
  發生時, 立即中斷回到 Soft-ICE。

* 反向追蹤程式。

* 原始程式的偵錯。

* 可以和其它偵錯器同時偵錯程式。

* 完全支援 EMM 4.0 (expand memory manager)。

* 如果是單色螢幕, 則可以自動將 Soft-ICE 放在 640 KB 主記憶體以外的空間。

* 本程式可在任何時刻呼叫出來。

* 即使鍵盤插斷被改, 本程式還是可以呼叫出來。

* 本程式實際是放在另一虛擬機器上, 這麼做是為了怕其它程式刻意的更改
  或摧毀 Soft-ICE 的程式碼。所以即使 DOS 當掉了, Soft-ICE 能仍正常
  的工作。(註1.)

* 如果你的電腦擁有超過 640 KB 的記憶體, 則 Soft-ICE 將不會
  佔用低於 640 KB 的傳統記憶體。

* 親合力極強的動態線上幫助。

* 本程式像是一個真正獨立於電腦外的硬體偵錯器。這代表你可以偵錯任何
  一個設備驅動程式(.sys), 這是傳統的除錯程式所不及的。

* 甚至可以對 DOS 不相容或可以自我開機的程式除錯。

* 安裝相當簡單。 你根本不用調任何一個 DIP 開關, 而且本程式也不會占用
  任何一個 I/O 埠, 更不會跟任何一塊記憶體相衝。

附註:
Soft-ICE 是使用真實的位址(segment:offset) 來定址,
而不是使用 286 和 386 的定址方式來定址。

1.2 使用手冊
------------

[ Soft-ICE 的手冊有四個主要部份 ]

 (第一節) 學習如何使用 Soft-ICE
 (第二節) 各種命令的說明
 (第三節) 所支援的特性
 (第四節) 進階的主題

第一節討論使用本程式偵錯時最常遇到的問題。在本節中我們也安插了一個小
實驗。

"學習Soft-ICE" ,和一個小的實驗,
Soft-ICE據有親和力的線上輔助能被使用於參考命令敘述與語法.
這”學習 Soft-ICE”部分包含安裝指示,一個使用者介面的敘述
與教導.這教導被設計把你自身執行的更快速.

”命令”部分敘述所有這 Soft-ICE 命令.
這命令敘述被方程式群團結成組織以一個alphabetic索引備考.

”支援賦與著特點”部分蓋先進的裝載選擇,
象徵的與來源同水準除錯,與 EMM 4.0可能性.

”先進的主題”部分主題,諸如:使用 Soft-ICE 以 DOS loadable 驅動器與使用
Soft-ICE 在非Dos作業系統.

遍及在這手冊,在這些教導和這些命令部分,
當你讀這些指定的資料.像是已給你那些你需要的 Soft-ICE 資料.

4

”ENTER”一個鍵,如下這鍵,你將按下這鍵標示.
當這說明告訴你去”ENTER”一個片語,
諸如:WIN,你將鍵入這指定的字元,然後按ENTER鍵.

 1.3系統需求
Soft-ICE 工作在 IBM系列Model 70與80 Compaq 80386與 80386SX 電腦,
AT級相容品 與 80386 微處理器 .
假如他們是AT相容品 Soft-ICE 將只工作在 80386 XT 微處理器 .
Soft-ICE 工作最好在延伸記憶體,但以傳統的記憶系統工作也好.

Soft-ICE ,為它的影像輸出和 keystroke輸入不使用 DOS或 ROMBIOS.
所以影像以下列的模式必定會相容的:
MDA,
Hercules,
CGA,
EGA,
or VGA.
Soft-ICE 同時也有支援 雙螢幕結構,
當除錯videointensive程式可能是有幫助的.

註1.
PS.(這就是 VM86 mode 的優先權多工, 利害之處 )

第 二 章
----------
 [介紹]
   2.1 磁片內容
   2.2 載入 Soft-ICE
   2.2.1 無 Extended Memory 時的載入方法
   2.2.2 有 Extended Memory 時的載入方法
   2.2.3 如何調整 Soft-ICE 使能依您的設定啟動
   2.3 脫離 Soft-ICE
   2.4 重新載入 Soft-ICE

2.1 磁片內容

Soft-ICE 原本裝在一片5又1/4英吋或一片3又1/2英吋的磁片中。

當您執行S-ICE時,S-ICE註冊所有人的大名將會被顯示於螢幕上,以制止著作權被
侵害。 S-ICE磁片本身為了您方便起見,並未實際做防拷措施。同樣,為了我們的
便利,我們感激您對我們的許可協約有著高度的尊敬。為免原版磁片損毀而製作一
份備份程式乃非常重要的一件事。

Soft-Ice磁片的目錄中應當含有下列檔案:
   S-ICE.EXE
   S-ICE.DAT
   LDR.EXE
   MSYM.EXE
   EMMSETUP.EXE
   UPTIME.EXE
   README.SI
   SAMPLE.EXE
   SAMPLE.ASM
   SAMPLE.SYM

S-ICE.EXE    為 Soft-ICE 主程式。
S-ICE.DAT    為 Soft-ICE 啟始參數設定檔。
LDR.EXE      為 Soft-ICE 主程式及符號檔(symbol file)的載入程式。
MSYM.EXE     為 Soft-ICE 符號檔的產生程式。
EMMSETUP.EXE 為供使用者自定擴展記憶體(expanded memory)使用方式的程式。
UPTIME.EXE   為修正時間調[拯]的程式。
README.SI    為一文字檔,其中包含有Soft-ICE使用手冊未提及的事項。
SAMPLE.EXE   為使用者指南中所使用的一個示範(DEMO)程式。
SAMPLE.ASM   為 SAMPLE.EXE 的組合語言原始程式。
SAMPLE.SYM   為 SAMPLE.EXE 的符號檔。

2.2 載入Soft-ICE

在執行Soft-Ice之前,先將磁片中所有的檔案拷貝至硬碟機中。
這些檔案應當放置於您的檔案路徑所能存取到的目錄中。 S-ICE.EXE 能以DEVICE
DRIVER的形式載入抑或以一般程式於DOS 命令行下執行。
如果想要使用Soft-Ice的特點的話,則SICE.EXE必須在CONFIG.SYS中以DEVICE DRIVER
的方式載入。

註解 :
如果您沒有extended memory的話,則Soft-ICE 無法以device driver的形式載入。
也就是說您必須在DOS prompt下載入它。

2.2.1 無 Extended Memory 的載入方法:

當您沒有extended memory時,Soft-ice將盡量將自己本身載入到記憶體最高位置。
而被Soft-ice所使用的記憶體將會被排除在外(map out)。因此DOS記憶體的可視範圍
將比載入前為少,建議您在其他任何常駐程式前載入 S-ICE。 如果您沒有 extended
memory, 只要鍵入:

    S-ICE

2.2.2 使用 Extended Memory 來載入的方法:

以Extended Memory來載入S-ICE可以下列兩種方法達成:
  1. 在 CONFIG,SYS, 中將S-ICE.EXE以driver的形式載入:
     如果您將使用下列的功能,則必須是此種方法。
      * 與經由ROM BIOS CALLS來存取記憶體的程式,共享記憶體。
         (如 VDISK,SYS, RAMDRIVE.SYS,HIMEM.SYS,cache programs, 等等).
      * 使用Soft-ICE EMM 4,0 相容能力。
      * 使用Soft-ICE 作為符號或原始程式階段的除錯。
      * 使用back trace ranges.
      * 與其它Nu-Mega 的產品如MagicCV,共同使用S-ICE。

      當以DRIVER形式載入時,Soft-Ice將配置一部份的Evtended memory以作為
      自己本身及其附屬程式使用,因此不會有記憶體衝突發生。S-ICE.EXE必須
      在其它會配置Extended memory的程式之前載入。(例如:VDISK.SYS,
      RAMDRIVE.SYS)。通常如果Soft-Ice在CONFIG.SYS中第一個載入時,能得到
      最好的效果。

      對於那些新進使用Soft-Ice的使用者而言,在CONFIG.SYS中以下列敘述來將
      Soft-Ice當作第一個載入的程式是很明智的:

      device = drive: \path\S-ICE.EXE /SYM 50

      Drive 及 path 須指派為S-ICE.EXE 所在的目錄.該項敘述會在系統重置後
      將Soft-Ice載入,適合作為入門指引。無論如何,Soft-ICE將不會載入更為
      強大的功能(如EMM 4.0)。在您使用有一些心得後,您可以重新調整Soft-Ice
      來使用諸如此類的功能。如果您已熟悉Soft-Ice或想要立即調整設定以使用
      其功能的話,請參閱第六章(Soft-ICE 初始設定選項)。