JMP指令转换公式推导
生活随笔
收集整理的這篇文章主要介紹了
JMP指令转换公式推导
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看完郁金香第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
{
?BYTE E9;
?ULONGJMPADDR;//88881234=B
}JMPCODE,*PJMPCODE
?
?
應用:
跳過ssdt_hook
例如:NtOpenProcess 被hook 真正的地址為 0xAAAAAAAA(old) ,hook之后的地址為0xBBBBBBBB(cur)。
那么我們可以修改0xBBBBBBBB里的內容,內容為一條JMP指令。以達到繞過ssdt_hook的目的。
?
//jmp結構 typedef struct _JMPCODE {BYTE E9;ULONGJMPADDR;//88881234=B }JMPCODE,*PJMPCODE//定義jmp結構 JMPCODE JCode; JCode.E9=0xE9; //jmp機器碼 JCode.JMPADDR=cur-old-5;//計算JMP 后面的數值 _asm { mov ebx,cur //取當前地址lea ecx,Jcode //取結構地址mov ax,byte ptr [ecx] Mov byte ptr[ebx],ax //寫jmpmov eax,[ecx+1] //移動指針mov [ebx+1],eax //寫跳轉 }總結
以上是生活随笔為你收集整理的JMP指令转换公式推导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VC6.0蕉HOOK_timeGetTi
- 下一篇: 反调试技术