第二節 補丁制作
1、文件補丁制作
今天我們接觸補丁制作工具是CodeFusion,界面制作也不錯,它有以下功能:
1、可以自動比較補丁前后的差別
2、可以對字節逐個補丁,也可以使用普通和模板兩種查找、替換;
3、補丁前后的文件尺寸可以不同;
4、可以對單個文件補丁,也可以處理多個不同盤、不同目錄、甚至名字并不匹配的多個文件;
5、界面文字和鏈接等完全定制;
6、可以使用內置和外部的壓縮器;也可以不壓縮自行修改窗體;
為了使初學者能更快掌握這一工具使用,我就把一補丁最常用的制作過作寫下來。
首先建立一個臨時目錄C:/TEMP(只是為了下面講述的方便罷了).并在其下建立兩個子目錄分別為C:/TEMP/1/以及 C:/TEMP/2/. 以網絡吸血鬼NET VAMPIRE 3.2為例: 將沒有CRACK的主程序VAMPIRE.EXE拷到C:/TEMP/1/目錄下. 將已經CRACK的主程序VAMPIRE.EXE拷到C:/TEMP/2/目錄下.
(圖一)是用CodeFusion制成的補丁程序運行的界面。
(圖一)
界面還是不錯的,只要你用用CodeFusion,你就發現它很容易上手。
第一步、運行CodeFusion,界面如圖二:
(圖二)
圖一和圖二中的數字1、2、3、4、5是彼此對應的,要得到(圖一)結果只需在(圖二)中鍵入你自己的說明即可。你自己定制好界面可以存盤,存盤名是*.cfp,以后你只要打開該文件,就可出現所要的界面。很簡單,自己摸索一下就能掌握。
第二步、定制好界面后,可以按預覽按鈕(就是上面的眼睛圖標)看看界面自己是否滿意,滿意后按下一步。
(圖三)
在圖三中,按(1)處的綠色的十字,以添加原文件(在這里是吸血鬼的原主文件),按1后出現左邊的一窗口,按2選擇吸血鬼的原主文,選好按Ok即可。
第三步、這一步按圖四的1處的綠色十字,出現如下結果:
(圖四)
按上圖中的2處是文件比較。第3處是Byte-path offset在原文件中指定的地址處打字節補丁。第4處是Find &Replace,在原文件查找替換字節。第五處是Truncate offset,從指定地址處切斷原文件。345的用處我在這里就不寫了,大家可自己試試。
第四步、用鼠標按圖四中的2處(File Compare)出現圖五,選擇己被crack的文件,進行比較,在這里是C:/TEMP/2/目錄下, 已經CRACK的主程序VAMPIRE.EXE。
(圖五)
在1 處選擇C:/TEMP/2/目錄下, 已經CRACK的主程序VAMPIRE.EXE。下一步按第2處的compare進行兩文件的比較,比較結束后按Ok再按下一步。
第五步,這是最后一步,出現圖六。
(圖六)
在這界面上的各項選項就以默認值為主,它們都是些壓縮選項,壓縮補丁以保護你的版權。最后一步按1處(Make win32 Executable)選擇路徑、文件名,生成你的補丁。好了你可以把這補丁散發給大家,真可謂,辛苦你一人,方便千萬人啊!
該軟件的其它功能,大家自己再摸索一下,是不是很直觀好用。
2、內存補丁制作
R!SC'sPatcher 使用
簡介
RPP.EXE 是內存動態補丁制作軟件。它通過腳本命令創建 win32 文件,以此文件裝載程序,裝載過程中等待軟件解壓或解除其自身保護后,然后按腳本要求修補內存中的指令,以使軟件能夠按我們要求運行。
如 ACDSEE3.0 是用 ASPACK 壓縮軟件,你 crack 時發現在內存地址 433FEA 處把 6A00 改成 EB17 就可成功,但你不可能直接修改壓縮過的 ACDSEE.EXE 文件;這里就可用 RPP.EXE 按我們要求生成一 LOAD.EXE 文件,首先運行 LOAD.EXE ,它自動裝載 ACDSEE.EXE 等其自解壓完成后,然后修改內存 433FEA 地址為 EB17 這樣 ACDSEE.EXE 就可按我們要求運行了,不過我不贊成用此法對付 ACDSEE.EXE ,因為 ACDSEE.EXE 運行有兩種界面,其中 VIEW 界面用此法不太靈。
RPP.EXE 還可很方便對付 NAG (一些提示、警告窗口的軟件),如用 NEOLITE 2.0 Y 壓縮過的軟件運行之前彈出來的那種窗口,當然也有專門除掉 NAG 的工具。
用法
在資源管理器中雙擊 rpp.exe 文件,它彈出一菜單,你選擇事先編好的腳本文件,然后按 OK 。
或在 WINDOWS 下的 DOS 窗口下用命令方式“ rpp.exe <script.rpp> ”,其中 script.rpp 為腳本命令文件。
如你的輸出文件己存在,它將覆蓋。在命令方式下,腳本文件可是任何文件名和擴展名;但在對話窗口操作方式下,文件名必須為 *.rpp
腳 本 命 令
-------------------
';' 注釋符號 跟著的只是些說明 不會執行的 直到下一行 .
'T=' 表示對內存的檢測次數, T=1000: 意味著對內存檢測 1000 次,在放棄之前,告訴你的應用程序是
不正確的版本。
注意:在腳本文件里,默認值 T=8000 。
'F=' 需要補丁的文件名
'O=' 生成的補丁文件名 如你沒指定文件名,默認為 LOAD.EXE
'P=' 如何在內存補丁 格式:內存地址 / 原碼 / 補碼
具體看看腳本的例子
'R:' 把前面需要補的全部補好后 再繼續 可以看看 azpr243.rpp 這個例子
':' 每一行都要以冒號結尾 相當于回車
'$' 腳本結束標志
所有數字采用 16 進制
內存地址和原碼都符合才會進行補丁 字節間請用逗號分開。腳本文件不能大于 40K 被補的字節有限為 1f0h 字節,被處理的原文件不小于 30h 字節。
腳本例子
;script.rpp
T=1000: ; 對內存嘗試 1000 次補丁 不行則放棄 如果不設默認為 8000
F=test.exe: ; 要補丁的程序
P=40101D/7460/7400: ; 將命令 jz xx 改為 jz next instruction
P=4024A6/4652454520/5221534300: ; 將字符 'FREE ' 替換成 'R!SC'
$ ; 結束
具體的腳本范例大家可參考其自帶的 Scripts.zip 。
一些問題
下面是一有趣的試驗,寫一腳本文件,輸入輸出名一樣,產生一執行文件,該文件將不斷裝載其自身
最后導致 windows 崩潰,你只好重新啟動了。
'P=401000/68/B8:'
'F=fun.exe:'
'O=fun.exe:' 然后運行 fun.exe 不一會你只好重新啟動微機了 :)
(編輯:天命孤獨)
新聞熱點
疑難解答
圖片精選