学习心得----seh(4)

本文探讨了如何通过SEH(结构化异常处理)进入Ring0,解释了Ring0的含义、进入Ring0的原因以及实现方法。通过示例代码,详细阐述了设置SEH链表、触发断点异常、清除异常和修改寄存器以进入Ring0的过程。适合对黑客技术感兴趣的读者深入学习。
摘要由CSDN通过智能技术生成

解读cih进入ring0的秘密

  看了大家对前面几篇的评论,觉得有点怪异,看来大家对技术的追求还不是那么强烈,声明以下,我写的这些东西或许永远也不会对你的实际应用有帮助,这只是黑客们对技术的研究,如果你的愿望只是一般的编程,这篇文章不适合你。

  这几天开始编一个游戏,以前没有接触过游戏编程,觉得很有意思,还有directX的编程,真得很爽,我估计也就几天的热情吧,呵呵。

  还有,我知道我的老婆每天都来看我的文章,这里问个好:亲爱的tina,你好啊!

  正题。

  我们今天研究的代码主要是进入ring0的实现。首先我们要有几个问题,不知道你们有没有这样的问题,反正我在研究cih的时候是有。

  1、什么是ring0?

  2、为什么要进入ring0?

  3、怎么样才算进入ring0

  现在解答一下。

  什么是ring0呢?windows分4层保护结构,最核心的ring0,最外面的是ring3,ring0层的应用程序可以直接和硬件打交道,其他层的就必须通过hal.dll来调用相应的api来和硬件打交道,所以如果想突破限制,搞些破坏就要进入ring0.

怎么才算进入ring0? 当cs=28,ds=30时就可以认为进入了ring0.

  进入的方法还有很多种,比如什么中断门,陷阱门,调用门,具体请察看微机原理相应的知识。

  怎么通过seh进入呢?记得上一章我们说的lpcontext么?就是靠它了!

  现在说一下流程:

1、设置seh链表

2、触发断点异常int3

3、清除自己触发的异常

4、通过lpcontext修改cs=28,ds=30

这就是主要的了,是不是很简单亚。其实到昨天我还是想不通为什么要通过seh才能修改,今天终于灵光一现,想通了,其实就是看我自己写的第3篇的那段关于lpcontext的话才想到的,呵呵。

 

下面是我学习cih的代码,我也加入了一些注释,你们看吧:

;;;;;;;;;;;;;;;;;;;;;;;;;;我估计这段代码使tasm编译的,和masm有些不一样

include "../inc/win32n.inc"

 

extern    _ExitProcess@4

extern    _GetTickCount@0

extern    _GetStdHandle@4

extern    _MessageBeep@4

extern    _WriteConsoleA@20

 

global _mainCRTStartup

 

SEGMENT .text USE32 class=code

 

_mainCRTStartup

    push    dword STD_OUTPUT_HANDLE                ;

    call    _GetStdHandle@4                        ;获取输出控制屏的句柄

    mov    [stdout],eax                            ;保存句柄

 

    ;******************************************

    ;* 以下这一段是按照SEH必要的方式形成链表

    ;******************************************

    xor    ebx,ebx        ;先清0

    push    dword eh      ;压入自己ExceptHandle指针,即 eh 处

    push    dword [fs:ebx]                        ;压入当前[FS:0] ,想想为什么不直接fs:0?

    mov    [fs:ebx],esp                            ;形成链表形式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值