调用门测试(一)

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

并观察内核寄存器的变化




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

发表评论

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