欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Getright 5 手動脫殼和重建IAT--第一部分(圖)

互聯(lián)網(wǎng)   發(fā)布時間:2008-10-08 19:05:36   作者:佚名   我要評論
這是一篇Armadillo加殼軟件Getright 5.01的脫殼譯文,我是參照Ricardo Narvaja的“Getright 5 脫殼和重建IAT”的文章以及Bighead[DFCG][YCG]的譯文,一邊實踐一邊再次翻譯的。感謝Ricardo Narvaja和Bighead[DFCG][YCG]。 Armadillo for Dummies: Getright 5 手動脫殼
這些信息被保存在父進(jìn)程的一個緩沖區(qū)從3B8FB0開始,然后它會復(fù)制給子進(jìn)程一個從538000開始的 1000 bytes (BYTES TO WRITE)的塊(block),所以如果我們到了這一步,我們可以很容易理解child的第一個section是完全空的,所以當(dāng)它試圖執(zhí)行到OEP時,它報告一個error因為那兒沒有任何東西,所以 father得到了通知正如我們可以在father的report中看到的,所以它停止了運行,復(fù)制必要的數(shù)據(jù)塊,然后繼續(xù)運行直到下一個error.被復(fù)制的數(shù)據(jù)塊的大小是1000 bytes,所以當(dāng)程序試圖執(zhí)行任何超過這個大小的block外的指令時, 另一個error將會發(fā)生,然后這個error會被通知給father, father會復(fù)制另外1000 bytes的塊block然后繼續(xù).
順便說一下,我們可以假設(shè)第一個error發(fā)生是因為son (壞小子)call了它的入口點OEP,它的值應(yīng)該就在 report上.顯然OEP的值必定在第一個block,father復(fù)制過去來解決son報告的error.
這個塊從538000開始知道538fff.OEP值必定在這些值中. 讓我們看一下REPORT.看轉(zhuǎn)儲窗口(DUMP window) 我們先前已經(jīng)知道了指向report的指針12EFF8.

太好了!在那兒我們至少看到了三次這個值: 538540.數(shù)學(xué)課告訴我538540比538000大,比538fff小 (那些是father試圖拷貝給son的那個塊的起止值)所以我可以確信538540就是child的OEP.
讓我們從API WriteProcessMemory來改變斷點的性質(zhì).知道哪個塊被拷貝不是很好嗎.可以通過下面的方法做到.首先選擇bpx所在的行,按F2移除bpx.
右擊選擇"斷點/條件記錄".現(xiàn)在在對話框中準(zhǔn)確地填入如圖所示的值.這樣做的目的是使我們在記錄窗口中看到所有被father decrypts并拷貝給son的blocks.

第四步: NOP THE CRIPTER CALL
在先前的參考教程s中我們知道,這兒我們是在decripter call.Father為son decrypts了一個block.但是還有一個cripter call用來encrypts或者destroys已使用的blocks來避免被轉(zhuǎn)儲dump.現(xiàn)在的任務(wù)是如何找到這個call并把它nop掉.
我現(xiàn)在在WriteProcessMemory API,所以我打開"呼叫堆棧窗口"(Alt K)在那兒我可以看到:

在這個"呼叫堆棧窗口"越靠上面的是越最新被執(zhí)行的.從CALLED FROM 我們可以看到5F949E是father calls API的地方. 如果我們向下看,我們可以看到另一個call.所以我們獲得了decripter call的offset.
DECRIPTER CALL= 5F88D1
通過"前往 表達(dá)" 5F88D1跳到那兒 ,或者左鍵雙擊它.

這是好的CALL,它用來decrypts.現(xiàn)在去找壞的那個,稍稍向下翻屏或者右擊選擇"查找參考/呼叫目標(biāo)" 選擇出現(xiàn)的兩個參考中的另一個.

它在這兒呢!
重新加密的call--ENCRIPTER CALL = 5F8A24

現(xiàn)在我們把它nop掉.我們選擇這個call按空格寫入nop.


相關(guān)文章

最新評論