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

SEH IN ASM 研究(二)

 2007-01-14 20:14:51 来源:WEB开发网   
核心提示: pushptEXCEPTION_POINTERScallxHandler下面补充一个final参数获得的一个例子;; Ex5,演示final处理句柄的参数获取,更正前面; 模糊的介绍;.586.model flat, stdcalloption casemap :none; case se
push  ptEXCEPTION_POINTERS
call  xHandler

下面补充一个final参数获得的一个例子

;--------------------------------------------
; Ex5,演示final处理句柄的参数获取,更正前面
; 模糊的介绍
;--------------------------------------------
.586
.model flat, stdcall
option casemap :none ; case sensitive
include hd.h
include mac.h
;;--------------
.data
sztit db "exceptION MeSs,by hume[AfO]",0
fmt  db "Context eip--> %8X ebx--> %8X ",0dh,0ah
    db "Flags Ex.c-> %8x flg--> %8X",0
szbuf db 200 dup(0)
;;-----------------------------------------
  .CODE
_Start:
    assume fs:nothing
    push  offset _final_xHandler0
    call  SetUnhandledExceptionFilter
    xor  ebx,ebx
    mov  eax,200
    cdq
    div  ebx
    invoke  MessageBox,0,ddd("Good,divide overflow was solved!"),addr sztit,40h
    xor  eax,eax
    mov  [eax],ebx
   
  invoke  ExitProcess,0 
;-----------------------------------------
_final_xHandler0:
    push  ebp
    mov  ebp,esp
   
    mov  eax,[ebp+8]   ;the pointer to EXCEPTION_POINTERS
    mov  esi,[eax]    ;pointer to _EXCEPTION_RECORD
    mov  edi,[eax+4]   ;pointer to _CONTEXT
    test  dword ptr[esi+4],1
    jnz  @_final_cnotdo
    test  dword ptr[esi+4],6
    jnz  @_final_unwind
    ;call  dispMsg
   
    cmp  dword ptr[esi],0c0000094h
    jnz  @_final_cnotdo
    mov  dword ptr [edi+0a4h],10
    call  dispMsg
  
    mov  eax,EXCEPTION_CONTINUE_EXECUTION   ;GO ON
    jmp  @f
@_final_unwind:
    invoke  MessageBox,0,CTEXT("state:In final unwind..."),addr sztit,0
                     ;好像不论处理不处理异常,系统展开的时候
                     ;都不会被调用,right?
@_final_cnotdo:              ;请教是真的吗?还是我写的有问题
    mov  eax,EXCEPTION_CONTINUE_SEARCH
    jmp  @f   
@@:  
    mov  esp,ebp
    pop  ebp
    ret
;-----------------------------------------
dispMsg  proc
    pushad
    mov  eax,[esi]
    mov  ebx,[esi+4]
    mov  ecx,[edi+0b8h]
    mov  edx,[edi+0a4h]
    invoke  wsprintf,addr szbuf,addr fmt,ecx,edx,eax,ebx
    invoke  MessageBox,0,addr szbuf,CTEXT("related Mess of context"),0
    popad
  ret
dispMsg  endp
;;------------------------------------------------
   
END  _Start
;==================================================

BTW:够长了吧,基本内容介绍完毕,更多内容下一部分介绍一点利用Seh的tricks,哪位大侠有什么好的想法或者有什么错误,请不吝指正,毕竟我是菜鸟吗...

上一页  1 2 3 4 

Tags:SEH IN ASM

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