惡意程式碼分析-第二十一章-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棧使用上的差別: