看完鬱金香第020課總結:
同樣的一句指令 jmp 88881234在不同位置有以下現象
找規律:
88881234 - 010073bb = 87879e79
88881234 – 010073c0 = 87879e74
88881234 – 010073c5 = 87879e6f
因為機器碼 如e9 749e8787 是按位元組排列的所以87879e74顯示出來是749e8787
所以可得以下公式
jmp的位址(88881234) – **位址(010073bb) – 5(位元組) = 機器碼跳轉位址(e9 87879e74)
typedef struct _jmpcode
jmpcode,*pjmpcode
應用:跳過ssdt_hook
例如:ntopenprocess 被hook 真正的位址為 0xaaaaaaaa(old) ,hook之後的位址為0xbbbbbbbb(cur)。
那麼我們可以修改0xbbbbbbbb裡的內容,內容為一條jmp指令。以達到繞過ssdt_hook的目的。
//jmp結構
typedef struct
_jmpcode
jmpcode,*pjmpcode
//定義jmp結構
jmpcode jcode;
jcode.e9=0xe9; //
jmp機器碼
jcode.jmpaddr=cur-old-5;//
計算jmp 後面的數值
_asm
JMP指令轉換公式推導
看完鬱金香第020課總結 同樣的一句指令 jmp 88881234在不同位置有以下現象 找規律 88881234 010073bb 87879e79 88881234 010073c0 87879e74 88881234 010073c5 87879e6f 因為機器碼 如e9 749e8787 是按...
JMP位址公式推導
以上有個問題 為什麼同樣的彙編指令jmp 12345678卻對應不同的機器碼呢?首先,機器碼e9表明這是乙個近跳轉 near jmp jmp分3種 短跳轉 short jmp,只能跳轉到256位元組的範圍內 對應機器碼 eb 短跳轉和近跳轉指令中包含的運算元都是相對於 e ip的偏移。遠跳轉指令中包...
8086 彙編 jmp 指令
功能 修改cs ip的指令 可以通過改變cs ip中的內容,來控制cpu要執行的目標指令。背景 一般情況下指令是順序地逐條執行的,而在實際中,常需要改變程式的執行流程。轉移指令,短轉移 jmp short 標號 功能 ip ip 8位位移 原理 1 8位位移 標號 處的位址 jmp指令後的第乙個位元...