【標題:用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 ------------【全文完】------------------------------------