Asprotect判斷被其加殼的程式的標誌是什麼?---裡面就是。
【前言】
這次就不寫什麼作者等等沒意思的東東。只希望大家多多交流。只可惜我以前問的問題一直沒人回答。
Asprotect是如何判斷被其加殼的程式呢?我找到以下一處。(可能還有其他的地方,我沒有進行更多的測試)
以下是程式程式碼。找個PE結構說明一對照,很簡單。
:0043F85C 8B4034
mov eax, dword ptr [eax+34] <---得到IMAGE_NT_HEADERS首地址
:0043F85F 05F4000000 add eax,
000000F4
:0043F864 F6400210 test
[eax+02], 10 <---判斷位元組是否為10
:0043F868 7403
je 0043F86D <---相同,就說明是被其加殼過的程式
:0043F86A B001
mov al, 01
:0043F86C C3
ret
:0043F86D 33C0
xor eax, eax <---設標誌了
:0043F86F C3
ret
【說明】
由於脫殼後的程式一般比原程式要大得多,因此一旦把程式脫殼破解後,總會用壓縮軟體重新壓縮。但是由於對Asprotect加殼的程式脫殼後文該標誌沒有改變。因此你想重新加殼的話,就要改變此標誌。
以下是步驟說明:
由於脫殼後的程式一般比原程式要大得多,因此一旦把程式脫殼破解後,可以用以下方法重新加殼。
1、用Hex WorkShop開啟脫殼後的可執行檔案。
2、把游標定位到偏移176地址處。(因為一般80處為PE標誌。80+F4+2=176)
3、這時加殼過的程式應該看到10,修改10為00即可。
4、用Asprotect重新加殼。
【後記】
另外,對已經用Asprotect加殼過的程式就不要改了。Asprotect再加殼時會出錯。要不然,每個軟體作者都用此法把程式加個十幾遍殼,那還讓大家活不活了
;-) 。當然了,相反,你也可以改變此標誌,使未加殼的程式讓Asprotect誤認為已經加殼。