萬立夫
記錄輸入表信息
狐貍尾巴終于露出來了,原來這小子是找我?guī)兔Π。@就是“文藝青年”典型的特點。我告訴他說:“現(xiàn)在的殺毒軟件,主要還是通過特征碼來進行定位。但是這個特征碼定位在什么地方,每個殺毒軟件都有自己的定位方式。比如有的定位在程序的入口點,而有的則定位在程序的輸入表。正是由于定位在這些非常重要的地方,所以一修改就會對程序內(nèi)部進行保護,這樣木馬服務(wù)端程序無法運行也就是很正常的事?!庇谑俏易屌笥疡R上到我的家里,這樣才可以實地對他進行講解。
首先配置一個全新的木馬服務(wù)端程序,如果木馬擁有沒有配置信息的服務(wù)端文件,也可以對這個服務(wù)端文件直接進行免殺操作。接著,運行查殼工具PEiD來查看輸入表的位置,點擊“文件”選項后面的“...”按鈕,在彈出的窗口選擇配置的木馬服務(wù)端程序,這樣PEiD就可以自動分析出木馬服務(wù)端程序的相關(guān)信息(如圖1)。然后點擊“子系統(tǒng)”旁邊的選項按鈕,獲得木馬服務(wù)端程序文件的PE信息內(nèi)容。記錄下“目錄信息”中“導(dǎo)入表”這項里面“RVA”和“大小”選項中的數(shù)值,即000A8000和000033A2就可以了(如圖2)。
朋友這時居然腦殘的問:“記錄這個有什么用?。俊蔽曳薹薜卣f:“當(dāng)然有用,沒有用的話我操作它干嘛!”接著運行系統(tǒng)中的計算器程序,點擊“查看”菜單中的“程序員”命令,這樣計算器程序就換了一種顯示方式。這里我對朋友說:“由于000033A2是一個十六進制的數(shù)值,所以首先選擇窗口中的‘十六進制這個選項。再將000033A2這個信息粘貼到輸入框里面,然后再選擇窗口中的‘十進制這個選項(如圖3)。這樣這個數(shù)值就會顯示為十進制的13218,這說明輸入表的代碼擁有13218個字節(jié)的內(nèi)容?!?/p>
刪除輸入表信息
接下來,我下載并運行《IAT重建工具》這款軟件,因為這款軟件最適合朋友這樣的菜鳥。點擊窗口下方的“選擇文件”按鈕,在彈出的窗口選擇服務(wù)端程序,就可以將它添加到重建工具里面。接著點擊窗口下方的“導(dǎo)出IAT”按鈕,在彈出的窗口隨意設(shè)置一個名稱,這樣就可以將服務(wù)端程序的IAT信息進行保存??吹竭@里朋友有問道:“備份這個東西有什么用啊?”我頭也不抬的回答說:“一會我們需要通過它來重建輸入表?!?/p>
IAT信息備份完成以后,在軟件界面的“DLL名稱”中,選擇其中的KERNEL32.DLL這項。點擊窗口下方的“刪除IAT”按鈕,這樣就可以在服務(wù)端程序里面,將原來默認(rèn)的輸入表信息進行刪除(如圖4)?,F(xiàn)在我對朋友說到:“接下來我們還需要將服務(wù)端程序,輸入表對應(yīng)的那些代碼進行刪除才可以,不然的話殺毒軟件仍然是可以進行查殺的?!笔紫壤镁庉嫻ぞ逤32Asm載入,已經(jīng)被刪除輸入表信息的服務(wù)端程序。
接著在編輯窗口中點擊鼠標(biāo)右鍵中的“跳轉(zhuǎn)”命令,在彈出的“跳轉(zhuǎn)到”窗口的“OFFSET”欄目里面。輸入原來的輸入表地址000A8000后,點擊“確定”按鈕即可自動跳轉(zhuǎn)到該輸入表的位置(如圖5)。通過鼠標(biāo)從這個位置上開始拖動,一邊拖動一般觀察狀態(tài)欄中的數(shù)值大小,當(dāng)發(fā)現(xiàn)顯示為“13218字節(jié)”的時候就停止拖動(如圖6)。然后點擊鼠標(biāo)右鍵并選擇菜單中的“填充”命令,在彈出的窗口中選擇“使用十六進制填充”選項,在填充框中輸入“00”
后點擊“確定”按鈕即可清除舊的輸入表代碼(如圖7)。舊的輸入表代碼信息被刪除后,點擊工具欄中的“保存”按鈕即可。
重新寫入輸入表
這時我提醒朋友:“現(xiàn)在我們并不要馬上退出C32Asm軟件,因為我們需要尋找一處新的輸入表地址。我們就在以前的輸入表地址下面,找到一個全新的輸入表信息的輸入地址,比如我們這里就選擇000B9B60這個地址?!比缓笾匦逻\行“IAT重建工具”軟件,同樣點擊窗口下方的“選擇文件”按鈕,在彈出的窗口選擇剛剛刪除了輸入表代碼的服務(wù)端程序。這時我們可以看到“IAT重建工具”軟件中,所有選項信息的內(nèi)容都是空白的。于是在“RVA轉(zhuǎn)換”中的“文件地址”輸入框中,設(shè)置剛剛找到的輸入表的新地址信息(即000B9B60),這樣重建工具就會自動將其他的選項的數(shù)值顯示出來(如圖8)。
這里,我指著軟件自動生成的其他選項說:“我們需要記下‘RVA地址這個選項,因為以后重新寫入輸入表信息會用到它的。”于是我們馬上點擊窗口下方的“重建IAT”按鈕,在彈出的窗口選擇最早保存的服務(wù)端IAT信息。這時軟件會自動彈出一個“重建引入表”的對話框,將剛剛記錄的“RVA地址”中的信息粘貼到里面,最后再點擊對話框中的“確定”按鈕就可以了(如圖9)。看我這么快就操作完成了,朋友半信半疑的說:“就這么幾步就完成啦?”
我指著操作完成的“IAT重建工具”主界面對他說:“如果在軟件界面的‘DLL名稱中看到KERNEL32.DLL這項,這樣就說明服務(wù)端程序的輸入表已經(jīng)重建完成了。如果在‘DLL名稱里面顯示的都是亂碼,就說明服務(wù)端程序的輸入表沒有重建成功。既然你已經(jīng)來了,我就再免費送你一條技巧。比如你在使用了其他免殺方法成功以后,最好再使用這個方法對輸入表進行重建,這樣就相當(dāng)于對免殺的服務(wù)端程序進行了二度保護?!迸笥岩宦犢澰S道:“我就知道你這個2B青年可不是白當(dāng)?shù)?。?/p>