|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2005-03-17, 09:07 AM | #1 |
中文化 作者
|
好用的脫殼檔案資源修正工具-FixRes.
程式作者: dREAMtHEATER 先生/小姐,以下是他/她在"看雪學院"發表的完整說明文章.在此表示感謝之意.
===================================================== 重要提示:本作品完全由本人獨立創作,未參考任何第三方源碼。 我增加了幾個接口函數,使用之前請認真閱讀我的說明,防止誤操作! 請下載 版本更新說明: 我重寫了大部分代碼,並進行了大量測試,被測試的加殼程序:UPX v0.72, v1.25, FSG v2.0, Aspack v2.12,其中UPX 0.72 對資源的處理比較變態,不過引擎針對此情況做了正確的分析, 目前完全可以正確地修復、重建 PE 資源,修復後 PE 文件資源可以被eXeScope、ResHacker、 PE Explorer 查看、編輯,非常好用了。 為了證明我的程序我更具有優越性,我測試了幾個 fly 給我的俄國老寫的類似程序,包括 pResFix v.0.2 by hapatsa, ResFixer v 1.0 beta 1 by seeQ, Resource Rebuilder v1.0 by Dr.Golova 他們只是簡單地將重建後的 resource section 保存成數據文件,如果你想生成真正能運行的 修復資源後的PE文件可能你自己還要做很多輔助工作,對PE格式、資源結構不熟悉的朋友我估 計很困難恢復到可用狀態,而我的程序把所有這一切均簡單化、自動化,生成真正的資源修復 後的可執行PE文件。 簡介: 很多被加殼的 PE 文件在脫殼以後,往往該 PE 文件的資源部分無法用某些資源查看器進行 查看、修改。這其中的主要原因是由於很多加殼程序將部分資源(如 Icon、Version Information) 從資源節 (resource section) 移到了殼增加的節裡,這導致很多資源查看器不能 正確識別分佈在兩個節裡的資源(順便說一下,PE Explorer 基本能識別大部分這種情況的資 源),DT_FixRes 是一個 PE 文件資源修復、重建引擎,它可以將分佈在多個節裡的資源重新移 到一個資源節裡,保證大部分資源查看器能夠對脫殼後的 PE 文件資源進行查看、修改。使用者 可以通過編程方式在自己的程序中使用該引擎。該引擎特別適合進行軟件漢化工作的朋友。 聲明: 1.您可以免費使用該引擎,如果您發佈了使用該引擎的程序,請在相關說明中註明該引擎的版 權信息,以表示支持作者的辛勤勞動; 2.該引擎不能保證所有的 PE 文件經過修復能正常運行以及資源能夠被查看、編輯,作者不承 擔任何相關責任。 使用說明: 本引擎以動態鏈接庫(dll)形式實現,該 dll 輸出三個函數,其中輸出函數 FixResFromFile 你可以用任何適用 Win32 平台的編程語言去調用,下面僅給出 C/Delphi 語言 的函數原型: C 形式函數原型: BOOL __stdcall FixResFromFile(const char* AFileName, char* ErrBuff); 參數說明: AFileName --- 指向你需要進行資源修正的 PE 文件路徑指針; ErrBuff --- 指向一塊至少具有 80 個字節空間的 Buffer 指針,在執行該函數返回錯誤時,接 收錯誤消息。 特別提示:該函數適用任何 Win32 平台的編程語言去調用。 Delphi 形式函數原型(共三個函數): <1> function FixResFromFile(const AFileName: PChar; ErrMsg: PChar): Boolean; stdcall; 參數說明: 同 C 形式函數原型參數說明。 <2> function FixResFromFileEx(const AFileName: string; var ErrMsg: string): Boolean; 參數說明: 其中 AFileName, ErrMsg 為 string 類型,使用之前無需再分配80 個字節空間的 Buffer,操作 更方便。其他說明同 <1> 。 <3> function FixResFromStream(var AStream: TMemoryStream; var ErrMsg: string): Boolean; 參數說明: AStream 為 PE 映像的內存流,其他說明同 <1> 。 特別提示:引擎只在正確 PE 格式的基礎上修復、重建 PE 資源,因此應用以上函數之前請保證被 操作文件或者內存流均具有正確的 PE 格式,否則可能造成不可預期的錯誤。 調用範例(Delphi 語言): procedure FixResDemo; type TFixPERes = function(const AFileName: PChar; ErrBuff: PChar): Boolean; stdcall; var ErrBuff: array[1..80] of Char; Handle: THandle; FixPERes: TFixPERes; begin Handle := LoadLibrary('DT_FixRes.dll'); if Handle <> 0 then begin @FixPERes := GetProcAddress(Handle, 'FixResFromFile'); if @FixPERes <> nil then if not FixPERes(PChar('ur PE file'), @ErrBuff) then ShowMessage(ErrBuff); FreeLibrary(Handle); end; end; 其他: 我寫了一個測試該引擎的 Demo,請與該引擎 dll 放在同一文件目錄下測試,發現 bug 請發信通 知我。 dREAMtHEATER 2005-03-16 E-mail:NoteXPad@163.com http://dREAMtHEATER.yeah.net ==================================================== 程式圖片: 需要的朋友請按我下載 |
送花文章: 111,
|