對幻影v1.5b3中Anti-Debug程式碼的一點分析 (2千字)

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

對幻影v1.5b3中Anti-Debug程式碼的一點分析

【宣告】
我寫文章以交流為主,希望大家在轉載時能保持文章的完整性。

【前言】
不能上網的日子真是難熬,就把幻影加殼的程式分析了一下。最近寫了個"幻影1.5b3解密脫殼的小工具"。今天(2000-08-25)上網一小段時間,就把他發給D.Boy看看。這裡我說一點幻影中的Anti-Debug程式碼。

作者:        ljttt
寫作日期:    2000-08-23

:0041246A 6A00                    push 00000000                <---大迴圈開始處
:0041246C 6A00                    push 00000000
:0041246E 6A00                    push 00000000
:00412470 6A00                    push 00000000
:00412472 6A00                    push 00000000
:00412474 6A00                    push 00000000
:00412476 56                      push esi
:00412477 FF95A3BB4000            call dword ptr [ebp+0040BBA3]        <---這裡的Call呼叫實際上就是呼叫CreateFileA函式
:0041247D 83F8FF                  cmp eax, FFFFFFFF
:00412480 7568                    jne 004124EA

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00412486(C)
|
:00412482 46                      inc esi                <---小迴圈開始
:00412483 803E00                  cmp byte ptr [esi], 00
:00412486 75FA                    jne 00412482                <---小迴圈結束
:00412488 46                      inc esi
:00412489 803E00                  cmp byte ptr [esi], 00
:0041248C 75DC                    jne 0041246A                <---大迴圈結束處
:0041248E EB5A                    jmp 004124EA
..............(省略中間的程式碼)
:004124EA 83F8FF                  cmp eax, FFFFFFFF
:004124ED 7406                    je 004124F5
:004124EF FF956CBF4000            call dword ptr [ebp+0040BF6C]        <---ExitProcess()

我們來看一下幻影是怎樣來超度我們的。
call dword ptr [ebp+0040BBA3]實際上就是CreateFileA函式呼叫。在大迴圈中他反覆地想建立檔案,也就是看你跟蹤他沒有,所以在 cmp eax,FFFFFFFF 後跳轉程式碼處,你就看著辦吧。如果你想繼續跟蹤,就要跳走。 esi 指向的地址有以下檢測內容。

\\.\TRW        <---檢測TRW
\\.\TRW2000    <---檢測TRW2000
\\.\TRWDEBUG    <---檢測TRW2000
\\.\REGVXD    <---檢測RegMON
\\.\NTICE    <---檢測SoftICE
\\.\SICE    <---檢測SoftICE
\\.\VKEYPROD    <---檢測....,這是什麼東東帶的,我還不清楚。:-(
\\.\FILEVXD    <---檢測FileMON

大迴圈結束後,透過判斷eax是否為-1,來確定幻影加殼的程式是否被跟蹤。

【後記】
幻影加殼的程式中破壞了跟蹤環境 int 1 和 int 3 的環境,如果你想直接進行跟蹤,門都沒有。(你有門,快告訴我一聲)。所以必須處理一下,才能動態跟蹤。我80%是靜態分析出來的。看上面的,W32Dasm反彙編的,西西。幻影中有許多值得研究的地方,不過由於這是D.Boy的秘密,不便洩露。所以.....西西。我可不想D.Boy在幻影新版中給我來一段。

Call_killljttt()
{    if( Call_尋找跟蹤者()=="ljttt" || Call_尋找跟蹤者()=="ljtt" )
    {    for(int i=0;i<1000000;i++)
        {    Call_傳送超級龜派氣功("ljttt");
        }
        return 你死去吧!
    }
}

相關文章