Asprotect判斷被其加殼的程式的標誌是什麼?---裡面就是。 (1千字)

看雪資料發表於2000-08-06

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誤認為已經加殼。


相關文章