0x01 调用门的基础知识
调用门执行流程
指令格式:CALL CS:EIP(EIP是废弃的)
执行步骤:
1) 根据CS的值 查GDT表,找到对应的段描述符 这个描述符是一个调用门.
2) 在调用门描述符中存储另一个代码段段的选择子.
3) 选择子指向的段 段.Base + 偏移地址 就是真正要执行的地址.
0x02门描述符
0x03 构造调用门
eq 8003f048 0040EC00`00081020
0x04 测试代码
#include "stdafx.h" #include <stdio.h> #include <windows.h> void __declspec(naked) GetRegister() { _asm{ int 3 retf } } int main(int argc, char* argv[]) { char buff[6]; *(DWORD*)&buff[0] = 0x12345678; *(WORD*)&buff[4]=0x48; _asm{ call fword ptr[buff] } getchar(); return 0; //return 0; }
0x05 观察寄存器
查看 CS SS EIP ESP的变化
并观察内核寄存器的变化
0则评论给“调用门测试(一)”