1. 程式人生 > >惡意程式碼分析-第二十一章-64位惡意程式碼

惡意程式碼分析-第二十一章-64位惡意程式碼

目錄

筆記

實驗

筆記

64位惡意程式碼的必要性:1.在64位作業系統中核心程式碼是64位的,以64位系統為目標的rootkit(Rootkit通過載入特殊的驅動,修改系統核心,進而達到隱藏資訊的目的)必須編譯成64位機器碼

                                        2.外掛和注入程式碼必須是64位的,以便在64位程序中執行。

                                        3.shellocde作為漏洞利用的一部分

X64架構上的差別:1.指標和地址都是64位的

                                2.通用暫存器RAX,RBX,RCX

                                3.一些通用暫存器通過新增L字尾到它們的16位版本,例如對於RBP,BP訪問的是低16位,BPL訪問的是低8位

                                4.RIP是64位指令指標

                                5.新加了R8-R15新的暫存器。其中R8D訪問32位,R8W訪問16位,R8L訪問8位

                                6.X64可以進行RIP-相對定址

                                   X32上的絕對定址

                                   X64上的相對定址,與位置無關。(將資料地址作為一個相對當前指標的偏移進行儲存)

減少了DLL被載入時必須被重定向地址的數量。指標相對定址也使編寫shellcode變得容易,消除了獲取指向EIP指標來訪問資料的必要。

X64呼叫約定的差別:與fastcall呼叫約定相近。

X64棧使用上的差別

實驗

Lab21-1

Lab21-2

Lab21-3