1、工具介紹
通過上一節(jié),我想大家己認(rèn)識(shí)了什么是殼的概念了,也是說運(yùn)行加殼程序時(shí), 用戶執(zhí)行的實(shí)際上是這個(gè)外殼的程序,而這個(gè)外殼程序負(fù)責(zé)把用戶原來的程序在內(nèi)存中解壓縮,并把控制權(quán)交還給解開后的真正的程序,由于一切工作都是在內(nèi)存中運(yùn)行,用戶根本不知道也不需要知道其運(yùn)行過程,只要執(zhí)行起來沒有變化就好。當(dāng)時(shí)有些人擔(dān)心這些解壓縮的工作會(huì)給程序帶來額外的運(yùn)行時(shí)間,但實(shí)際上所有的可執(zhí)行文件都要讀到內(nèi)存中去執(zhí)行,文件小了,從計(jì)算機(jī)硬盤上讀到內(nèi)存的時(shí)間自然也少了,兩下相抵,實(shí)際上用戶并不會(huì)感覺程序慢了多少。脫殼的就是把在內(nèi)存中真正還原的程序抓取下來,修正后變成可執(zhí)行的文件。
在Windows 95/NT/2000 上的文件格式是Portable Executable File Format(即PE格式),該格式應(yīng)用于所有基于Win32的系統(tǒng)。由于現(xiàn)在windows的普及,下面談到的殼都是基于這種文件格式。
壓縮工具介紹(PACKERS)
我們這里談的壓縮工具不是Winzip,WINRAR等工具(它們是可壓縮任何文件),而是談專門壓縮windows下的 PE 格式EXE或DLL文件的工具,壓縮的EXE文件是自解壓可執(zhí)行文件。
常用壓縮工具(Windows Packers )列表: 名稱 作者 主頁(yè) 介紹
ASPack Alexey Solodovnikovhttp://www.aspack.com/ 是俄國(guó)作者Alexey Solodovnikov寫的一個(gè)非常強(qiáng)大的Win32壓縮工具,其壓縮率、速度和兼容性很不錯(cuò),是目前很流行的一種壓縮工具。
UPX Markus Oberhumer & Laszlo Molnar Homepage 非常全能的 EXE 壓縮軟件并可用UPX -D命令脫殼。
Petite Ian Luck Homepage 能壓縮PE文件的code data等資源。
PE-PACK ANAKiN Homepage 一個(gè)自身體積小巧的壓縮工具
PKLITE32 PKWARE Inc.http://www.pkware.com/ 32-位壓縮工具(DLL/EXE).
WWPack32 Piotr Warezak and Rafal Wierzbicki Homepage 32-位壓縮工具(DLL/EXE).
NeoLite Hompage 32-位壓縮工具(DLL/EXE).
Shrinker Blink Inc Hompage 32-位壓縮工具(DLL/EXE).
一般某種壓縮工具的殼,都會(huì)有相應(yīng)的脫殼工具,因此只要找到較新版本的脫殼工具, 一般的殼都可輕易脫去。
常用脫殼工具(Windows Unpackers)列表: 名稱 作者 主頁(yè) 介紹
ASPack unpacker bane Homepage 脫ASPack的壓縮PE文件。
UnPEPack M.o.D. 脫P(yáng)EPack的殼
ProcDump32 十分優(yōu)秀的“萬能”脫殼工具,可惜不升級(jí)了,因此只能自動(dòng)脫些老版本壓縮工具的殼,但可通過腳本命令使其升級(jí)。也是一款優(yōu)秀的PE修改工具。
偵測(cè)文件類型工具
名稱 介紹
FileInfo 能檢測(cè)多種文件格式,脫殼前用來判斷是否加殼或何種殼,推薦使用!
GetTyp 功能同上
TYP 功能同上
站點(diǎn)1:playtools工具站點(diǎn)(請(qǐng)通過代理訪問)
站點(diǎn)2:protools工具站點(diǎn) (請(qǐng)通過代理訪問)
站點(diǎn)3:阿倫主頁(yè)
2、ProcDump應(yīng)用文章一
注:本文作者PererS是臺(tái)灣的,因此要注意在一些名詞上稱呼與我們不同。
由于此文寫作時(shí)間較早,在此推薦兩個(gè)新版工具:
偵測(cè)工具:推薦FileInfo。
脫殼工具:ProcDump32 v1.6.2 FINAL終結(jié)版本 。(作者不升級(jí)了,對(duì)目前新版壓縮工具的殼無效,為了你對(duì) Procdump有個(gè)認(rèn)識(shí),在此提供一較老版本ASPack壓縮的記事本程序供練習(xí):下載)
標(biāo)題:軟體名稱 中文哇!檔案閱覽器 2000 (Version 4.1)
保護(hù)方法 殼
需要工具 TYP( 偵測(cè)工具 ) & ProcDump 1.50( 剝殼機(jī) )
文章作者 Peter S. (彼得的家)
偵測(cè)與剝 CWView 2000 (Version 4.1) 的殼
一、前言
何謂殼 ? 相信這是很多人的疑問。
其實(shí)殼,顧名思義,就像雞蛋的殼一樣,主要是保護(hù)雞的「卵」。從外觀上看來,雞蛋是白色的,但是把殼剝掉以后呢 ? 是黃色的卵 + 透明的蛋白 ( 未熟蛋 ) 。這應(yīng)用到我們的破解與保護(hù)上呢,也是同樣的意思,假若我今天要修改一個(gè)執(zhí)行檔 ( 就像我要把黃色的卵,涂成綠色 ) ,但是因?yàn)橛?a target="_blank" href="http://www.49028c.com" class="UBBWordLink">殼,所以根本找不到你要修改的地方 ( 就像光從雞蛋的外觀上看來,根本找不到有黃色的地方一樣 ) ,一定要把殼「剝掉」,才能達(dá)成你的目的。我這樣說,應(yīng)該比較容易了解什么是殼了吧 ?
當(dāng)然,正確的說,「殼」與「加密」是一體的,這類似你有一個(gè)純文字檔,如果你用 zip 壓縮它以后,能夠再更改它嗎 ? 不可能,因?yàn)橘Y料已經(jīng)被重新排列、且壓縮運(yùn)算過,成為一堆亂碼,所以根本不能直接改。
這個(gè)教學(xué)文件所需要的軟體如下 :
1. TYP 這是一個(gè)能偵測(cè)你的軟體是被哪一種「殼」給加密了
( 就好像偵測(cè)你的文件檔是被 zip 、 rar 、 arj 哪一個(gè)給壓縮了一樣,如果連被哪種軟體加了殼都不曉得,那要?jiǎng)?a target="_blank" href="http://www.49028c.com" class="UBBWordLink">殼就難很多 ) 。
2. Procdump 1.5 這是剝殼機(jī)器,可剝?cè)S多已知殼、未知的 for win32 的殼。
二 . 用 TYP 測(cè)試 CWView2000 是被哪種殼給加密了 :
廢話不多說,直接來 :
1. 首先,你要把你下載來的 TYP 先解壓縮到某個(gè)目錄 ( 我假設(shè) c:/try)
2. 再來,把 CWView2000 的主程式 cwview32.exe ,由 c:/cwv2000 下拷貝到上面講的目錄 (c:/try) ,接下來,從 win95 開一個(gè) dos 視窗,并且切換到 c:/try 目錄下,然后鍵入 typ3 cwview32.exe
3. 過幾秒以后,直接跳到最后一行,有沒有看到 ASPACK / Solodovnikov Alexy [1.07b] 這行 ?
哦 ~~~ 原來 CWView2000 是用 ASPACK 1.07b 來加密的啊。那要脫殼不就簡(jiǎn)單了,去找一個(gè)專門脫 ASPACK 1.07 的軟體不就得了 ??
沒錯(cuò),不過我在來要教的,是使用目前全世界最強(qiáng)的撥殼機(jī) Procdump 來剝殼。
三 . 用 Procdump 1.50 來剝 ASPACK 1.07b 的殼 :
1. 首先,當(dāng)然也是把 Procdump 解壓縮到剛剛的目錄 (C:/TRY)
2. 執(zhí)行 Procdump ,你會(huì)看到如下的視窗 :
3. 因?yàn)槲覀円獎(jiǎng)?a target="_blank" href="http://www.49028c.com" class="UBBWordLink">殼,所以按下 Unpack( 其他的按鈕是干什么的,我也不清楚,大概是跟 WIN 的 PE 執(zhí)行檔有關(guān)的吧 ):
4. 由剛剛 TYP 偵測(cè)得知, CWView2000 是用 Aspack 1.07b 加的殼,所以理所當(dāng)然的我們要選擇 [Aspack<108] ,選好后,按下 OK( 要選對(duì)喔,選錯(cuò)會(huì)剝不出來 ):
5. 此時(shí), ProcDump 會(huì)要求你開啟你要?jiǎng)?a target="_blank" href="http://www.49028c.com" class="UBBWordLink">殼的執(zhí)行檔,當(dāng)然,我們要把路徑指到 c:/try/cwview32.exe
6. 緊接著馬上會(huì)出現(xiàn)如下的視窗,此時(shí),千萬不要按下 [ 確定 ] 。稍微等一下,有耐心一點(diǎn),你馬 上就會(huì)看到 CWView2000 被呼叫執(zhí)行了,此時(shí),將視窗切換至 CWView ,隨便使用一二個(gè) 功能,然后在不要關(guān)掉 CWView2000 之下,按下 [ 確定 ] 鈕。 ( 這個(gè)按鈕是當(dāng)程式 [ 完全 ] 被載入以后,才要按的 )
上面這個(gè)步驟很重要,如果心急亂按或亂關(guān),你就得重來了。
7. 按下 [ 確定 ] 后沒多久,會(huì)出現(xiàn)下面的視窗,并且此時(shí) cwview 會(huì)自動(dòng)被關(guān)掉,然后開始剝殼 運(yùn)算,當(dāng)出現(xiàn) Step by step analyzis activated ... 時(shí),過不久, Prucdump 就會(huì)要求你鍵入要輸出的 檔名 ( 也就殼剝掉以后,原始的卵要存成什么檔名 ) ,我這里舉例成 unshell.exe ,此時(shí),也代表剝殼成功 !!:
剝殼還蠻簡(jiǎn)單的嘛,對(duì)不對(duì) ?
三 . 試試看剝殼了以后的 CWView32.exe 可不可用 :
你可以自己執(zhí)行看看,應(yīng)該可以用吧 ? 或許你也可以比較一下剝殼與未剝之間的差別, 你將驚覺 : 沒有剝殼的 CWView32 只有 602kb ,但是剝殼后,竟然高達(dá) 1634kb 。很驚人的壓縮率吧 !( 所以加密或加殼的確有存在的必要,就好像壓縮一樣,可以幫助人們節(jié)省很多硬碟空間 )
四 . 試試看剝殼了以后的 CWView32.exe 可不可以修改成注冊(cè)版 ?:
你可以用 16 位元編輯器,打開剛剛剝殼后的檔案 (unshell.exe) ,然后
尋找 C60520864F0001
改成 ------------00
嘿嘿,找的到對(duì)不對(duì) ? 也可以改了吧 ... 這樣就不用使用外掛的「動(dòng)態(tài)破解」軟體 PPATCHER 了 !
五 . 我知道你在想什么 ...
你是不是在想,可不可以把剛剛修改完成的 unshell.exe 再把它加殼,讓它變的小一點(diǎn)啊 ?
當(dāng)然可以,只要你有加殼軟體 ... 還等什么,趕快去做啊 !
1. 如何使用 TYP 來偵測(cè)殼,與如何使用史上最強(qiáng)的 procdump 來剝殼。
2. 要?jiǎng)?a target="_blank" href="http://www.49028c.com" class="UBBWordLink">殼,其實(shí)并不難,只要 TYP 偵測(cè)得出來、 procdump 有列表的,都很簡(jiǎn)單。
要注意的是 :
1. 當(dāng)你發(fā)現(xiàn) TYP 的回報(bào)是 Unknow 時(shí)候,別慌, procdump 也可以針對(duì)未知的殼作剝殼的運(yùn)算,只要選擇 **unknow** 就可以啦,不過成功率當(dāng)然降低許多。
2. 為什么要介紹 procdump? 因?yàn)樗梢酝鈷?script.ini 來增加剝殼的能力。也就是你可以自己用 sice 追某個(gè)被不知名加密軟體給加殼的軟體,然后紀(jì)錄起相關(guān)的資料,再交由 Procdump 來把記憶體的內(nèi)容「 dump 」 ( 存 ) 起來,只是這篇教學(xué)沒有教 ( 我也不太會(huì)啦 ...) 。
3.TYP 是目前世界上偵測(cè)殼、壓縮資料,能力最強(qiáng)的軟體,要善用,你可以在下面的網(wǎng)站抓到 :
阿倫的家 (GB 碼 ):http://crackers.163.net/
作者網(wǎng)頁(yè) :http://www-user.TU-Cottbus.DE/~kannegv
注意 : 要抓 dos32 的版本,才能在 windows 下正常使用
4.Procdump 是目前世界上最強(qiáng)的撥殼軟體,除可以剝已知道的殼外,還可以剝?cè)S多未知的殼。更可以以手動(dòng)的方法,增強(qiáng)其剝殼能力 ( 可惜的是,它只支援 win32 的軟體, win16 與 dos 的他都不支援 ) 。,你可以在下面的網(wǎng)站抓到 :
阿倫的家 (GB 碼 ):http://crackers.163.net/
吳朝相的家 (GB 碼 )http://member.netease.com/~topage
5. 別看我的網(wǎng)站都是介紹中國(guó)的網(wǎng)站,我可是道道地地的臺(tái)灣人,只是因?yàn)?a target="_blank" href="http://www.49028c.com" class="UBBWordLink">破解與保護(hù)在中國(guó)比較盛行,不得已 ... 否則我也想介紹一些臺(tái)灣的破解站啊 !( 不然只有孤零零的我一個(gè) )
3、ProcDump應(yīng)用文章二
今天,在吳朝相的網(wǎng)頁(yè)上看到一篇由臺(tái)灣的 Peter's 寫的關(guān)于脫殼的文章,里面提及到的了 Procdump1.50 的使用,但由于所寫的內(nèi)容比較地膚淺,并沒有交待到 Procdump1.50 的強(qiáng)大之處,同時(shí)由于最近在網(wǎng)上的軟件,加殼之風(fēng)日盛,如果作為一個(gè) Cracker ,不跟著時(shí)代走,可 能在不久的將來,你就沒有什么軟件可以修改了,所以一定要在加脫方法下點(diǎn)苦功才行,為此, 小弟想把一月來學(xué)習(xí)到的脫殼技術(shù) Post 出來,讓大家了解一下在 Windows 上是如何進(jìn)行軟件脫 殼的,同時(shí)也想向大家介紹強(qiáng)大的 Procdump1.50 是如何使用的,如何用它來進(jìn)行手動(dòng)脫殼的, 如何擴(kuò)展自已的 Procdump1.50 的脫殼種類。但由于小弟在脫殼方面還是新手,如果文章中有錯(cuò)誤之處,請(qǐng)來信指教。
讀者要求:
你可以閱讀和傳播本文章,但不能對(duì)文章的內(nèi)容作任何的修改,請(qǐng)尊重作者的勞動(dòng)。
首先我們要先準(zhǔn)備我們的工具:
1.Procdump1.50
2.Ultraedit6.10 (這個(gè)你也可以用別的編輯器)
3.Winsoftice4.0
4.Trw0.75
5.MakePE1.27
6.Wdasm8.93
好了!工具都準(zhǔn)備齊全了,我們就去下載一個(gè)實(shí)驗(yàn)品吧!今次我們選的是UPX ,在 Procdump1.50 的脫殼文件列表中,你可以清楚地看到有 UPX 的選項(xiàng),所以我們今次就選它了,目前它的最新版本是 0.82 ,好了下載完畢了,我們先用它來為軟件加一個(gè)脫吧!
操作:
1. 在 windows 上打開一個(gè) Dos 窗口 進(jìn)入 UPX0.82 所在的目錄;
2. 輸入 upx [ 要加殼的文件路徑和文件名 ]
3.OK! 加殼成功了!
好了!現(xiàn)在可以試一試脫殼了!
操作:
1. 運(yùn)行 Procdump1.50 ;
2. 按 Unpack 按鈕,這時(shí)就出現(xiàn)了 Choose Unpacker 窗口;
3. 在窗口中選擇 UPX ,這時(shí)就會(huì)跳出一個(gè)選擇你要脫殼文件的選擇窗口;
4. 按下打開,哦天啊!好痛苦啊!程序沒有脫殼竟然運(yùn)行了, Procdump1.50 提示一個(gè)錯(cuò)
誤發(fā)生在 script 的第一行。
以上的所有操作,是對(duì)自動(dòng)脫殼來說的,基本上的自動(dòng)脫殼的操作都是這樣的。好了,難道就這樣沒有戲唱了嗎?作者寫文章那會(huì)就寫這幾十行廢話呢?請(qǐng)接著看下面的吧! 好了,看一看它沒有沒防住 winsoftice 呢?重新啟動(dòng)機(jī)器,換一個(gè)有安裝 winsoftice 的 windows 平臺(tái) 吧!再次運(yùn)行被加脫了的程序,還好!沒有當(dāng)?shù)?winsoftice ,這樣心中暗喜,你有難了啊!看來外 國(guó)人寫的東西還是比較有善,不象 Ding Boy 的幻影系列,比小燕子還兇( ^o^ ,又說 Ding Boy 的壞 話了,其實(shí)有時(shí)我覺得他比較象 Crack 界的小燕子,令人又愛又恨)。好了關(guān)閉程序,用 winsoftice 載入去,唉剛剛還說好呢!原來它還是對(duì) winsoftice 作了一點(diǎn)小動(dòng)作, winsoftice 不能中斷于程序的入口的第一句處。沒有關(guān)系,現(xiàn)在有三種方法,第一種方法是通過對(duì)程序的 exe 文件作一點(diǎn)修改, 使其符合標(biāo)準(zhǔn)的 PE 文件格式,因?yàn)?winsoftice 畢竟不是專為 Crack 設(shè)計(jì)的,所以它的中斷程序入口 是針對(duì)標(biāo)準(zhǔn)的 PE 文件格式來寫的,對(duì)于那些不符合的,它就沒有能力了,具體的 PE 文件格式,大 家可以看一看 VC 中的 MSDN 中的幫助和 WINNT.H 中的解釋;第二種方法就是不用 winsoftice ,而用 TRW ,因?yàn)閯凉壬?TRW 是專為 Crack 設(shè)計(jì)的,所以幾乎所有可以在 Windows 上運(yùn)行的程序,它 都可以中斷得了;第三種方法,就是在原 exe 文件中加插 int 3 語句,令 winsoftice 強(qiáng)行中斷。 好了,方法說了一大羅,我們就用最簡(jiǎn)單的方法吧!沒人會(huì)有簡(jiǎn)單的不用,去用最繁的,如果有吧!大家就。。。。。。。。
運(yùn)行 TRW0.75 ,選擇菜單中的 TRNEWTCB 命令,然后運(yùn)行加脫的程序,程序馬上中斷于第一句了。
具體如下:
0137:0043D100 PUSHAD 程序會(huì)中斷于這里
0137:0043D101 MOV ESI0042B0D9
0137:0043D106 LEA EDI[ESI+FFFD5F27]
0137:0043D10C PUSH EDI
0137:0043D10D OR EBP-01
0137:0043D110 JMP 0043D122 跳到解壓程序
0137:0043D112 NOP
0137:0043D113 NOP
解壓程序的入口:
0137:0043D122 8B1E MOV EBX[ESI]
0137:0043D124 83EEFC SUB ESI-04
0137:0043D127 11DB ADC EBXEBX
0137:0043D129 72ED JB 0043D118
0137:0043D12B B801000000 MOV EAX00000001
0137:0043D130 01DB ADD EBXEBX
0137:0043D132 7507 JNZ 0043D13B
0137:0043D134 8B1E MOV EBX[ESI]
好了在解壓程序里面,程序會(huì)做無數(shù)次的循環(huán),我沒有必要了解它是如何進(jìn)行加壓的,所以就把光標(biāo)一直向下走,一直走到這里:
0137:0043D250 EBD6 JMP 0043D228
0137:0043D252 61 POPAD
0137:0043D253 C3 RET
0137:0043D254 61 POPAD
0137:0043D255 E9D6A1FDFF JMP 00417430 這就是程序的真正入口了
0137:0043D25A 0000 ADD [EAX]AL
0137:0043D25C 0000 ADD [EAX]AL
0137:0043D25E 0000 ADD [EAX]AL
好開心?。〗K于找到了入口地址,如果你只是針對(duì)某一個(gè)特定的程序而脫殼的,那么現(xiàn)在就可以 用 TRW 的 pedump 命令直接脫殼了,但這不是我們所要的,我們現(xiàn)在是要研究 UPX0.82 的殼,要寫一個(gè)通用的脫殼 ini 加入到 Procdump1.50 里面,那么,這樣你以后就可以很方便脫掉 UPX0.82 所 的脫了,同時(shí)也很方便網(wǎng)上傳播了,讓別人也能分享你的成果,這才是真正的 Cracker 精神。
操作:
1. 用 Ultraedit6.10 打開 Procdump1.50 目錄下的 Script.ini 文件;
它的格式如下:
[INDEX]
P1=Hasiuk/NeoLite
P2=PESHiELD
P3=Standard
P4=Shrinker 3.3
P5=Wwpack32 I
P6=Manolo
P7=Petite<1.3
P8=Wwpack32 II
P9=Vbox Dialog
PA=Vbox Std
PB=Petite 1.x
PC=Shrinker 3.2
PD=PEPack
PE=UPX 修改為 PE=UPX<0.7X
PF=Aspack<108
P10=SoftSentry
P11=CodeSafe 3.X
P12=Aspack108
P13=Neolite2
P14=Aspack108.2
P15=Petite 2.0
P16=Sentinel
P17=PKLiTE
P18=Petite 2.1
P19=PCShrink
P1A=PCGUARD v2.10
P1B=Aspack108.3
P1C=Shrinker 3.4
P1D=UPX0.7X-0.8X 加入這句
然后找到:
[UPX] 修改為 [UPX<0.7X]
然后在文件最下面加入:
[UPX0.7X-0.8X]
好了,準(zhǔn)備功夫我們都做好了,現(xiàn)在可以寫 UPX0.82 的脫殼擴(kuò)展了,首先我們可以見到程序有兩個(gè)跳動(dòng)的地方,第一個(gè)是:
0137:0043D110 JMP 0043D122 跳到解壓程序
所以我們馬上把機(jī)器代碼抄下來:
EB10
第二個(gè)是:
0137:0043D255 E9D6A1FDFF JMP 00417430 這就是程序的真正入口了
機(jī)器代碼就是:
E9D6A1FDFF
好了,所有的要找到東西我們都已經(jīng)找到了,我們就開始編寫 UPX0.82 的脫殼擴(kuò)展了。
我編寫的具體如下:
[UPX0.7X-0.8X]
L1=OBJR ; 在掃描開始處設(shè)置初始的內(nèi)存地址
L2=LOOK EB10 ; 查找第一個(gè) EB10 程序代碼
L3=BP ; 在當(dāng)前內(nèi)存位置設(shè)置斷點(diǎn)
L4=WALK ; 交還控制權(quán)到 Procdump 并且執(zhí)行下一個(gè)指令
L5=OBJR ; 在掃描開始處設(shè)置初始的內(nèi)存地址
L6=LOOK 61E9 ; 查找第一個(gè) EB10 程序代碼
L7=BP ; 在當(dāng)前內(nèi)存位置設(shè)置斷點(diǎn)
L8=STEP ; 一步一步地跟蹤分析程式
好了,以上的解釋都很清楚了,沒有什么不明白了,我們把文件保存后,再次運(yùn)行 Procdump1.50 , 在 Choose Unpacker 中可以見到多了一個(gè) UPX0.7X-0.8X 項(xiàng)了,選擇它,進(jìn)行脫我們加了脫的程序, 哈哈,叫我們保存了,你可以不要高興得太早了,你試一試運(yùn)行 dump 程序,哦不能運(yùn)行,非法操作。 不要心急,我們好象還有點(diǎn)東西要加上呢!那就是 dump 的可選參數(shù)了, Procdump1.50 一共給我們 提供了五組可選參數(shù),如果你沒有特別指出,就用默認(rèn)值。好我們加上去試一試吧!
OPTL1=00000000
OPTL2=01010001
OPTL3=01010001
OPTL4=00030000
OPTL5=00000000
以上這五參數(shù)是最常用的,你加參數(shù)時(shí)可要先試試,或者加了之后就可以用了,好我們加上,試一試。
以下文章所述,可能在有的機(jī)器上有不同的結(jié)果,請(qǐng)自行修正:
作者的機(jī)器是:
賽揚(yáng) 300A (超 450 )
PC100-64M 內(nèi)存
當(dāng)我再次運(yùn)行 Procdump1.50 來脫殼程序時(shí),竟然程序一下子就運(yùn)行了,根本不象上次那樣提示要我保存 脫殼后的文件,所以我想,可能這些參數(shù)有些不合適我的機(jī)器,于是我認(rèn)真分析了每一個(gè)參數(shù)的真正含義之后,就把參數(shù)作了如下的修改:
OPTL1=00000001 這是延遲時(shí)間,我設(shè)為 1ms
OPTL2=01010101 采用了快速 dump 的工作方式
OPTL3=01010001
OPTL4=00030000
OPTL5=00000000
今次再運(yùn)行 Procdump1.50 進(jìn)行脫殼,哈哈?。?!可以脫了,然后再雙擊脫殼后的文件,咦,可以執(zhí)行了, 再用 Wdasm8.93 反匯編分析一下文件,發(fā)現(xiàn)基本和原文件相同,只是文件大小有點(diǎn)不同,大了一點(diǎn),再用了一下軟件的各種功能,一切正常,所以應(yīng)該說脫殼是成功的,到此,文章也該在此結(jié)束了,不過好象還漏了點(diǎn)事,就是用 MakePe1.27 幫助脫殼后的文件作進(jìn)一步的優(yōu)化,這就不一一描述了 ,自己看幫助進(jìn) 行吧! 好了,最后總結(jié)一下吧!
完整地加入:
[UPX0.7X-0.8X]
L1=OBJR
L2=LOOK EB10
L3=BP
L4=WALK
L5=OBJR
L6=LOOK 61E9
L7=BP
L8=STEP
OPTL1=00000001
OPTL2=01010101
OPTL3=01010001
OPTL4=00030000
OPTL5=00000000
By The Way !
我發(fā)現(xiàn)對(duì)于使用 UPX0.7x 到 UPX0.8x 加殼的軟件,用我的方法都可以成功脫殼。
作者: Ru Feng
信箱: ocq@163.net (未得作者允許,嚴(yán)禁 Email 任何軟件到此信箱)
主頁(yè)(一):http://ocq.163.net (楓林居)
主頁(yè)(二):http://ocq.yeah.net (最 Cool 的 VB 控件天堂)
主頁(yè)(三):http://ocqpat.163.net (我的作品,主要介紹“電子資料庫(kù)”軟件)
4、Procdump中文說明書
大家好!早兩天放上了提高篇( 10 )后,大家的反應(yīng)還不錯(cuò),不過對(duì)于一些朋友來說, 要想用好 Procdump1.50 ,可能還有點(diǎn)問題,因?yàn)樗?Script 的說明書是英文的,對(duì)于英文不是 太好的朋友,這就成為一個(gè)很大的問題了。昨晚,在白菜的聊天室內(nèi),我和 Ding Boy 等高手一 起聊天, Ding Boy 就建議我把 Procdump1.50 的說明書翻譯成中文,方便廣大的朋友學(xué)習(xí)和使用 Procdump1.50 ,本著我不入地獄,誰入地獄的決心,我就著手了翻譯工作,由于本人的英文也 不是太好!所以在 Procdump1.50 的 Script 說明書的翻譯過程中,難免會(huì)有一些錯(cuò)誤的地方,同 時(shí)我的語文水平也不見得好到那里去,有時(shí)英文了解什么意思,中文也不知如何表達(dá),所以也 難免有一些詞不達(dá)意,還有一些地方,我只能根據(jù)意譯的方法來完成了,因?yàn)槿绻蛔忠蛔值?合并起來,句子的意思可能不知它說什么。花了三個(gè)小時(shí)的時(shí)間,終于完成了,但為了有點(diǎn)記 念意義,就把譯文放進(jìn)了提高篇( 11 )當(dāng)中了,希望大家喜歡!
讀者要求:
你可以閱讀和傳播本文章,但不能對(duì)文章的內(nèi)容作任何的修改,請(qǐng)尊重作者(譯)的勞動(dòng)。
*********************************
ProcDump32 的 Script 擴(kuò)展:
*********************************
A) 功能定義:
*************************
1) Look 功能:
這個(gè) Look 功能是在被載入的程序中查找指定的 HEX 字串。它會(huì)把找到了的內(nèi)存地址保存下來以便你可以方便在此內(nèi)存地址設(shè)置斷點(diǎn)。
例:
Look OF85 將用于搜索一個(gè) JNE 或一個(gè)長(zhǎng) jump 。你可以通過 BP 命令來設(shè)置斷點(diǎn)。
2) ADD 功能:
允許你在當(dāng)前內(nèi)存地址上加一個(gè)變址值(例:出現(xiàn)于 look 命令或 POS 命令之后)。
3) DEC 功能:
猜測(cè);)
4) REPL 功能
這個(gè)功能用于在當(dāng)前內(nèi)存中修改內(nèi)碼(連續(xù)的 HEX )(注:它出現(xiàn)在 look 命令之后)。
例:
REPL 9090 將會(huì)在你當(dāng)前的內(nèi)存位置開始連接放入兩個(gè) NOP 指令。
5) BP 功能
在當(dāng)前內(nèi)存位置設(shè)置一個(gè)斷點(diǎn)。
6) BPX 功能
在指定的位置設(shè)置斷點(diǎn)。這個(gè)位置與程序開始位置有關(guān)。
例:
如果程序的開始位置在 RVA 66000hBPX 2672 就會(huì)在 RVA 68672 設(shè)置斷點(diǎn)。
7) BPF 功能(用標(biāo)志位設(shè)斷)
這個(gè)功能會(huì)檢查每一次斷點(diǎn)發(fā)生時(shí)的標(biāo)志位的值是否為你所設(shè)定的值。斷點(diǎn)的位置為
當(dāng)前內(nèi)存地址。
Unset/Set 的內(nèi)容
*******************
C * C * 進(jìn)位標(biāo)志。
P * P * 奇偶標(biāo)志。
A * A * 輔助進(jìn)位標(biāo)志。
Z * Z * 零標(biāo)志。
S * S * 正負(fù)號(hào)標(biāo)志。
D * D * 方向標(biāo)志。
O * O * 溢出標(biāo)志。
你可以單獨(dú)測(cè)試 ONE 旗標(biāo)。
8) BPC 功能
當(dāng)經(jīng)過當(dāng)前位置的次數(shù)達(dá)到設(shè)定值時(shí)發(fā)生中斷。
例:
BPC 15 ( 在第 21(15h) 次經(jīng)過當(dāng)前位置時(shí)中斷 )
9) BPV 功能
當(dāng)如果寄存器的值到達(dá)了你設(shè)定的值時(shí)中斷。
例:
BPV EAX=5 ( 當(dāng)特定位置的 EAX=5 時(shí)中斷 ) 。
10) MOVE 功能
設(shè)置當(dāng)前 EIP 。加一個(gè)參數(shù)值給當(dāng)前 EIP 。但請(qǐng)小心使用它。其實(shí)它對(duì)于程序沒有做到 什么,只是當(dāng)你要跳過一些 CRC 檢查時(shí),就要用到它了,它相當(dāng)于代替一連串的 NOP 指令。
例:
MOVE 14 就會(huì)把當(dāng)前 EIP 變?yōu)?EIP+14h 。
11) POS 功能
為所有的功能設(shè)置當(dāng)前內(nèi)存地址,這個(gè)位置與程序開始位置有關(guān)。
12) STEP 功能
這個(gè)功能是設(shè)置一步一步的進(jìn)行分析。它通常是用于完成跟蹤 dump 過程的。
注意:?jiǎn)尾侥J骄鸵馕吨恳恍?a target="_blank" href="http://www.49028c.com" class="UBBWordLink">代碼它都進(jìn)行測(cè)試 -> 慢!!所以設(shè)置單步模式一般
都放在最后。
13) OBJR 功能
這個(gè)功能是設(shè)置以基始內(nèi)存地址為開始進(jìn)行掃描。對(duì)于 LOOK 命令有影響。
14) BPREG 功能
以通過寄存器的值來設(shè)置斷點(diǎn)。
15) WALK 功能
執(zhí)行下一條指令后把控件權(quán)交還 ProcDump32 。
16) EIP 功能
設(shè)置下一個(gè) EIP 為原來程序的最初進(jìn)入點(diǎn)。
注意:
在斷點(diǎn)之后,下一個(gè) EIP 就是斷點(diǎn)地址本身。
17) 建立外部幫助文件
通過特殊的參數(shù)創(chuàng)建外部文件。這個(gè)你指定的 ini 文件是由一些特殊的參數(shù)組成和建立的。
它包括:
. 進(jìn)程的 Pid 。
. 所有寄存器的值包括 EIP 。
. 當(dāng)前 EIP 的值
例子:
在 script 中:
...
L5=HELP PDHelp.Exe Helper.ini
...
你的 helper 的命令行會(huì)包含 <Path to helper.ini>/"helper.ini" 。
在 helper.ini 中:
[REG]
Dr0=00000000
Dr1=00000000
Dr2=00000000
Dr3=00000000
Dr6=00000000
Dr7=00000000
SegGs=00000000
SegFs=00000FDF
SegEs=00000167
SegDs=00000167
Edi=00000000
Esi=8161D244
Ebx=00000000
Edx=8161D2A4
Ecx=8161D264
Eax=0043E9B4
Ebp=00456000
Eip=00456264
SegCs=0000015F
Flags=00000216
Esp=0068FE34
SegSs=00000167
Pid=FFC1E943
Local=00456264
我想這樣做可以比較靈活;)。
注意:
命令行每行不能使用超過 512 個(gè)字每來描述 helper 的 EXE 和 INI 文件的路徑,這個(gè)只是 ProcDump 的內(nèi)部限制,而對(duì)于 WINDOWS API 來說來說就不能超過 256 個(gè)字母。
B) 在 script 中 Options 的格式:
*************************************
Options 是通過 OPTL 開始的,并以 DWORD 形式保存的。
OPTL1=
DWORD : 設(shè)定 AutoDump 中的延遲時(shí)間,以 ms 為單位。
OPTL2=
BYTE : 自動(dòng)執(zhí)行 EIP
BYTE : 忽略錯(cuò)誤
BYTE : 快速模式 Dump
BYTE : 外部 Predump
OPTL3=
BYTE : 優(yōu)化 PE
BYTE : 自動(dòng)計(jì)算程式
BYTE : 跟蹤 API
BYTE : 自動(dòng)分層
OPTL4=
BYTE : 未知模式
BYTE :Import 表類型重建
BYTE : 修復(fù) Header
BYTE : 修復(fù) Relocs
OPTL5=
BYTE : 保留
BYTE : 保留
BYTE : 檢查 Header
BYTE : 合并代碼
為得到更詳細(xì)資料 ... 查看 ProcDump Options 的解釋吧。
*****************************************************
1) 添加索引段:
*************************
加一個(gè) Pxx 的聲明 .... 注意 xx 的值是跟接在最后一個(gè)的值。
例如:
增加之前
[INDEX]
P1=Shrinker 3.3
P2=Wwpack32 Beta 9
P3=Wwpack32 1.0
增加之后
[INDEX]
P1=Shrinker 3.3
P2=Wwpack32 Beta 9
P3=Wwpack32 1.0
P4=My Own definition
2) 增加你的定義:
************************
每行的定義都必須事先聲明,例如用 Lxx 。
例:
[My own definition]
L1=Look 0F85DBFFFF
L2=BP
L3=STEP
你可以在定義中多加一點(diǎn)默認(rèn) options ,添加 OPTLx 的方法也是這樣做,如果你沒有指定默認(rèn)的 options , ProcDump 會(huì)使用常規(guī)的那些設(shè)置。
作者: Ru Feng (譯)
信箱: ocq@163.net (未得作者允許,嚴(yán)禁 Email 任何軟件到此信箱)
主頁(yè)(一):http://ocq.163.net (楓林居)
主頁(yè)(二):http://ocq.yeah.net (最 Cool 的 VB 控件天堂)
主頁(yè)(三):http://ocqpat.163.net (我的作品,主要介紹“電子資料庫(kù)”軟件
(編輯:天命孤獨(dú))
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注