欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

seh的另一种用法: (1千字)

seh的另一种用法: (1千字)

;在前面你可能已经熟悉了用seh修改context的eip实现跳转的方法
;这里我们来试试另一种方法,如果只是想在发生异常的时候转移,那更加简单
;理解的关键是在xHandler中,系统自动又为处理代码建立了异常处理
;所以,要废除掉!然后不交由系统处理,我们自己利用seh作一下跳板
;你可能已经在某些壳里面或病毒里面看到这种用法了...
;实际上我们也可以用这种方法来用于自己的目的,很方便...
;9X下测试通过...我还要出去...god save me!
.586
.model flat, stdcall
option casemap :none  ; case sensitive
include c:\hd\hd.h
include c:\hd\mac.h
;~~~~~~~~~~~~~~~~~~~protos
;~~~~~~~~~~~~~~~~~~~~~~~~~
ASSUME  fs:NOTHING
    .CODE
__Start:
    xor    edi,edi
        lea    eax,[esp-8]
        xchg    eax,fs:[edi]
        push    offset xhandler
        push    eax
       
        mov    eax,[edi]              ;test for
        pop    fs:[edi]
        pop    eax
_xit:
        invoke    ExitProcess,0
       
safePlace:
        invoke    MessageBox,0,CTEXT("come Here!"),CTEXT("Test"),0
        jmp    _xit
xhandler:
        xor    edi,edi
        mov    eax,fs:[edi]
        mov    esp,[eax]
        pop    fs:[edi]                ;resume stack
        ;pop    eax                    ;a little redundant
        ;push    offset safePlace
        mov    [esp],offset safePlace  ;why not act like this?
        ret                            ; to return

END    __Start

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功