日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

恶意代码分析-第十八章-加壳与脱壳

發布時間:2024/1/18 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 恶意代码分析-第十八章-加壳与脱壳 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

筆記:

實驗:

Lab18-1

Lab18-2

Lab18-3


筆記:

殼的功能:縮減程序的大小,阻礙對加殼程序的探測和分析

解析函數導入表:1.僅導入LoadLibrary和GetProcessAddress兩個函數。先脫出原始文件,再讀取原始可執行文件的導入函數信息。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.保持原始導入函數表的完整,讓Windows加載器加載所有的DLL及導入函數---->缺乏隱蔽性

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.為原始導入表中的每個DLL保留一個導入函數,解析時只用查看每個導入庫中的一個函數---->比第二個隱蔽性高

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4.不導入任何函數,脫殼存根從庫中查找所有需要的函數。

尾部跳轉:ret? call? NtContinue ZwContinue 隱藏跳轉

識別加殼程序加殼標識----->導入函數僅有LoadLibrary和GetProcessAddress

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 只有少量代碼被識別

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 加殼警告

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 節名中包含加殼的警告

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .text原始數據大小為0,但虛擬大小不為0

? ? ? ? ? ? ? ? ? ? ? ?闋值計算------>壓縮或者加密數據更接近于隨機數據,因此有一個較高的闋值(Mandiant Red Curtain/Red Curtain)

脫殼自動脫殼--->PE Explorer

? ? ? ? ? ?手動脫殼--->1.找到加殼算法,編寫一個程序逆向運行它

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.運行脫殼程序,讓脫殼存根幫你工作,讓它從內存中轉儲處進程,然后修正PE頭部

查找OEP自動工具----->OllyDump,通過Section Hop調用Find OEP(如果一個call函數沒有返回,節與節之間的大跳轉)

? ? ? ? ? ? ? ? ? 手動查找----->查找尾部跳轉指令(jmp,ret)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在棧上設置讀斷點

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在代碼每個循環后面設置斷點

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在GetProcAddress函數設置斷點,多數脫殼器會使用GetProcAddress函數來解析原始函數的導出表

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不要讓代碼執行向上跳

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不同程序:1.命令行程序--->Getversion與GetCommandlineA

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.GUI程序------->GetModuleHandleA與Getversion

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?OllyDbg的Run Trace選項

手動修復導入表:利用OD標注導入函數

常見殼UPX:壓縮殼? ? ? ? ? ? ? ?

? ? ? ? ? ? ? PECompact:包含反調試異常和混淆代碼

? ? ? ? ? ? ? ASPack:自我修改代碼-----設置硬件斷點

? ? ? ? ? ? ? Petite:單步異常---------硬件斷點---------每個庫至少導出一個函數

? ? ? ? ? ? ? WinUpack:有GUI終端的殼優化壓縮--------GetModuleHandleA/GetCommandlineA

? ? ? ? ? ? ? Themida:復雜,具有反調試與反逆向分析。會在原始程序運行后繼續運行。---------ProcDump轉儲Windows進程的內容

不完全脫殼的情況下分析:并不需要讓其完全脫殼再去分析這個程序。進行轉儲,IDApro分析特定的節,找到一個地址,標記為代碼,拿strings分析。

加殼的dll:在OD中加載dll時,DllMain函數會在od中斷之前就運行。

? ? ? ? ? ? ? ? ? 解決:定位IMAGE_FILE_HEADER,在0x2000處的值為1,表示是一個DLL文件,但如果為0,表示一個EXE文件。? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

ProcDump

實驗:

Lab18-1

加了殼的軟件

明顯的尾部跳轉

Lab18-2

加殼

?使用od插件尋找OEP,然后轉化為code

Lab18-3

可以看出來加殼了,但用od插件并不能定位到OEP

查看代碼尾部跳轉

然而這里也并不能找到OEP

程序的開始位置,有pushfd和pushad的操作把寄存器的值壓入棧,當脫殼完成后。這些寄存器的值還會pop出來

所以執行到如圖位置后,在esp中下硬件訪問斷點。

再次運行,停在OEP位置,然后轉化為代碼

Lab18-4

同樣利用上面的那個esp堆棧平衡

Lab18-5

這個殼隱藏了導入信息,同樣利用上面的那個esp堆棧平衡

總結

以上是生活随笔為你收集整理的恶意代码分析-第十八章-加壳与脱壳的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。