挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██
... .
查看: 2821|回复: 3
打印 上一主题 下一主题

[转载] rootkit ring3进ring0之门系列[四] -- 陷阱门

[复制链接]
6高级会员
786/1100

786

积分

260

主题

12

听众
已帮网友解决0 个问题
好评
0
贡献
526
海币
5853
交易币
0
跳转到指定楼层
楼主
发表于 2015-2-9 22:58:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


本帖最后由 fengjikou 于 2015-2-9 22:59 编辑

今天我们学习陷阱门,先来看看理论部分。
1。异常来源:
1)处理器检测到程序错误产生异常。
   在程序运行期间,检测到程序错误。被进一步分为:faluts(故障),traps(陷阱),aborts.(中止)
2)软件产生异常, int0 ,int 3, BOUND等指令在软件中产生异常。
3)机器检测异常,由处理器检查内部芯片和外部总线产生的异常。

windows通过中断门,任务门或者陷阱门进行中断或者异常处理,前面我们学习过中断门和任务门,今天我们一起看看陷阱门的结构。
陷阱门适宜于处理异常,在有出错码的情况下,转入处理程序之前还要把出错码压入堆栈。只有异常处理才可能有出错码。


a,b是没有特权变化时的情况, c,d是有特权变化的情况。
2.异常处理的步骤
由硬件自动实现的异常处理的步骤如下:  
    1).判断中断向量号要索引的门描述符是否超出IDT的界限。若超出界限,就引起通用保护故障,出错码为中断向量号乘8再加2。  

    2). 从IDT中取得对应的门描述符,分解出选择子、偏移量和描述符属性类型,并进行有关检查。描述符只能是任务门、286中断门、286陷阱门、386 中断门或386陷阱门,否则就引起通用保护故障,出错码是中断向量号乘8再加2。

    3).如果是由INT n指令或INTO指令引起转移,还要检查中断门、陷阱门或任务门描述符中的DPL是否满足CPL<=DPL(对于其它的异常或中断,门中的DPL被忽略)。这种检查可以避免应用程序执行INT n指令时,使用分配给各种设备用的中断向量号。如果检查不通过,就引起通用保护故障,出错码是中断向量号乘8再加2。
    4).门描述符中的P位必须是1,表示门描 述符是一个有效项,否则就引起段不存在故障,出错码是中断向量号乘8再加2。
    5). 根据门描述符类型,分情况转入中断或异常处理程序。对于异常处理,在开始上述步骤之前,还要根据异常类型确定返回点;如果有出错代码,则形成符合出 错码格式的出错码,并在实际执行异常处理程序之前把出错码压入堆栈。

3.通过陷阱门的转移
如果中断向量号所指示的门描述符是386陷阱门,那么控制转移到当前任务的一个处理程序过程,并且可以变换特权级。与其它调用门的 CALL指令一样,从陷阱门中获取指向处理程序的48位全指针。其中16位选择子是对应处理程序或代码段的选择子,它指示全局描述符表GDT或局 部描述符表LDT中的代码段描述符;32位偏移指示处理程序入口点在代码段内的偏移量。通过陷阱门的转移过程如下所示,该过程由硬件自动进行。
  (1)若选择子为空,则产生通用保护故障;
  (2)取对应的描述符;
  (3)若非存储段描述符,则产生通用保护故障;
  (4)若非一致代码段且DPL且段存在, 则切换到内层堆栈;
  (5)调整RPL=0;
  (6)把描述符装入CS;
  (7)若入口偏移越界,则产生通用保护故障;
  (8)EFLAGS压入堆栈;
  (9)CS 压入堆栈;
  (10)EIP压入堆栈;
  (11)使TF=0,NT=0;
  (12)若有出错码,则把出错码压入堆栈;
  (13)转入处理程序。


4.异常处理后的返回

指令IRET用于从异常处理程序的返回。该指令的执行根据任务嵌套标志NT位是否为1分为两种情形。
NT位为1,表示是嵌套任务的返回。当前TSS中的链接字段保存有前一任务的TSS的选择子,取出该选择子进行任务切换就完成了返回。这种情形在由通过任务门转入的异常处理程序返回时出现,因为在由中断门或陷阱门转入处理程序时,NT位已被清0。
NT位为0,表示当前任务内的返回。这种情形在由通过中断门或陷阱门转入的中断或异常处理程序返回时出现。具体进行的操作包括:从堆栈顶弹出返回指 针EIP及CS,然后弹出EFLAGS值。弹出的CS选择子的RPL字段,确定返回后的特权级。如果返回选择子的RPL与CPL相同,则不进行特权级改 变。若RPL规定了一个外层特权级,则需要特权级改变,从内层堆栈中弹出外层堆栈的指针ESP及SS的值。这些做法与RET指令相似。例如,使用CS选择 子的RPL,而不是由选择子标识的段的DPL,是为了返回到不在DPL给定特权级的一致代码段。若弹出的CS的选择子的RPL规定了一个内层特权级,则产 生通用保护故障。需要注意的是,对于IRET指令,保存在当前堆栈中的返回地址中的选择子字段必须指向代码段描述符。而不能是系统段或门描述符。否则将引 起通用保护故障。
对于提供出错代码的异常处理程序,必须先人为地从堆栈中弹出出错代码,然后再执行IRET指令,及出错代码不会自动被处理器弹出或取消。
中断返回指令IRET不仅能够用于由中断/异常引起的嵌套任务的返回,而且也适用于由段间调用指令CALL通过任务门引起的嵌套任务的返回,如前文所述,在执行通过任务门进行任务切换的段间调用指令CALL时,标志寄存器中的NT位被置为1,表示任务嵌套。而RET指令不能实现此功能。

exe.rar (7.17 KB, 下载次数: 33) src.rar (7.35 KB, 下载次数: 46)




联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:rootkit ring3进ring0之门--- 中断门(二)
下一篇:隐藏你程序的窗体,让其他程序不能枚举
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

8资深会员
1320/1800

1320

积分

286

主题

38

听众
已帮网友解决0 个问题
好评
11
贡献
1034
海币
3749
交易币
5
沙发
发表于 2015-2-9 22:59:20 | 只看该作者
路过 帮顶 嘿嘿

34

积分

10

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
24
海币
2450
交易币
0
板凳
发表于 2015-8-26 08:17:00 | 只看该作者
逐字逐句地看完这个帖子以后,我的心久久不能平静
4中级会员
330/600

330

积分

138

主题

6

听众
已帮网友解决0 个问题
好评
0
贡献
192
海币
673
交易币
0
地板
发表于 2015-9-29 06:29:52 | 只看该作者
我的妈呀,爱死你了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-4 12:26 , Processed in 0.105804 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表