1、工具介紹
通過上一節,我想大家己認識了什么是殼的概念了,也是說運行加殼程序時, 用戶執行的實際上是這個外殼的程序,而這個外殼程序負責把用戶原來的程序在內存中解壓縮,并把控制權交還給解開后的真正的程序,由于一切工作都是在內存中運行,用戶根本不知道也不需要知道其運行過程,只要執行起來沒有變化就好。當時有些人擔心這些解壓縮的工作會給程序帶來額外的運行時間,但實際上所有的可執行文件都要讀到內存中去執行,文件小了,從計算機硬盤上讀到內存的時間自然也少了,兩下相抵,實際上用戶并不會感覺程序慢了多少。脫殼的就是把在內存中真正還原的程序抓取下來,修正后變成可執行的文件。
在Windows 95/NT/2000 上的文件格式是Portable Executable File Format(即PE格式),該格式應用于所有基于Win32的系統。由于現在windows的普及,下面談到的殼都是基于這種文件格式。
壓縮工具介紹(PACKERS)
我們這里談的壓縮工具不是Winzip,WINRAR等工具(它們是可壓縮任何文件),而是談專門壓縮windows下的 PE 格式EXE或DLL文件的工具,壓縮的EXE文件是自解壓可執行文件。
常用壓縮工具(Windows Packers )列表: 名稱 作者 主頁 介紹
ASPack Alexey Solodovnikovhttp://www.aspack.com/ 是俄國作者Alexey Solodovnikov寫的一個非常強大的Win32壓縮工具,其壓縮率、速度和兼容性很不錯,是目前很流行的一種壓縮工具。
UPX Markus Oberhumer & Laszlo Molnar Homepage 非常全能的 EXE 壓縮軟件并可用UPX -D命令脫殼。
Petite Ian Luck Homepage 能壓縮PE文件的code data等資源。
PE-PACK ANAKiN Homepage 一個自身體積小巧的壓縮工具
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).
一般某種壓縮工具的殼,都會有相應的脫殼工具,因此只要找到較新版本的脫殼工具, 一般的殼都可輕易脫去。
常用脫殼工具(Windows Unpackers)列表: 名稱 作者 主頁 介紹
ASPack unpacker bane Homepage 脫ASPack的壓縮PE文件。
UnPEPack M.o.D. 脫PEPack的殼
ProcDump32 十分優秀的“萬能”脫殼工具,可惜不升級了,因此只能自動脫些老版本壓縮工具的殼,但可通過腳本命令使其升級。也是一款優秀的PE修改工具。
偵測文件類型工具
名稱 介紹
FileInfo 能檢測多種文件格式,脫殼前用來判斷是否加殼或何種殼,推薦使用!
GetTyp 功能同上
TYP 功能同上
站點1:playtools工具站點(請通過代理訪問)
站點2:protools工具站點 (請通過代理訪問)
站點3:阿倫主頁
2、ProcDump應用文章一
注:本文作者PererS是臺灣的,因此要注意在一些名詞上稱呼與我們不同。
由于此文寫作時間較早,在此推薦兩個新版工具:
偵測工具:推薦FileInfo。
脫殼工具:ProcDump32 v1.6.2 FINAL終結版本 。(作者不升級了,對目前新版壓縮工具的殼無效,為了你對 Procdump有個認識,在此提供一較老版本ASPack壓縮的記事本程序供練習:下載)
標題:軟體名稱 中文哇!檔案閱覽器 2000 (Version 4.1)
保護方法 殼
需要工具 TYP( 偵測工具 ) & ProcDump 1.50( 剝殼機 )
文章作者 Peter S. (彼得的家)
偵測與剝 CWView 2000 (Version 4.1) 的殼
一、前言
何謂殼 ? 相信這是很多人的疑問。
其實殼,顧名思義,就像雞蛋的殼一樣,主要是保護雞的「卵」。從外觀上看來,雞蛋是白色的,但是把殼剝掉以后呢 ? 是黃色的卵 + 透明的蛋白 ( 未熟蛋 ) 。這應用到我們的破解與保護上呢,也是同樣的意思,假若我今天要修改一個執行檔 ( 就像我要把黃色的卵,涂成綠色 ) ,但是因為有殼,所以根本找不到你要修改的地方 ( 就像光從雞蛋的外觀上看來,根本找不到有黃色的地方一樣 ) ,一定要把殼「剝掉」,才能達成你的目的。我這樣說,應該比較容易了解什么是殼了吧 ?
當然,正確的說,「殼」與「加密」是一體的,這類似你有一個純文字檔,如果你用 zip 壓縮它以后,能夠再更改它嗎 ? 不可能,因為資料已經被重新排列、且壓縮運算過,成為一堆亂碼,所以根本不能直接改。
這個教學文件所需要的軟體如下 :
1. TYP 這是一個能偵測你的軟體是被哪一種「殼」給加密了
( 就好像偵測你的文件檔是被 zip 、 rar 、 arj 哪一個給壓縮了一樣,如果連被哪種軟體加了殼都不曉得,那要剝殼就難很多 ) 。
2. Procdump 1.5 這是剝殼機器,可剝許多已知殼、未知的 for win32 的殼。
二 . 用 TYP 測試 CWView2000 是被哪種殼給加密了 :
廢話不多說,直接來 :
1. 首先,你要把你下載來的 TYP 先解壓縮到某個目錄 ( 我假設 c:/try)
2. 再來,把 CWView2000 的主程式 cwview32.exe ,由 c:/cwv2000 下拷貝到上面講的目錄 (c:/try) ,接下來,從 win95 開一個 dos 視窗,并且切換到 c:/try 目錄下,然后鍵入 typ3 cwview32.exe
3. 過幾秒以后,直接跳到最后一行,有沒有看到 ASPACK / Solodovnikov Alexy [1.07b] 這行 ?
哦 ~~~ 原來 CWView2000 是用 ASPACK 1.07b 來加密的啊。那要脫殼不就簡單了,去找一個專門脫 ASPACK 1.07 的軟體不就得了 ??
沒錯,不過我在來要教的,是使用目前全世界最強的撥殼機 Procdump 來剝殼。
三 . 用 Procdump 1.50 來剝 ASPACK 1.07b 的殼 :
1. 首先,當然也是把 Procdump 解壓縮到剛剛的目錄 (C:/TRY)
2. 執行 Procdump ,你會看到如下的視窗 :
3. 因為我們要剝殼,所以按下 Unpack( 其他的按鈕是干什么的,我也不清楚,大概是跟 WIN 的 PE 執行檔有關的吧 ):
4. 由剛剛 TYP 偵測得知, CWView2000 是用 Aspack 1.07b 加的殼,所以理所當然的我們要選擇 [Aspack<108] ,選好后,按下 OK( 要選對喔,選錯會剝不出來 ):
5. 此時, ProcDump 會要求你開啟你要剝殼的執行檔,當然,我們要把路徑指到 c:/try/cwview32.exe
6. 緊接著馬上會出現如下的視窗,此時,千萬不要按下 [ 確定 ] 。稍微等一下,有耐心一點,你馬 上就會看到 CWView2000 被呼叫執行了,此時,將視窗切換至 CWView ,隨便使用一二個 功能,然后在不要關掉 CWView2000 之下,按下 [ 確定 ] 鈕。 ( 這個按鈕是當程式 [ 完全 ] 被載入以后,才要按的 )
上面這個步驟很重要,如果心急亂按或亂關,你就得重來了。
7. 按下 [ 確定 ] 后沒多久,會出現下面的視窗,并且此時 cwview 會自動被關掉,然后開始剝殼 運算,當出現 Step by step analyzis activated ... 時,過不久, Prucdump 就會要求你鍵入要輸出的 檔名 ( 也就殼剝掉以后,原始的卵要存成什么檔名 ) ,我這里舉例成 unshell.exe ,此時,也代表剝殼成功 !!:
剝殼還蠻簡單的嘛,對不對 ?
三 . 試試看剝殼了以后的 CWView32.exe 可不可用 :
你可以自己執行看看,應該可以用吧 ? 或許你也可以比較一下剝殼與未剝之間的差別, 你將驚覺 : 沒有剝殼的 CWView32 只有 602kb ,但是剝殼后,竟然高達 1634kb 。很驚人的壓縮率吧 !( 所以加密或加殼的確有存在的必要,就好像壓縮一樣,可以幫助人們節省很多硬碟空間 )
四 . 試試看剝殼了以后的 CWView32.exe 可不可以修改成注冊版 ?:
你可以用 16 位元編輯器,打開剛剛剝殼后的檔案 (unshell.exe) ,然后
尋找 C60520864F0001
改成 ------------00
嘿嘿,找的到對不對 ? 也可以改了吧 ... 這樣就不用使用外掛的「動態破解」軟體 PPATCHER 了 !
五 . 我知道你在想什么 ...
你是不是在想,可不可以把剛剛修改完成的 unshell.exe 再把它加殼,讓它變的小一點啊 ?
當然可以,只要你有加殼軟體 ... 還等什么,趕快去做啊 !
1. 如何使用 TYP 來偵測殼,與如何使用史上最強的 procdump 來剝殼。
2. 要剝殼,其實并不難,只要 TYP 偵測得出來、 procdump 有列表的,都很簡單。
要注意的是 :
1. 當你發現 TYP 的回報是 Unknow 時候,別慌, procdump 也可以針對未知的殼作剝殼的運算,只要選擇 **unknow** 就可以啦,不過成功率當然降低許多。
2. 為什么要介紹 procdump? 因為它可以外掛 script.ini 來增加剝殼的能力。也就是你可以自己用 sice 追某個被不知名加密軟體給加殼的軟體,然后紀錄起相關的資料,再交由 Procdump 來把記憶體的內容「 dump 」 ( 存 ) 起來,只是這篇教學沒有教 ( 我也不太會啦 ...) 。
3.TYP 是目前世界上偵測殼、壓縮資料,能力最強的軟體,要善用,你可以在下面的網站抓到 :
阿倫的家 (GB 碼 ):http://crackers.163.net/
作者網頁 :http://www-user.TU-Cottbus.DE/~kannegv
注意 : 要抓 dos32 的版本,才能在 windows 下正常使用
4.Procdump 是目前世界上最強的撥殼軟體,除可以剝已知道的殼外,還可以剝許多未知的殼。更可以以手動的方法,增強其剝殼能力 ( 可惜的是,它只支援 win32 的軟體, win16 與 dos 的他都不支援 ) 。,你可以在下面的網站抓到 :
阿倫的家 (GB 碼 ):http://crackers.163.net/
吳朝相的家 (GB 碼 )http://member.netease.com/~topage
5. 別看我的網站都是介紹中國的網站,我可是道道地地的臺灣人,只是因為破解與保護在中國比較盛行,不得已 ... 否則我也想介紹一些臺灣的破解站啊 !( 不然只有孤零零的我一個 )
3、ProcDump應用文章二
今天,在吳朝相的網頁上看到一篇由臺灣的 Peter's 寫的關于脫殼的文章,里面提及到的了 Procdump1.50 的使用,但由于所寫的內容比較地膚淺,并沒有交待到 Procdump1.50 的強大之處,同時由于最近在網上的軟件,加殼之風日盛,如果作為一個 Cracker ,不跟著時代走,可 能在不久的將來,你就沒有什么軟件可以修改了,所以一定要在加脫方法下點苦功才行,為此, 小弟想把一月來學習到的脫殼技術 Post 出來,讓大家了解一下在 Windows 上是如何進行軟件脫 殼的,同時也想向大家介紹強大的 Procdump1.50 是如何使用的,如何用它來進行手動脫殼的, 如何擴展自已的 Procdump1.50 的脫殼種類。但由于小弟在脫殼方面還是新手,如果文章中有錯誤之處,請來信指教。
讀者要求:
你可以閱讀和傳播本文章,但不能對文章的內容作任何的修改,請尊重作者的勞動。
首先我們要先準備我們的工具:
1.Procdump1.50
2.Ultraedit6.10 (這個你也可以用別的編輯器)
3.Winsoftice4.0
4.Trw0.75
5.MakePE1.27
6.Wdasm8.93
好了!工具都準備齊全了,我們就去下載一個實驗品吧!今次我們選的是UPX ,在 Procdump1.50 的脫殼文件列表中,你可以清楚地看到有 UPX 的選項,所以我們今次就選它了,目前它的最新版本是 0.82 ,好了下載完畢了,我們先用它來為軟件加一個脫吧!
操作:
1. 在 windows 上打開一個 Dos 窗口 進入 UPX0.82 所在的目錄;
2. 輸入 upx [ 要加殼的文件路徑和文件名 ]
3.OK! 加殼成功了!
好了!現在可以試一試脫殼了!
操作:
1. 運行 Procdump1.50 ;
2. 按 Unpack 按鈕,這時就出現了 Choose Unpacker 窗口;
3. 在窗口中選擇 UPX ,這時就會跳出一個選擇你要脫殼文件的選擇窗口;
4. 按下打開,哦天啊!好痛苦啊!程序沒有脫殼竟然運行了, Procdump1.50 提示一個錯
誤發生在 script 的第一行。
以上的所有操作,是對自動脫殼來說的,基本上的自動脫殼的操作都是這樣的。好了,難道就這樣沒有戲唱了嗎?作者寫文章那會就寫這幾十行廢話呢?請接著看下面的吧! 好了,看一看它沒有沒防住 winsoftice 呢?重新啟動機器,換一個有安裝 winsoftice 的 windows 平臺 吧!再次運行被加脫了的程序,還好!沒有當掉 winsoftice ,這樣心中暗喜,你有難了啊!看來外 國人寫的東西還是比較有善,不象 Ding Boy 的幻影系列,比小燕子還兇( ^o^ ,又說 Ding Boy 的壞 話了,其實有時我覺得他比較象 Crack 界的小燕子,令人又愛又恨)。好了關閉程序,用 winsoftice 載入去,唉剛剛還說好呢!原來它還是對 winsoftice 作了一點小動作, winsoftice 不能中斷于程序的入口的第一句處。沒有關系,現在有三種方法,第一種方法是通過對程序的 exe 文件作一點修改, 使其符合標準的 PE 文件格式,因為 winsoftice 畢竟不是專為 Crack 設計的,所以它的中斷程序入口 是針對標準的 PE 文件格式來寫的,對于那些不符合的,它就沒有能力了,具體的 PE 文件格式,大 家可以看一看 VC 中的 MSDN 中的幫助和 WINNT.H 中的解釋;第二種方法就是不用 winsoftice ,而用 TRW ,因為劉濤濤先生的 TRW 是專為 Crack 設計的,所以幾乎所有可以在 Windows 上運行的程序,它 都可以中斷得了;第三種方法,就是在原 exe 文件中加插 int 3 語句,令 winsoftice 強行中斷。 好了,方法說了一大羅,我們就用最簡單的方法吧!沒人會有簡單的不用,去用最繁的,如果有吧!大家就。。。。。。。。
運行 TRW0.75 ,選擇菜單中的 TRNEWTCB 命令,然后運行加脫的程序,程序馬上中斷于第一句了。
具體如下:
0137:0043D100 PUSHAD 程序會中斷于這里
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]
好了在解壓程序里面,程序會做無數次的循環,我沒有必要了解它是如何進行加壓的,所以就把光標一直向下走,一直走到這里:
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
好開心啊!終于找到了入口地址,如果你只是針對某一個特定的程序而脫殼的,那么現在就可以 用 TRW 的 pedump 命令直接脫殼了,但這不是我們所要的,我們現在是要研究 UPX0.82 的殼,要寫一個通用的脫殼 ini 加入到 Procdump1.50 里面,那么,這樣你以后就可以很方便脫掉 UPX0.82 所 的脫了,同時也很方便網上傳播了,讓別人也能分享你的成果,這才是真正的 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]
好了,準備功夫我們都做好了,現在可以寫 UPX0.82 的脫殼擴展了,首先我們可以見到程序有兩個跳動的地方,第一個是:
0137:0043D110 JMP 0043D122 跳到解壓程序
所以我們馬上把機器代碼抄下來:
EB10
第二個是:
0137:0043D255 E9D6A1FDFF JMP 00417430 這就是程序的真正入口了
機器代碼就是:
E9D6A1FDFF
好了,所有的要找到東西我們都已經找到了,我們就開始編寫 UPX0.82 的脫殼擴展了。
我編寫的具體如下:
[UPX0.7X-0.8X]
L1=OBJR ; 在掃描開始處設置初始的內存地址
L2=LOOK EB10 ; 查找第一個 EB10 程序代碼
L3=BP ; 在當前內存位置設置斷點
L4=WALK ; 交還控制權到 Procdump 并且執行下一個指令
L5=OBJR ; 在掃描開始處設置初始的內存地址
L6=LOOK 61E9 ; 查找第一個 EB10 程序代碼
L7=BP ; 在當前內存位置設置斷點
L8=STEP ; 一步一步地跟蹤分析程式
好了,以上的解釋都很清楚了,沒有什么不明白了,我們把文件保存后,再次運行 Procdump1.50 , 在 Choose Unpacker 中可以見到多了一個 UPX0.7X-0.8X 項了,選擇它,進行脫我們加了脫的程序, 哈哈,叫我們保存了,你可以不要高興得太早了,你試一試運行 dump 程序,哦不能運行,非法操作。 不要心急,我們好象還有點東西要加上呢!那就是 dump 的可選參數了, Procdump1.50 一共給我們 提供了五組可選參數,如果你沒有特別指出,就用默認值。好我們加上去試一試吧!
OPTL1=00000000
OPTL2=01010001
OPTL3=01010001
OPTL4=00030000
OPTL5=00000000
以上這五參數是最常用的,你加參數時可要先試試,或者加了之后就可以用了,好我們加上,試一試。
以下文章所述,可能在有的機器上有不同的結果,請自行修正:
作者的機器是:
賽揚 300A (超 450 )
PC100-64M 內存
當我再次運行 Procdump1.50 來脫殼程序時,竟然程序一下子就運行了,根本不象上次那樣提示要我保存 脫殼后的文件,所以我想,可能這些參數有些不合適我的機器,于是我認真分析了每一個參數的真正含義之后,就把參數作了如下的修改:
OPTL1=00000001 這是延遲時間,我設為 1ms
OPTL2=01010101 采用了快速 dump 的工作方式
OPTL3=01010001
OPTL4=00030000
OPTL5=00000000
今次再運行 Procdump1.50 進行脫殼,哈哈!!!可以脫了,然后再雙擊脫殼后的文件,咦,可以執行了, 再用 Wdasm8.93 反匯編分析一下文件,發現基本和原文件相同,只是文件大小有點不同,大了一點,再用了一下軟件的各種功能,一切正常,所以應該說脫殼是成功的,到此,文章也該在此結束了,不過好象還漏了點事,就是用 MakePe1.27 幫助脫殼后的文件作進一步的優化,這就不一一描述了 ,自己看幫助進 行吧! 好了,最后總結一下吧!
完整地加入:
[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 !
我發現對于使用 UPX0.7x 到 UPX0.8x 加殼的軟件,用我的方法都可以成功脫殼。
作者: Ru Feng
信箱: [email protected] (未得作者允許,嚴禁 Email 任何軟件到此信箱)
主頁(一):http://ocq.163.net (楓林居)
主頁(二):http://ocq.yeah.net (最 Cool 的 VB 控件天堂)
主頁(三):http://ocqpat.163.net (我的作品,主要介紹“電子資料庫”軟件)
4、Procdump中文說明書
大家好!早兩天放上了提高篇( 10 )后,大家的反應還不錯,不過對于一些朋友來說, 要想用好 Procdump1.50 ,可能還有點問題,因為它的 Script 的說明書是英文的,對于英文不是 太好的朋友,這就成為一個很大的問題了。昨晚,在白菜的聊天室內,我和 Ding Boy 等高手一 起聊天, Ding Boy 就建議我把 Procdump1.50 的說明書翻譯成中文,方便廣大的朋友學習和使用 Procdump1.50 ,本著我不入地獄,誰入地獄的決心,我就著手了翻譯工作,由于本人的英文也 不是太好!所以在 Procdump1.50 的 Script 說明書的翻譯過程中,難免會有一些錯誤的地方,同 時我的語文水平也不見得好到那里去,有時英文了解什么意思,中文也不知如何表達,所以也 難免有一些詞不達意,還有一些地方,我只能根據意譯的方法來完成了,因為如果一字一字的 合并起來,句子的意思可能不知它說什么。花了三個小時的時間,終于完成了,但為了有點記 念意義,就把譯文放進了提高篇( 11 )當中了,希望大家喜歡!
讀者要求:
你可以閱讀和傳播本文章,但不能對文章的內容作任何的修改,請尊重作者(譯)的勞動。
*********************************
ProcDump32 的 Script 擴展:
*********************************
A) 功能定義:
*************************
1) Look 功能:
這個 Look 功能是在被載入的程序中查找指定的 HEX 字串。它會把找到了的內存地址保存下來以便你可以方便在此內存地址設置斷點。
例:
Look OF85 將用于搜索一個 JNE 或一個長 jump 。你可以通過 BP 命令來設置斷點。
2) ADD 功能:
允許你在當前內存地址上加一個變址值(例:出現于 look 命令或 POS 命令之后)。
3) DEC 功能:
猜測;)
4) REPL 功能
這個功能用于在當前內存中修改內碼(連續的 HEX )(注:它出現在 look 命令之后)。
例:
REPL 9090 將會在你當前的內存位置開始連接放入兩個 NOP 指令。
5) BP 功能
在當前內存位置設置一個斷點。
6) BPX 功能
在指定的位置設置斷點。這個位置與程序開始位置有關。
例:
如果程序的開始位置在 RVA 66000hBPX 2672 就會在 RVA 68672 設置斷點。
7) BPF 功能(用標志位設斷)
這個功能會檢查每一次斷點發生時的標志位的值是否為你所設定的值。斷點的位置為
當前內存地址。
Unset/Set 的內容
*******************
C * C * 進位標志。
P * P * 奇偶標志。
A * A * 輔助進位標志。
Z * Z * 零標志。
S * S * 正負號標志。
D * D * 方向標志。
O * O * 溢出標志。
你可以單獨測試 ONE 旗標。
8) BPC 功能
當經過當前位置的次數達到設定值時發生中斷。
例:
BPC 15 ( 在第 21(15h) 次經過當前位置時中斷 )
9) BPV 功能
當如果寄存器的值到達了你設定的值時中斷。
例:
BPV EAX=5 ( 當特定位置的 EAX=5 時中斷 ) 。
10) MOVE 功能
設置當前 EIP 。加一個參數值給當前 EIP 。但請小心使用它。其實它對于程序沒有做到 什么,只是當你要跳過一些 CRC 檢查時,就要用到它了,它相當于代替一連串的 NOP 指令。
例:
MOVE 14 就會把當前 EIP 變為 EIP+14h 。
11) POS 功能
為所有的功能設置當前內存地址,這個位置與程序開始位置有關。
12) STEP 功能
這個功能是設置一步一步的進行分析。它通常是用于完成跟蹤 dump 過程的。
注意:單步模式就意味著每一行代碼它都進行測試 -> 慢!!所以設置單步模式一般
都放在最后。
13) OBJR 功能
這個功能是設置以基始內存地址為開始進行掃描。對于 LOOK 命令有影響。
14) BPREG 功能
以通過寄存器的值來設置斷點。
15) WALK 功能
執行下一條指令后把控件權交還 ProcDump32 。
16) EIP 功能
設置下一個 EIP 為原來程序的最初進入點。
注意:
在斷點之后,下一個 EIP 就是斷點地址本身。
17) 建立外部幫助文件
通過特殊的參數創建外部文件。這個你指定的 ini 文件是由一些特殊的參數組成和建立的。
它包括:
. 進程的 Pid 。
. 所有寄存器的值包括 EIP 。
. 當前 EIP 的值
例子:
在 script 中:
...
L5=HELP PDHelp.Exe Helper.ini
...
你的 helper 的命令行會包含 <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 個字每來描述 helper 的 EXE 和 INI 文件的路徑,這個只是 ProcDump 的內部限制,而對于 WINDOWS API 來說來說就不能超過 256 個字母。
B) 在 script 中 Options 的格式:
*************************************
Options 是通過 OPTL 開始的,并以 DWORD 形式保存的。
OPTL1=
DWORD : 設定 AutoDump 中的延遲時間,以 ms 為單位。
OPTL2=
BYTE : 自動執行 EIP
BYTE : 忽略錯誤
BYTE : 快速模式 Dump
BYTE : 外部 Predump
OPTL3=
BYTE : 優化 PE
BYTE : 自動計算程式
BYTE : 跟蹤 API
BYTE : 自動分層
OPTL4=
BYTE : 未知模式
BYTE :Import 表類型重建
BYTE : 修復 Header
BYTE : 修復 Relocs
OPTL5=
BYTE : 保留
BYTE : 保留
BYTE : 檢查 Header
BYTE : 合并代碼
為得到更詳細資料 ... 查看 ProcDump Options 的解釋吧。
*****************************************************
1) 添加索引段:
*************************
加一個 Pxx 的聲明 .... 注意 xx 的值是跟接在最后一個的值。
例如:
增加之前
[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
你可以在定義中多加一點默認 options ,添加 OPTLx 的方法也是這樣做,如果你沒有指定默認的 options , ProcDump 會使用常規的那些設置。
作者: Ru Feng (譯)
信箱: [email protected] (未得作者允許,嚴禁 Email 任何軟件到此信箱)
主頁(一):http://ocq.163.net (楓林居)
主頁(二):http://ocq.yeah.net (最 Cool 的 VB 控件天堂)
主頁(三):http://ocqpat.163.net (我的作品,主要介紹“電子資料庫”軟件
(編輯:天命孤獨)
新聞熱點
疑難解答
圖片精選