调用门测试(一)

0x01 调用门的基础知识

调用门执行流程

指令格式:CALL  CS:EIP(EIP是废弃的)

执行步骤:

1) 根据CS的值 查GDT表,找到对应的段描述符  这个描述符是一个调用门.

2) 在调用门描述符中存储另一个代码段段的选择子.

3) 选择子指向的段  段.Base + 偏移地址 就是真正要执行的地址.


0x02门描述符

图片1.png


0x03 构造调用门

eq 8003f048 0040EC00`00081020


0x04 测试代码


01#include "stdafx.h"
02#include <stdio.h>
03#include <windows.h>
04 
05void __declspec(naked) GetRegister()
06{
07    _asm{
08        int 3
09        retf
10    }
11}
12 
13int main(int argc, char* argv[])
14{
15    char buff[6];
16 
17    *(DWORD*)&buff[0] = 0x12345678;
18    *(WORD*)&buff[4]=0x48;
19     
20    _asm{
21        call fword ptr[buff]
22    }
23    getchar();
24    return 0;
25    //return 0;
26}


0x05 观察寄存器

查看 CS SS EIP ESP的变化

并观察内核寄存器的变化




原文链接: 调用门测试(一) 版权所有,转载时请注明出处,违者必究。
注明出处格式:流沙团 ( http://www.gyarmy.com/?post=414 )

发表评论

0则评论给“调用门测试(一)”