請進! (1千字)
Asprotect1.0針對只有.rdata section的編碼方式,是它會將Image_Thunk_Data這個矩陣結構放在.rdata section的開頭,即004C0000開始,Size是728h
而Import1.bin則是Image_Thunk_Data所對應的API位址; 我們為什麼要將API
的位址粘貼至Image_Thunk_Data中呢? 因為Asprotect1.0(1.07以上編碼方式
又不同)會將Image_Thunk_Data分成兩類:
(1)01xxxxxx <-- Asprotect的轉換Code
(2)API位址
舉個例子來說明: 例如iGame.exe它要調用RegCloseKey這個API時, 它的代碼
是這樣的:
Call [004C0000] <-- (A)
其中的[004C0000]在未脫殼時, 其值是01xxxxxx,上面的Code(A)可寫成
Call 01xxxxxx, 再經Asprotect的轉換會指向RegCloseKey的位址即
BFEA1644, 其時它最終可寫成
Call BFEA1644
但是當我們脫殼後,01xxxxxx的Code以不復存在,所以我們才用BFEA1644去取代
01xxxxxx,讓程式能直接去Call這個API,基本原理就是那麼簡單.
最後你問到iGame.exe的Raw Offset是26E00怎麼會粘貼至4B600處, 你仔細看文章,我寫的是粘貼至iGdump.exe(即我們dump下來的程式)它的Raw Offset是4B600,這是Procdump分配的, 若還有疑問我建議你再多讀點PE結構的
資料,會比較容易吸收, 祝好運!!!
JOHNSON 2000\10\09
