WEB开发网
开发学院网络安全黑客技术 SEH in ASM 研究(一) 阅读

SEH in ASM 研究(一)

 2007-01-14 20:14:54 来源:WEB开发网   
核心提示: 三、传递给异常处理句柄的参数要想明白seh处理例程如何得到感兴趣的信息,首先要明白SEH的作用机制.事实上,当异常发生时,系统给了我们一个处理异常的机会,他首先会调用我们自定义的seh处理例程,当然也包括了相关信息,在调用之前,系统把包含这些信息结构的指针压入stack,供我们的异常处理例

三、传递给异常处理句柄的参数

要想明白seh处理例程如何得到感兴趣的信息,首先要明白SEH的作用机制.事实上,当异常发生时,系统给了我们一个处理异常的机会,他首先会调用我们自定义的seh处理例程,当然也包括了相关信息,在调用之前,系统把包含这些信息结构的指针压入stack,供我们的异常处理例程调用, 传递给例程的参数通常是四个,其中只有三个有明确意义,另一个到现在为止还没有发现有什么作用, 这些参数是:pExcept:DWORD,pErr:DWORD,pContext:DWORD,pDispatch意义如下:

pExcept: --- EXCEPTION_RECORD结构的指针

pErr:  --- 前面ERR结构的指针

pContext: --- CONTEXT结构的指针

pDispatch:---没有发现有啥意义

ERR结构是前面介绍的_EXCEPTION_REGISTRATION结构,往前翻翻,Dispatch省略,下面介绍

EXCEPTION_RECORD和CONTEXT结构的定义:

;//================================以下是两个成员的详细结构========================================
    EXCEPTION_RECORD STRUCT
     ExceptionCode    DWORD   ?   ;//异常码
     ExceptionFlags    DWORD   ?   ;//异常标志
     pExceptionRecord   DWORD   ?   ;//指向另外一个EXCEPTION_RECORD的指针
     ExceptionAddress   DWORD   ?   ;//异常发生的地址
     NumberParameters   DWORD   ?   ;//下面ExceptionInformation所含有的dword数目
     ExceptionInformation DWORD EXCEPTION_MAXIMUM_PARAMETERS dup(?)
    EXCEPTION_RECORD ENDS           ;//EXCEPTION_MAXIMUM_PARAMETERS ==15
;//================================具体解释========================================

ExceptionCode 异常类型,SDK里面有很多类型,你可以在windows.inc里查找STATUS_来找到更多的异常类型,下面只给出hex值,具体标识定义请查阅windows.inc,你最可能遇到的几种类型如下:

上一页  1 2 3 4 5 6 7  下一页

Tags:SEH in ASM

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接