首页
社区
课程
招聘
[求助]LDTR怎么取呢?
2012-10-19 22:12 3830

[求助]LDTR怎么取呢?

2012-10-19 22:12
3830
GDTR View_GDTR()
{
	GDTR gdtr = { 0 , 0 };
	_asm sgdt gdtr;
	return gdtr;
}

GDTR可以取得出来,但是LDTR的内容取出来的选择子每一位都是0?????

typedef struct _LDTR{
	unsigned short Ti:1;
	unsigned short Index:13;
} LDTR, *PLDTR;

	LDTR locLDTR = {0};
	_asm sldt locLDTR;

[COLOR="Red"]locLDTR.Index = 0????????!![/COLOR]
[COLOR="Blue"]locLDTR.Ti = 0????????!!![/COLOR]
??????????????????。。。

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 116
活跃值: (72)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
ruoko 2012-10-19 22:36
2
0
哦买噶地呀...难道基础点的问题都没人愿意回答呀-.-
雪    币: 297
活跃值: (225)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
evilor 2012-10-20 09:52
3
0
#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
        char idtr[6]={0};
    char gdtr[6]={0};
        SetThreadAffinityMask(GetCurrentThread(),1);
    __asm
        {
                sidt idtr
                sgdt gdtr
        }
        printf("idt limit is %.4x,base is %.8x\n",*(unsigned short *)idtr,*(unsigned int *)(idtr+2));
        printf("gdt limit is %.4x,base is %.8x\n",*(unsigned short *)gdtr,*(unsigned int *)(gdtr+2));
        SetThreadAffinityMask(GetCurrentThread(),2);
        __asm
        {
                sidt idtr
                sgdt gdtr
        }
        printf("idt limit is %.4x,base is %.8x\n",*(unsigned short *)idtr,*(unsigned int *)(idtr+2));
        printf("gdt limit is %.4x,base is %.8x\n",*(unsigned short *)gdtr,*(unsigned int *)(gdtr+2));
        return 0;
}
雪    币: 116
活跃值: (72)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
ruoko 2012-10-20 12:48
4
0
[QUOTE=evilor;1110740]#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
        char idtr[6]={0};
    char gdtr[6]={0};
        SetThreadAffinityM...[/QUOTE]

木有LDT的么。
雪    币: 116
活跃值: (72)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
ruoko 2012-10-20 12:50
5
0
莫非我写的每个程序都是用的GDT共享段??完全没有使用LDT???。。。。。
游客
登录 | 注册 方可回帖
返回