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

SEH in ASM 研究(一)

 2007-01-14 20:14:54 来源:WEB开发网   
核心提示: EXCEPTION_POINTERS STRUCTpExceptionRecordDWORD?ContextRecordDWORD?EXCEPTION_POINTERS ENDS在call xHandler之前,堆栈结构如下:esp-> *EXCEPTION_RECORDesp+4-
      EXCEPTION_POINTERS STRUCT
       pExceptionRecord DWORD   ?      
       ContextRecord  DWORD   ?
      EXCEPTION_POINTERS ENDS

在call xHandler之前,堆栈结构如下:

esp  -> *EXCEPTION_RECORD

esp+4 -> *CONTEXT record ;//具体结构见下面

然后执行call _Final_Handler,这样在程序里要调用什么不轻而易举了吗?

II、 传递给per_thread句柄的参数,如下:

在call xHandler之前,在堆栈中形成如下结构

      esp  -> *EXCEPTION_RECORD
      esp+4 -> *ERR          ;//注意这也就是fs:[0]的指向
      esp  -> *CONTEXT record     ;//point to registers
      esp  -> *Param          ;//呵呵,没有啥意义

然后执行 call _Per_Thread_Handler

调用handler的原型是这样

invoke HANDLER,*EXCEPTION_RECORD,*_EXCEPTION_REGISTRATION,*CONTEXT record,*Param

即编译代码如下:

    PUSH *Param          ;//通常不重要,没有什么意义
    push *CONTEXT record      ;//上面的结构
    push *ERR           ;//the struc above
    push *EXCEPTION_RECORD     ;//see above
    CALL HANDLER
    ADD ESP,10h

好现在你明白了应该如何访问具体有关系统信息的细节了吧,下一部分,让我们来看看如何应用...(待续)

上一页  2 3 4 5 6 7 

Tags:SEH in ASM

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