欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]浅谈之重读老文章之那些年我们追过的gdt hook

[原创]浅谈之重读老文章之那些年我们追过的gdt hook

好久不见啊大伙,大一下学期更加的忙碌,每天就是上课,敲代码,敲代码,泡妞,泡不成,换一个接着泡,感觉就像吃泡椒,泡太久了,味道太重,泡不久呢,又没味道。
1.闲话少说,接着今晚的 GDT HOOK
(1).概念请百度。
就说关键部分。

typedef struct CALLGATE_DESCRIPTOR

{

	USHORT  offset_0_15; (2)

	USHORT selector;

    UCHAR    param_count : 4;

	UCHAR    some_bits   : 4;

    UCHAR    type        : 4;

	UCHAR    app_system  : 1;

	UCHAR    dpl         : 2;

	UCHAR    present     : 1;

    USHORT  offset_16_31(3);

2.我们来说说这个的结构(2)(3)我就不说了,首先是 DPL(Descriptor Privilege Lebel)权力等级描述,我们是为了让r3访问这个全局描述符所以我们要把DPL=3.
3.param_count 表示你建立的new pro 的参数有几个;
4.selector 选择段,我们要写0x8(windows)下都是;
5.type        类型:调用门的类型是0xc;

6.先贴代码在解释~ ~.
(1.)要先得到人家的地址,
ULONG  Gdtbase()

{

	char gdt[6] ;

	ULONG base;

	__asm sgdt gdt;

	base=*(ULONG *)(&gdt[2]);

	DbgPrint("base 0x%x\n",base);

	return base;	

}

(2.)接着要初始化人家:
CALLGATE_DESCRIPTOR cg;

  cg.selector=0x8;

  cg.param_count=0;

  cg.type=0x3;

  cg.dpl=0x3;

  cg.offset_0_15=0xffff&Address;

  cg.offset_16_31=Address>>16;

  return cg;

(3.)接着要hook 人家(好害羞)
Void  Hook(CALLGATE_DESCRIPTOR cg)

{

PSEG_DESCRIPTOR gdt;

PSEG_DESCRIPTOR  gdtEntry;

PCALLGATE_DESCRIPTOR old;

CALLGATE_DESCRIPTOR  oldcg;

int i=0;

gdt=(PSEG_DESCRIPTOR)Gdtbase();

old=(PCALLGATE_DESCRIPTOR)&(gdt[60]);

DbgPrint("0x%x\n",sizeof(CALLGATE_DESCRIPTOR));

for (i=0;i<=0x1F;i++)

{

	DbgPrint("0x%x\n",&(gdt[i]));

}

oldcg=*old;

gdtEntry=(PSEG_DESCRIPTOR)&cg;

gdt[60]=*gdtEntry;

}

7.下面解释hook idt
typedef struct SEG_DESCRIPTOR{

	UINT32 base:32;        

	UINT32 seg_limit:20;   

	UINT32 g:1;        

	UINT32 d_b:1;      

	UINT32 unused:1;   

	UINT32 avl:1;      

	UINT32 p:1;        

	UINT32 dpl:2;      

	UINT32 s:1;        

	UINT32 type:4;     

}SEG_DESCRIPTOR,*PSEG_DESCRIPTOR;

首先人家这个结构占了8个空间,so 数字下表也就是往前面+8x,系统一边段选择被试用0x1-0x1f;你想XX也可以每人拦你,你想插入新的每人管你,甚至我们可以改变他们的权利等级.
8.好像扯来扯去,都没说概念,测试一下
9.这个很重要,cpu KeSetSystemAffinityThread 设置一下线程只绑定第x个cpu那。
Super-Rootkis 121157016 欢迎你的到来
好多牛都在你们,最近群的活跃度不太好,进来后请看群规定.

                                 

上传的附件 QQ截图20140427020634.png
QQ.png
gdt.zip

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功