流沙团
调用门测试(一)
2018-3-18 流沙团


0x01 调用门的基础知识



调用门执行流程



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



执行步骤:



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



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



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







0x02门描述符



图片1.png







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的变化



并观察内核寄存器的变化













发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容