對Asprotect脫殼的一點總結 (20千字)
對Asprotect脫殼的一點總結
作者: (職位空缺)上次忘了留下聯絡電話,這次補上,歡迎各位垂詢,小弟我在此靜候佳音。熱線電話:818-9481818。...你知道這是哪兒的電話號碼。.......公廁電話.........
@#$@#$ 燻倒 @#$@#$....
寫作日期: 2000-08-11
【宣告】
我寫文章以交流為主,希望大家在轉載時能保持文章的完整性。
【前言】
從我知道的情況來看,對Asprotect加殼的程式大致可以分為三類:(這種分類方法不具有權威性,只是我自己為了區別而已)
1、這類程式只檢測SICE,SIWVID,SIWDEBUG,記憶體中可以得到完整的import table。一次跟蹤可完成脫殼。
2、這類程式檢測SICE,SIWVID,SIWDEBUG和BCHK,記憶體中也可以得到完整的import table。一次跟蹤也可完成脫殼。
3、這類程式同 2 ,只是記憶體中無法得到完整的import table。因此需要其他手段來輔助得到import table。可能需要幾次跟蹤完成脫殼。
以上三類程式脫殼方式基本相同。因此我把跟蹤過程中幾個關鍵的特徵說明一下。
【分析】
①尋找合適的中斷進入加殼程式。(我稱為找進入點)
(注:在跟蹤之前,最好用ICEPatch修補你的SoftICE,否則你就要手動跳過防跟蹤程式碼了)
對於 1 類程式,一般可以用以下方式進入:
Ctrl-D中斷,進入SoftICE。下指令
bpx CreateFileA do "p ret"
然後按F5返回Windows,執行加殼程式,中斷在我們所設下的中斷處。
以後的跟蹤可以直接繼續,看見不遠處有 ret 語句還可以按 F12 鍵快速返回到上一層呼叫中。
對於 2 、3 兩類程式,一般可以用以下方式進入(操作方法同上,只是設下的斷點不同)。這次我們設斷點
bpint 3
以後的跟蹤與上有些不同,在《找Entry Point的又一方法 -----針對Asprotect v1.0加殼的程式》一文中我已有說明,這裡簡要說明一下。
中斷後一般你可以看到類似如下的螢幕:
015F:004BF23C CC
INT 3
<--你中斷在此
015F:004BF23D EB02
JMP 004BF241
015F:004BF23F E9025DEB02 JMP
03374F46
015F:004BF244 E9FF33C05A JMP
5B0C2648
015F:004BF249 59
POP ECX
015F:004BF24A 59
POP ECX
015F:004BF24B 648910 MOV
FS:[EAX],EDX
015F:004BF24E EB0A
JMP 004BF25A
015F:004BF250 E91305FFFF JMP
004AF768 <--注意這個跳轉語句,int 3過後就要到這裡繼續了。
015F:004BF255 E8AA07FFFF CALL
004AFA04
015F:004BF25A 8A1518514C00 MOV
DL,[004C5118]
015F:004BF260 8B45F8 MOV
EAX,[EBP-08]
把游標移到第五個Jmp語句以後,按F7鍵。好,以後的跟蹤和上面的方法相同。
②檢測CRC的地方
在按了幾個 F12後,一般就到了檢測CRC的程式碼地方,這裡我們不需要做什麼,只是讓大家明白,如果你改到了程式某處,在這裡就要關心一下了。
015F:004C6B74 EBF0
JMP 004C6B66
015F:004C6B76 8B45EC MOV
EAX,[EBP-14] <--注意此處
015F:004C6B79 3B45F0 CMP
EAX,[EBP-10] <--注意此處
015F:004C6B7C 7443
JZ 004C6BC1 <--如果比較的結果相同,就跳轉了,否則就到下面顯示File
corrupted! 的框框了
015F:004C6B7E 8A155CC94C00 MOV
DL,[004CC95C]
015F:004C6B84 8B45F8 MOV
EAX,[EBP-08]
015F:004C6B87 E848E4FFFF CALL
004C4FD4
015F:004C6B8C 8945F4 MOV
[EBP-0C],EAX
015F:004C6B8F 837DF400 CMP
DWORD PTR [EBP-0C],00
015F:004C6B93 742C
JZ 004C6BC1
015F:004C6B95 8D85E4FEFFFF LEA
EAX,[EBP-011C]
015F:004C6B9B 8D95E9FEFFFF LEA
EDX,[EBP-0117]
大家注意其中三句的特徵,以後跟蹤時就知道這裡是比較CRC的地方就行了。對於做inline patch的朋友就要記住了。
③獲得 import table 和 Entry Point
在按過幾下 F12 鍵後,就會來到類似如下程式碼的地方,這裡我以ARPR.EXE來做例子,來一段段的分析一下,許多Asprotect加殼的程式都有這樣一段,熟悉了特徵以後,再對Asprotect脫殼你也可以很輕鬆了。
015F:004C6EAB E828FAFFFF CALL
004C68D8
015F:004C6EB0 33C0
XOR EAX,EAX
<--你來到此處,一般 XOR EAX,EAX 是特徵.
015F:004C6EB2 5A
POP EDX
015F:004C6EB3 59
POP ECX
015F:004C6EB4 59
POP ECX
015F:004C6EB5 648910 MOV
FS:[EAX],EDX
015F:004C6EB8 EB11
JMP 004C6ECB
<--跳到下一段
015F:004C6EBA E9E900FFFF JMP
004B6FA8
015F:004C6EBF 33C0
XOR EAX,EAX
015F:004C6EC1 E89EEFFFFF CALL
004C5E64
015F:004C6EC6 E87903FFFF CALL
004B7244
以後我們重點關注幾個Call呼叫,以後再跟蹤這類Asprotect加殼的程式就有經驗了。
015F:004C6ECB 33C0
XOR EAX,EAX
015F:004C6ECD 55
PUSH EBP
015F:004C6ECE 68086F4C00 PUSH
004C6F08
015F:004C6ED3 64FF30 PUSH
DWORD PTR FS:[EAX]
015F:004C6ED6 648920 MOV
FS:[EAX],ESP
015F:004C6ED9 8B4508 MOV
EAX,[EBP+08]
015F:004C6EDC 8B00
MOV EAX,[EAX]
015F:004C6EDE 50
PUSH EAX
015F:004C6EDF B804464C00 MOV
EAX,004C4604
015F:004C6EE4 50
PUSH EAX
015F:004C6EE5 6A00
PUSH 00
015F:004C6EE7 8B4508 MOV
EAX,[EBP+08]
015F:004C6EEA 8D4824 LEA
ECX,[EAX+24]
015F:004C6EED 8B4508 MOV
EAX,[EBP+08]
015F:004C6EF0 8D500C LEA
EDX,[EAX+0C]
015F:004C6EF3 8B4508 MOV
EAX,[EBP+08]
015F:004C6EF6 8B4008 MOV
EAX,[EAX+08]
015F:004C6EF9 E842F0FFFF CALL
004C5F40 <--注意這個Call呼叫
015F:004C6EFE 33C0
XOR EAX,EAX
015F:004C6F00 5A
POP EDX
015F:004C6F01 59
POP ECX
015F:004C6F02 59
POP ECX
015F:004C6F03 648910 MOV
FS:[EAX],EDX
015F:004C6F06 EB13
JMP 004C6F1B
<--跳到下一段
015F:004C6F08 E99B00FFFF JMP
004B6FA8
015F:004C6F0D 66B80B00 MOV
AX,000B
015F:004C6F11 E84EEFFFFF CALL
004C5E64
015F:004C6F16 E82903FFFF CALL
004B7244
在以上要注意的Call呼叫處我們可以停下來,下指令
d 401000 (說明: 401000由來為 <Image Base>+<First Section
RVA> )
我們可以看到在沒有執行這個Call呼叫之前,資料視窗顯示的為 ?? ??。這說明這段程式碼還沒有載入到記憶體中。如果按 F10鍵執行這個呼叫過後,資料視窗就會顯示各種十六進位制資料。這說明這個Call呼叫的基本功能為載入資料。
(按上段)
015F:004C6F1B 33C0
XOR EAX,EAX
015F:004C6F1D 55
PUSH EBP
015F:004C6F1E 68716F4C00 PUSH
004C6F71
015F:004C6F23 64FF30 PUSH
DWORD PTR FS:[EAX]
015F:004C6F26 648920 MOV
FS:[EAX],ESP
015F:004C6F29 8B4508 MOV
EAX,[EBP+08]
015F:004C6F2C 8B00
MOV EAX,[EAX]
015F:004C6F2E 50
PUSH EAX
015F:004C6F2F B8485E4C00 MOV
EAX,004C5E48
015F:004C6F34 50
PUSH EAX
015F:004C6F35 B85C5E4C00 MOV
EAX,004C5E5C
015F:004C6F3A 50
PUSH EAX
015F:004C6F3B 6A00
PUSH 00
015F:004C6F3D B8645E4C00 MOV
EAX,004C5E64
015F:004C6F42 50
PUSH EAX
015F:004C6F43 B8A4894B00 MOV
EAX,004B89A4
015F:004C6F48 50
PUSH EAX
015F:004C6F49 8B4508 MOV
EAX,[EBP+08]
015F:004C6F4C 8B4020 MOV
EAX,[EAX+20]
015F:004C6F4F 50
PUSH EAX
015F:004C6F50 8B4508 MOV
EAX,[EBP+08]
015F:004C6F53 8D4824 LEA
ECX,[EAX+24]
015F:004C6F56 8B4508 MOV
EAX,[EBP+08]
015F:004C6F59 8B500C MOV
EDX,[EAX+0C]
015F:004C6F5C 8B4508 MOV
EAX,[EBP+08]
015F:004C6F5F 8B4008 MOV
EAX,[EAX+08]
015F:004C6F62 E81DF1FFFF CALL
004C6084 <--注意這個Call呼叫
015F:004C6F67 33C0
XOR EAX,EAX
015F:004C6F69 5A
POP EDX
015F:004C6F6A 59
POP ECX
015F:004C6F6B 59
POP ECX
015F:004C6F6C 648910 MOV
FS:[EAX],EDX
015F:004C6F6F EB13
JMP 004C6F84
<--跳到下一段
015F:004C6F71 E93200FFFF JMP
004B6FA8
015F:004C6F76 66B80C00 MOV
AX,000C
015F:004C6F7A E8E5EEFFFF CALL
004C5E64
015F:004C6F7F E8C002FFFF CALL
004B7244
我們再來關注一下上面這個要注意的Call呼叫。如果你用 F10 鍵帶過這個Call呼叫。會發現資料視窗的內容改變了。好我們再來看看 idata Section所在位置的情況,下指令
d 418000 (注:ARPR.EXE的Image Base為 400000,idata Section 的 RVA
為 18000)
可以看到資料視窗顯示的全是 00,向下翻頁,仍然是 00,這說明這個Call呼叫的功能可能是解壓還原始碼,並且初始化 idata Section。
(接上段)
015F:004C6F84 B84B894B00 MOV
EAX,004B894B
015F:004C6F89 40
INC EAX
015F:004C6F8A 890530DA4C00 MOV
[004CDA30],EAX
015F:004C6F90 B82B894B00 MOV
EAX,004B892B
015F:004C6F95 890534DA4C00 MOV
[004CDA34],EAX
015F:004C6F9B FF0534DA4C00 INC
DWORD PTR [004CDA34]
015F:004C6FA1 33C0
XOR EAX,EAX
015F:004C6FA3 55
PUSH EBP
015F:004C6FA4 6805704C00 PUSH
004C7005
015F:004C6FA9 64FF30 PUSH
DWORD PTR FS:[EAX]
015F:004C6FAC 648920 MOV
FS:[EAX],ESP
015F:004C6FAF B8485E4C00 MOV
EAX,004C5E48
015F:004C6FB4 50
PUSH EAX
015F:004C6FB5 B8AC694B00 MOV
EAX,004B69AC
015F:004C6FBA 50
PUSH EAX
015F:004C6FBB A130DA4C00 MOV
EAX,[004CDA30]
015F:004C6FC0 50
PUSH EAX
015F:004C6FC1 A134DA4C00 MOV
EAX,[004CDA34]
015F:004C6FC6 50
PUSH EAX
015F:004C6FC7 B8645E4C00 MOV
EAX,004C5E64
015F:004C6FCC 50
PUSH EAX
015F:004C6FCD B894954B00 MOV
EAX,004B9594
015F:004C6FD2 50
PUSH EAX
015F:004C6FD3 B874954B00 MOV
EAX,004B9574
015F:004C6FD8 50
PUSH EAX
015F:004C6FD9 B834904B00 MOV
EAX,004B9034
015F:004C6FDE 50
PUSH EAX
015F:004C6FDF 8B4508 MOV
EAX,[EBP+08]
015F:004C6FE2 8B4020 MOV
EAX,[EAX+20]
015F:004C6FE5 50
PUSH EAX
015F:004C6FE6 B9E0944B00 MOV
ECX,004B94E0
015F:004C6FEB 8B4508 MOV
EAX,[EBP+08]
015F:004C6FEE 8B5014 MOV
EDX,[EAX+14]
015F:004C6FF1 8B4508 MOV
EAX,[EBP+08]
015F:004C6FF4 8B00
MOV EAX,[EAX]
015F:004C6FF6 E8A5F5FFFF CALL
004C65A0 <--注意這個Call呼叫
015F:004C6FFB 33C0
XOR EAX,EAX
<--這裡一般就是Dump import table的地方
015F:004C6FFD 5A
POP EDX
015F:004C6FFE 59
POP ECX
015F:004C6FFF 59
POP ECX
015F:004C7000 648910 MOV
FS:[EAX],EDX
015F:004C7003 EB13
JMP 004C7018
<--跳到下一段
015F:004C7005 E99EFFFEFF JMP
004B6FA8
015F:004C700A 66B80D00 MOV
AX,000D
015F:004C700E E851EEFFFF CALL
004C5E64
015F:004C7013 E82C02FFFF CALL
004B7244
我們來看看上面這個要注意的Call呼叫有什麼作用。如果你用 F10 鍵帶過這個Call呼叫,再看看資料視窗的變化,
我們向下翻頁看看,這次不再是 00,變成各種資料。這說明這個Call呼叫的功能可能是還原 idata Section,因此在該呼叫後的 XOR EAX,EAX就是我們Dump出
import table的地方。對於前面劃分出的三類程式中前兩類,都可以在此處看到完整的 import table,是Dump出 import table的時候了,可以下指令
/dump <Image Base + idata Section RVA> <idata Section Size> <FileName>
(這是ICEDump 1.61的指令用法)
而對於第三類程式則要用其他方法。(補充說明:對於第三類程式的 import table重建問題由於我也沒有找到一種統一的方法。只能不同情況不同對待。因此以後單獨寫文說明。)
如果你喜歡用 bpm 跟蹤 idata Section的變化來做進入點。那麼一般在按幾個 F12鍵後,就在處了。
(接上段)
015F:004C7018 33C0
XOR EAX,EAX
015F:004C701A 55
PUSH EBP
015F:004C701B 6838704C00 PUSH
004C7038
015F:004C7020 64FF30 PUSH
DWORD PTR FS:[EAX]
015F:004C7023 648920 MOV
FS:[EAX],ESP
015F:004C7026 8B4508 MOV
EAX,[EBP+08]
015F:004C7029 E8D6FCFFFF CALL
004C6D04 <--注意這個Call呼叫
015F:004C702E 33C0
XOR EAX,EAX
015F:004C7030 5A
POP EDX
015F:004C7032 59
POP ECX
015F:004C7033 648910 MOV
FS:[EAX],EDX
015F:004C7036 EB13
JMP 004C704B
<--跳到下一段
015F:004C7038 E96BFFFEFF JMP
004B6FA8
015F:004C703D 66B81100 MOV
AX,0011
015F:004C7041 E81EEEFFFF CALL
004C5E64
015F:004C7046 E8F901FFFF CALL
004B7244
如果我們用 F10 鍵帶過這個Call呼叫,會發現資料視窗的內容又有所變化。不過這次我們看到的資料都比較大。如果你進入此呼叫跟蹤會發現它的作用就是獲取idata
Section中的各個函式的指標放入此處,如果你對可執行檔案的載入機制有所瞭解的話,那麼就知道這是加殼程式在做Windows的工作,把各個Fircc轉換成真正函式入口指標。因此過了此處,你再就無法獲得"乾淨"的import
table了。
(接上段)
015F:004C704B 33C0
XOR EAX,EAX
015F:004C704D 55
PUSH EBP
015F:004C704E 6884704C00 PUSH
004C7084
015F:004C7053 64FF30 PUSH
DWORD PTR FS:[EAX]
015F:004C7056 648920 MOV
FS:[EAX],ESP
015F:004C7059 B8645E4C00 MOV
EAX,004C5E64
015F:004C705E 50
PUSH EAX
015F:004C705F 8B4508 MOV
EAX,[EBP+08]
015F:004C7062 8B4810 MOV
ECX,[EAX+10]
015F:004C7065 8B4508 MOV
EAX,[EBP+08]
015F:004C7068 8B5004 MOV
EDX,[EAX+04]
015F:004C706B 8B4508 MOV
EAX,[EBP+08]
015F:004C706E 8B00
MOV EAX,[EAX]
015F:004C7070 E833F6FFFF CALL
004C66A8 <---注意此Call呼叫
015F:004C7075 A22CDA4C00 MOV
[004CDA2C],AL
015F:004C707A 33C0
XOR EAX,EAX
015F:004C707D 59
POP ECX
015F:004C707E 59
POP ECX
015F:004C707F 648910 MOV
FS:[EAX],EDX
015F:004C7082 EB13
JMP 004C7097
<--跳到下一段
015F:004C7084 E91FFFFEFF JMP
004B6FA8
015F:004C7089 66B80E00 MOV
AX,000E
015F:004C708D E8D2EDFFFF CALL
004C5E64
015F:004C7092 E8AD01FFFF CALL
004B7244
對於此Call呼叫是什麼作用,我現在還說不出來。如果你用 F10 鍵帶來,一點事沒有。但是如果你是一個好奇心太強的人,按 F8 鍵進入看個究竟的話,那麼我恭喜你,你進入了
Asprotect 的圈套。也許你會在帶過某個Call呼叫時程式執行了。因此你一定以為其中有 Entry Point ,於是重新來過,又進入那個Call呼叫看看,如此反覆,也許你會某一層中發現
Entry Point,果真如此,那麼我十分欽佩你的精神。我在跟蹤到第四層時依然沒有找到,就放棄了。至今我還沒有弄明白這種圈套是怎麼實現的。不過Asprotect作者一定很高興他寫的程式碼一行也沒有浪費。
(接上段)
015F:004C7097 8B4508 MOV
EAX,[EBP+08]
015F:004C709A 8D4818 LEA
ECX,[EAX+18]
015F:004C709D 8B4508 MOV
EAX,[EBP+08]
015F:004C70A0 8B10
MOV EDX,[EAX]
015F:004C70A2 8B4508 MOV
EAX,[EBP+08]
015F:004C70A5 8B401C MOV
EAX,[EAX+1C]
015F:004C70A8 E887F6FFFF CALL
004C6734 <---注意此Call呼叫
015F:004C70AD 5F
POP EDI
015F:004C70AE 5E
POP ESI
015F:004C70AF 5B
POP EBX
015F:004C70B0 5D
POP EBP
015F:004C70B1 C20400 RET
0004
如果你是個懶人,直接到此。那麼我說你真有福氣。這個Call呼叫一定要按 F8 鍵進入。其中你可以找到 Entry Point。
④獲取整個記憶體映象
在進入Call呼叫後,對於前兩類程式和後一類程式的情況有所不同
(注:這裡以跟蹤BrickShooter時擷取的螢幕和跟蹤ARPR時擷取的螢幕做一比較)
跟蹤BrickShooter的情況(代表前兩類程式,以下簡稱 ㈠)
015F:0056EB4A 8BC0 MOV EAX,EAX
015F:0056EB4C 55 PUSH EBP
015F:0056EB4D 8BEC MOV EBP,ESP
015F:0056EB4F 83C4F8 ADD ESP,-08
015F:0056EB52 53 PUSH EBX
015F:0056EB53 8BDA MOV EBX,EDX
015F:0056EB55 8945FC MOV [EBP-04],EAX
015F:0056EB58 8B01 MOV EAX,[ECX]
015F:0056EB5A 8945F8 MOV [EBP-08],EAX
015F:0056EB5D 6A04 PUSH 04
015F:0056EB5F B944565700 MOV ECX,00575644
015F:0056EB64 8D45F8 LEA EAX,[EBP-08]
015F:0056EB67 BA04000000 MOV EDX,00000004
015F:0056EB6C E803E7FFFF CALL 0056D274 <--Call呼叫
015F:0056EB71 015DF8 ADD [EBP-08],EBX
015F:0056EB74 EB01 JMP 0056EB77 <--JMP跳轉語句
跟蹤ARPR的情況(代表後一類程式,以下簡稱 ㈡)
015F:004C6732 8BC0 MOV EAX,EAX
015F:004C6734 55 PUSH EBP
015F:004C6735 8BEC MOV EBP,ESP
015F:004C6737 83C4F0 ADD ESP,-10
015F:004C673A 53 PUSH EBX
015F:004C673B 56 PUSH ESI
015F:004C673C 57 PUSH EDI
015F:004C673D 894DF0 MOV [EBP-10],ECX
015F:004C6740 8955F4 MOV [EBP-0C],EDX
015F:004C6743 8945FC MOV [EBP-04],EAX
015F:004C6746 33C0 XOR EAX,EAX
015F:004C6748 55 PUSH EBP
015F:004C6749 6871674C00 PUSH 004C6771
015F:004C674E 64FF30 PUSH DWORD PTR FS:[EAX]
015F:004C6751 648920 MOV FS:[EAX],ESP
015F:004C6754 33C9 XOR ECX,ECX
015F:004C6756 B201 MOV DL,01
015F:004C6758 B8088A4B00 MOV EAX,004B8A08
015F:004C675D E8AE3CFFFF CALL 004BA410 <--第一個Call呼叫
015F:004C6762 E86D0AFFFF CALL 004B71D4 <--第二個Call呼叫
015F:004C6767 33C0 XOR EAX,EAX
015F:004C6769 5A POP EDX
015F:004C676A 59 POP ECX
015F:004C676B 59 POP ECX
015F:004C676C 648910 MOV FS:[EAX],EDX
015F:004C676F EB0A JMP 004C677B <--JMP跳轉語句
對比我們可以發現,㈠ 中只有一個Call呼叫就跟著一個JMP跳轉語句。㈡ 中有兩個Call呼叫才跟著一個JMP跳轉語句。
對於 ㈠ 在JMP跳轉過後,就可以很快找到Entry Point。(當然這以後要按 F8 鍵跟蹤為妙) 對於 ㈡ 則不同,請記住這個特徵,如果有兩個連續的Call呼叫,在跟蹤時,在第二個Call呼叫處按 F8進入看看,如果你發現類似以下程式碼
015F:004B71D2 8BC0 MOV EAX,EAX
015F:004B71D4 5A POP EDX
015F:004B71D5 54 PUSH ESP
015F:004B71D6 55 PUSH EBP
015F:004B71D7 57 PUSH EDI
015F:004B71D8 56 PUSH ESI
015F:004B71D9 53 PUSH EBX
015F:004B71DA 50 PUSH EAX
015F:004B71DB 52 PUSH EDX
015F:004B71DC 54 PUSH ESP
015F:004B71DD 6A07 PUSH 07
015F:004B71DF 6A01 PUSH 01
015F:004B71E1 68CEFAED0E PUSH 0EEDFACE
015F:004B71E6 52 PUSH EDX
015F:004B71E7 E914E3FFFF JMP KERNEL32!RaiseException
015F:004B71EC C3 RET
那麼這就是我在《找Entry Point的又一方法 -----針對Asprotect v1.0加殼的程式》中所介紹的異常地方了。按該文可以繼續跟蹤找到Entry Point。在經過三個異常後,會發現同 ㈠ 一樣的程式碼特徵,只有一個Call呼叫和JMP語句了,那麼以後你可以放心大膽地跟蹤了,沒有什麼陷阱了。(當然在Call呼叫處不要用F10帶過,那可能這只是一個簡單的JMP語句的變形而已)
在Entry Point處我們可以下指令得到全部記憶體映象
/dump <Image Base> <Image Size> <FileName> (注:此為ICEDump 1.61用法)
以上介紹了跟蹤部分的所有要注意的地方,以及Asprotect加殼程式的一點特徵。下面說一下我們要做的修補工作。
(至於你用 ProcDump 還是 PE Editor 隨你的愛好,我一般用 PEditor,它太棒了。簡直就是為脫殼設計的)
首先,把 各個Section的 Raw Offset 改成 Virtual Offset 大小, Raw Size 改成 Virtual Size大小。
然後,把 Entry Point 改成你發現的大小 。比如我發現的ARPR.EXE的Entry Point為401000,由於Image Base為400000,所以Entry Point就改為 1000,(因為 401000-400000=1000)。
然後,再把 import table 的 RVA改成 idata Section的 RVA,Size改成 idata Section的Size大小。
最後,我們還有一樣工作要做,就是要把 我們得到的記憶體映象檔案中的idata Section部分用我們前面方法得到的idata Section檔案替換掉。你可以用Hex WorkShop來做這項工作,它做起來很方便。
【後記】
因為我跟蹤的Asprotect加殼的程式不算多,所以很可能以偏概全。不過對於跟蹤某些Asprotect加殼的程式你可以依此做一參考。
相關文章
- Thebat!139脫殼詳情及對Asprotect加殼保護的一點小結
(4千字)2000-03-27BAT
- FTPrint的脫殼(asprotect) (2千字)2001-02-05FTP
- 流放一文。 對Asprotect v1.1的手動脫殼的一點分析 (9千字)2000-10-27
- ASPROtect 1.22加殼的ahaview2.0脫殼 (5千字)2002-03-24View
- telock脫殼總結 (12千字)2001-09-27
- 對PECompact加殼的DLL脫殼的一點分析 (7千字)2000-08-17
- 脫殼----對用Petite2.2加殼的程式進行手動脫殼的一點分析
(5千字)2000-07-27
- 手動脫掉Asprotect的殼,(給初學者的) (9千字)2002-01-24
- Asprotect 1.2x 加殼的 Advanced Direct
Remailer 2.17 脫殼 (3千字)2002-06-20REMAI
- 一點脫殼經驗。(7千字)2001-04-20
- ASProtect 1.23
b18脫殼淺談 (5千字)2015-11-15
- 脫殼----對用pecompact加殼的程式進行手動脫殼
(1千字)2000-07-30
- 關於用ASProtect v1.3加殼軟體的脫殼方法體會 (5千字)2001-11-21
- Asprotect保護的程式脫殼後的修正--DialogBoxIndirectParamA
(7千字)2001-09-09
- aspr脫殼總結(部分適用於其他殼保護) (3千字)2001-09-14
- ASProtect V1.2脫殼――Asterisk Password
Recovery XP2015-11-15AST
- 手動脫ASProtect 的殼-Synchromagic
v3.5 build 5572003-08-03UI
- 小甜餅 --- 有關新版Asprotect加殼程式的脫殼的又一種思路
(798字)2000-09-10
- 對Crunch v1.1加殼程式的手動脫殼及反跟蹤程式碼的一點分析
(15千字)2000-10-02
- 股市風暴4.0的外殼分析與脫殼方法(一) (7千字)2001-06-10
- 用OD對Aspr加殼程式的手動脫殼及修復 (7千字)2015-11-15
- 脫Crunch/PE -> BitArts的殼。 (3千字)2002-05-03
- jdpack的脫殼及破解 (5千字)2002-06-25
- HTMLZip 1.0 beta 的脫殼 (3千字)2001-02-03HTML
- PicturesToExe3.51的脫殼 (2千字)2001-04-22REST
- 如何跟蹤ASProtect外殼加密過的程式? (7千字)2001-04-13加密
- Asprotect1.23 Rc4 之SynchroMagic脫殼修復+破解2015-11-15
- 脫Flashfxp 1.3 build 780的殼 (10千字)2001-08-15UI
- 脫PicturesToExe v3.60的殼 (1千字)2001-09-15REST
- ASProtect
1.23 RC4 - 1.3.08.24-[Awicons V9.20 ]脫殼AND破解2004-07-01
- 找Entry Point的又一方法 -----針對Asprotect
v1.0加殼的程式 (7千字)2000-08-03
- 先分析,再脫殼(二) (13千字)2003-09-04
- WinKawaks 1.45脫殼筆記
(10千字)2002-08-12筆記
- The Bat! 1.39脫殼筆記 (1千字)2000-03-12BAT筆記
- 脫Advanced Email Extractor PRO的殼 (19千字)2001-08-19AI
- 殼的工作原理脫殼2013-04-10
- 手動脫殼的教程(由petite v2.2加殼) (4千字)2001-11-26
- ArtCursors 3.03 ASPR殼軟體脫殼後修整記 (10千字)2015-11-15