180221 逆向 脫殼技術(4)

2021-08-17 08:27:23 字數 768 閱讀 5144

1625-5 王子昂 總結《2023年2月21日》 【連續第508天總結】

a. 脫殼技術(4) 重建輸入表

b.外殼程式會破壞原程式的輸入表,因此dump記憶體以後必須要修復輸入表才能正常執行

iat結構用於儲存api的實際位址

pe檔案在初始化輸入表時,windows裝載器首先搜尋originalfirstthunk,如果存在,引導程式迭代搜尋陣列中的每個指標,找到每個image_import_byu_name結構所指向的輸入函式的位址,然後載入器用函式真正入口位址來替代由firstthunk指向的image_thunk_data陣列裡的元素值。

外殼程式通常會自己起到裝載器的作用來填充原程式的iat,因此需要根據iat來恢復dump出來的程式的輸入表

有的外殼為了反脫殼,會將原程式的iat改為自己的hook函式的位址,這樣使得原程式在呼叫匯入函式的時候仍然會把控制權交給外殼,外殼此時可以進行反除錯、反dump等等

應對方法就是跟蹤hook函式的處理方法,得到真正的iat位址並回填還原

重建輸入表的關鍵就在於iat的獲得,一般程式的iat是連續排列的,以乙個dword字的0作為結束,因此只要確定iat某個點,就能獲得整個iat位址和大小

通過動態除錯,找到匯入函式的呼叫時就能發現iat位址

上下翻動即可找到iat的頭尾,然後dump出來並進行處理還原iid陣列,最後塞到原程式的檔案頭里即可

importrec可以自動完成處理工作,只要告訴它iat的位址和大小即可重建輸入表

c. 明日計畫

脫殼技術(5)

180226 逆向 脫殼技術(9)

1625 5 王子昂 總結 2018年2月26日 連續第513天總結 a.脫殼技術 9 加密殼的一些技術 b.這款殼由於過於經典,因此在看雪等論壇上有多篇分析文章,不再贅述脫殼方法 主要列舉一些技術 emulate standard system functions 它將api入口一段 抽到外殼裡,...

170624 逆向 失敗的脫殼

1625 5 王子昂 總結 2017年6月24日 連續第265天總結 a.脫殼前瞻 b.明天考試於是基本都在複習高數 拽了乙個?難度的crackme試試,拖入peid發現第一次遇到殼 20markus 20 20laszlo class ht day item search keyword titl...

iOS逆向 frida一鍵脫殼

前沿ios砸殼方式很多 dumpdecrypted,clutch,frida,本篇介紹frida。1 準備工作 1.1 ios端 1.2 mac 端1.2.1 安裝homebrew usr bin ruby e curl fssl 1.2.2 安裝python brew install python...