学习心得----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                            ;形成链表形式

 

### 回答1: mingw-w64是一个开源的工具链,它可以将GNU编译器集合(GCC)用于Microsoft Windows操作系统。此工具链对于开发Windows应用程序和库非常有用。 gcc-8.1.0是mingw-w64中包含的GCC的一个版本。该版本提供了许多新特性和优化,例如更好的C ++ 11支持和更快的编译时间。 SEH是Structured Exception Handling的缩写。它是一种在Windows操作系统中处理异常情况的机制。SEH可用于处理许多类型的异常,例如硬件错误、内存访问冲突、除以零等。 在mingw-w64 gcc-8.1.0中,SEH被完全支持并内置于编译器中。这意味着我们可以使用SEH来处理Windows应用程序中的异常情况。SEH还允许我们编写更可靠、健壮的应用程序,因为它可以识别并处理任何由Windows操作系统引起的异常。 因此,mingw-w64 gcc-8.1.0和SEH的组合为开发Windows应用程序和库提供了强大的工具。它将编写可靠、高效和健壮的应用程序的可能性提高到了一个新的水平。 ### 回答2: mingw-w64 gcc-8.1.0 seh是一种可以在Windows系统上编译和运行C/C++程序的工具。其中,mingw-w64是一个基于MinGW(Minimalist GNU for Windows)的开源项目,支持多种操作系统和处理器架构,包括32位和64位的Windows平台;gcc-8.1.0则是GNU编译器集合中的一个版本,支持C语言和C++语言,能够生成高效、优化、符合标准的代码;seh(Structured Exception Handling)是一种结构化异常处理机制,可以在程序运行过程中捕获并处理异常,保证程序的稳定性和安全性。 使用mingw-w64 gcc-8.1.0 seh可以方便地编写和调试C/C++程序,同时享受到GNU编译器集合带来的高效性和开源项目的灵活性。使用seh可以有效防止程序在运行过程中因为异常而崩溃或者造成数据丢失等问题,提高程序的稳定性和可靠性。 总而言之,mingw-w64 gcc-8.1.0 seh的出现,为开发者提供了一个高效、安全、灵活的C/C++开发环境,可以帮助他们快速地开发出高质量的软件产品。 ### 回答3: mingw-w64 gcc-8.1.0 seh(Structured Exception Handling,结构化异常处理)是一种在Windows系统上处理异常的机制。mingw-w64是一个免费的开源软件项目,旨在向Windows平台移植GNU Compiler Collection(GCC)。其中的gcc-8.1.0是GCC的一个版本,支持各种编程语言,在Windows平台上比较常用。 在Windows系统中,异常处理是必需的。当程序运行时遇到错误或异常情况时,它会生成一个异常,这个异常可以是由程序本身引发的,也可以是由操作系统或其他原因引发的。SEH是一种机制,用于识别并处理这些异常情况。SEH允许程序员用结构化的方式处理异常,从而避免程序崩溃或停止运行。它可以让程序更加可靠和安全。 MINGW-w64 GCC-8.1.0支持SEH,这使得程序员可以使用该平台进行Windows应用程序、设备驱动程序、Web服务和其他应用程序的开发。通过使用MINGW-w64的SEH机制,程序员可以更轻松地进行调试和定位错误,减少程序的崩溃和停止运行的可能性,从而提高了程序的可靠性和鲁棒性。同时,MINGW-w64 gcc-8.1.0 SEH还提供了一些现代化的C++特性,例如异常安全和C++标准模板库(STL),这些都使得编程更加轻松和高效。因此,MINGW-w64 gcc-8.1.0 SEH是一个非常有用的工具,特别是对于那些在Windows系统上进行编程的人。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值