【標題:用Import REConstructor v1.2 beta2 修復輸入表】 (7千字)

看雪資料發表於2001-04-18

【標題:用Import REConstructor v1.2 beta2修復輸入表
        --- 之HiClock Pro v2.2 及S-Spline 2.04】

--------------------------------------------------------------------------------
【下載處】
1)Import REConstructor v1.2 beta2
  http://www.digitalrice.com/kaparo/files/utilities/imprec.zip  (取自protoools)

以下兩個程式皆用Asprotect1.2以後的版本加殼
2)HiClock Pro version 2.2 build 126 - released on April 9, 2001
  http://www.downme.com/download/6815hiclockpro.zip
  http://www.kgsoft.com/  (官方網址)

3)S-Spline 2.04
  http://202.108.252.24/stcsr/rj/txtx/S-Spline%202.04.zip    (康樂園)
  http://www.shortcut.nl/S-Spline/Shortcut_S-SplineDemo.zip  (官方下載)

--------------------------------------------------------------------------------
【前言】
      本文只簡述輸入表的修復,沒涉及軟體的破解。
      主角是ImpREC1.2 beta2, 目標軟體是 HiClockPro v2.2 及 S-Spline 2.04 。
      其中, HiClockPro 2.2 可一次性修復完成,S-Spline 2.04 還需要手工修復/填補。
      本文在win98se下完成,當然也適合在windows2k下做參考

【工具】 1) ImpREC1.2beta2(必須是beta2 或其最新版本)
        2) SoftIce4.05build334 , icedump6.022      (《=必備!)
        3) PE-Editor1.7
        4) BW2000 v0.2 (for win9x only)

      工具簡述:ImpREC的說明檔案指出,使用ImpREC時系統中最好已載入icedump。
            這樣建立的輸入表比較少跨平臺的問題。而執行icedump前,當然得先加
            載Softice。
                Softice + icedump: 使用Icedump 的/tracex 命令可以找到可能
            是OEiP 的地址。
                PE-Editor 的dumpfixer 可以使dump 出來的檔案的 RS=VS, RO=VO
                BW2000 v0.2 是為了查詢被加殼的程式的OEiP (ImpREC中需要此值)
            若已經知道軟體的OEiP,可省略。
--------------------------------------------------------------------------------
【準備工作】
      載入Softice 及 Icedump 。先追蹤目標程式(使用/tracex命令),得到OEiP,
      並/dump出一個脫殼版本。使用 PE-Editor 的dumpfixer修正脫殼後的檔案.

==》注意1:HiClockPro 2.2 的必須採取特別步驟脫殼,否則程式無法執行。
          具體請參考以下兩篇:
        1) http://001.com.cn/forum/toye/14781.html
          標 題:簡述ICEDUMP中/tracex命令在HiClock脫殼中的應用 (1千字)
          發信人:henryw
       
        2) http://www.001.com.cn/forum/toye/14335.html
          標 題:不是不願寫,我真的是隻知其然而不知其所以然。
                我那樣改的原因如內。 (690字)
          發信人:hying

==》注意2: S-Spline 必須是未註冊的,否則脫殼後的程式將無法正常執行。
            S-Spline的破解可以參考下面這篇:
            http://001.com.cn/forum/toye/14799.html 
            標 題:v2.04的 (9千字)
            發信人:blowfish

    附:這裡有一篇ImpRECT 1.2 beta1 (不是beta2!!) 的使用方法。
        http://001.com.cn/forum/toye/14358.html  (本文參考這篇)
        標 題:這樣試試...... (1011字)
        發信人:ljtt


【修復HiClockPro 2.2】
---------------------
  0.執行HiClockPro 2.2 及 ImpRECT
  1.在ImpRECT下拉選單框中選擇HiClock.exe程式;
  2.在左下角的OEP添入BF260  (即這個程式的OEP)
  3.按IAT AutoSearch,讓其自動檢測IAT位置;
    出現對話方塊Found Something!=》
    “Found address which may be in the Original IAT.Try 'Get Import'”
    這表示我們輸入的OEP發揮作用了。
  4.按Get Import,讓其分析IAT結構得到基本資訊;

  5.按Show Invalids 按鈕。
      在Imported Function Found欄中點選滑鼠右鍵,選擇"Trace Level1 (Disasm)"
    再按Show Invalids 按鈕。如果成功,可以看到所有的dll都為valid:YES字樣;
  6. (很明顯第5步時,這個程式的輸入表已經完全修復好了)

  7.現在我們要修復已脫殼的程式HiClock.exe。選擇Add new section (預設是選上的) 來
    為Dump出來的檔案加一個Section(雖然檔案比較大,但避免了許多不必要的麻煩)
  8.按Fix Dump,並選擇你Dump出來的檔案;
  9.ImpRECT 會在該檔案所在目錄生成一個新的檔案:HiClock_.exe ,這就是修復後的檔案。

TIPS1: 在Imported Function Found欄中點選滑鼠右鍵,可以選擇"Expand all nodes" 及
        "Collapse all nodes" 來開啟/關閉所有節點。
TIPS2: 若因操作上的錯誤需要重新按GetImport鈕, 最好先按程式右邊的ClearImports 及
        Clear Logs 按鈕。否則,Imported Functions Found 欄可能會出現奇怪的現象。

修復前
- ?Fthunk:000C317C NbFunc:2E (decimal:46) valid:NO
    -rva:00000000 ptr:00505A4D
    -rva:00000004 ptr:00000002
    -rva:00000008 ptr:000F0004
    -.....

修復後
- KERNEL32.dll FThunk:000C317C NbFunc:2E (decimal:46) valid:YES  <===[看這個YES]
    -rva:000C317C mod:KERNEL32.dll ord:015D name:GetCurrentThreadId
    -rva:000C3180 mod:KERNEL32.dll ord:00D6 name:DeleteCriticalSection
    -rva:000c3184 mod:KERNEL32.dll ord:0228 name:LeaveCriticalSection
    -.....


【修復S-Spline 2.04】
---------------------
0.執行S-Spline 及 ImpRECT
1.在ImpRECT下拉選單框中選擇S-Spline.exe程式;
2.在左下角的OEP添入7E910 
3.按IAT AutoSearch,讓其自動檢測IAT位置;
    出現對話方塊Found Something!=》
    “Found address which may be in the Original IAT.Try 'Get Import'”
    這表示我們輸入的OEP發揮作用了。
4.按Get Import,讓其分析IAT結構得到基本資訊;
4.1.發現只有一個dll的 valid 為NO

5.按Show Invalids 按鈕。
    在Imported Function Found欄中點選滑鼠右鍵,選擇"Trace Level1 (Disasm)"
  再按Show Invalids 按鈕。如果成功,可以看到所有的dll都為valid:YES字樣;
5.1.看到長長的一堆函式名,我們知道至少有一個dll未修復。故使用
  滑鼠右鍵”Collapse all nodes",發現只剩下一個dll未完成。
  從Log欄中可以看到有一個地址修復失敗。

6.按Show Invalids 按鈕
  在Imported Function Found欄中點選滑鼠右鍵選擇"Trace Level2 (Hook)"。
  再按Show Invalids 按鈕。如果成功,可以看到所有的dll都為valid:YES字樣;
  若還不成功,目前只能手工修復了(Trace Level3 這個功能還沒開發完成)。
6.1.從Log欄可以看到”Tracer failed in 008927E4 “修復失敗。
    我們找到那個修復失敗的是 rva:0009C2AC
(到此,這個程式的輸入表還沒修復完成,我們必須手工修復這兩個地址)

6.2.在Imported Function Found欄,找 rva:0009C2AC ,並用滑鼠左鍵雙擊它。
      在Module中選 KERNEL32.dll
      在Function中選 ord:032C name:WinExec
      按OK
    (至於這個函式名如何獲得?看看下面)
6.3按Show Invalids 按鈕, 都為valid:YES字樣,輸入表到此完成。

7.現在我們要修復已脫殼的程式S-Spline.exe。選擇Add new section (預設是選上的) 來
  為Dump出來的檔案加一個Section(雖然檔案比較大,但避免了許多不必要的麻煩)
8.按Fix Dump,並選擇你Dump出來的檔案;
9.ImpRECT 會在該檔案所在目錄生成一個新的檔案:S-Spline_.exe ,這就是修復後的檔案。


  《找rva:0009C2AC 的函式名》
  ---------------------------
  以下方法只是一個參考,它不是萬能的。另一方面,以後的Asprotect 的小小改變足
  以使它失效,諸位姑且看之。。。
 
  此時Softice已經執行.
  1.進入S-Spline 領空(不知道這樣說對不對 8-) ) :
      我們只需CTRL+D ,用bpx getwindowtexta 設攔, F5 。
      在S-Spline 的Serial Number 欄中添入任何資料。
      程式就會被攔。此時已進入S-Spline 領空^_^
 
  2.尋找函式名:
      此時下指令 dd 49c2ac  (= 9c2ac + ImageBase) , 看見該資料區顯示 8972B4 。
      再 u 8972B4 , 看見程式碼區顯示  PUSH EDX 
                                    JMP C0188DC2
      再 u C00188DC2 , 看見程式碼區顯示  MOV EDX,C0197490  (<==注意這裡!!!)
                                        JMP C0188DD
      再 dd C0197490 , 看見該資料區顯示 C0197327 。
      最後 db C0197327 就可以看到我們的函式名了 ^_^ (注:這裡是用db 不是dd)
      bc * 再 F5 回到程式。     

----作者:BestFont  ------------【全文完】------------------------------------

相關文章