首页
论坛
课程
招聘
hying的单步陷阱
2004-6-2 18:55 5569

hying的单步陷阱

2004-6-2 18:55
5569
Opcode很乱,具体我也不清楚,但可以用

.586P
.Model Flat,StdCall
Option CaseMap:None
Assume Fs:Nothing
.Code

Start:
                call        _push_handler
                mov        eax, [esp+4]
                mov        eax, [eax]
                cmp        eax, 80000004h
                jnz        short _live_or_dead+1 ; to see my god...

                mov        esp, [esp+8]
                jmp        short _restore_stack

_junk_1:
                pop        eax

_live_or_dead:
                jmp        short _trap_end

                db 0E9h

_restore_stack:
                pop        fs:0
                jz                short _junk_1
                jnz        short _junk_1

_trap_end:
                jmp        short _out

_push_handler:
                push        fs:0
                jmp        short _set_seh_1

                db 0FFh

_make_exception:
                pushf
                jz                short _junk_2
                jnz        short _junk_2

_bad_address:
                db 0E9h

_junk_2:
                or        dword ptr [esp], 100h
                popf
                nop
                jmp        short _bad_address

_set_seh_1:
                mov        fs:0, esp
                jmp        short _make_exception
_out:
                ret

End        Start

宏,随便放

_Trap        MACRO        Junkcode
LOCAL        _push_handler, _live_or_dead, _restore_stack, _junk_1,_junk_2,_trap_end, _make_exception, _bad_address,_set_seh_1,_out
                call        _push_handler
                mov        eax, [esp+4]
                mov        eax, [eax]
                cmp        eax, 80000004h
                jnz        short _live_or_dead+1 ; skip

                mov        esp, [esp+8]
                jmp        short _restore_stack

_junk_1:
                pop        eax

_live_or_dead:
                jmp        short _trap_end

                db 0E9h        ; jmp ->

_restore_stack:
                pop        fs:0
                jz                short _junk_1
                jnz        short _junk_1

_trap_end:
                jmp        short _out

_push_handler:
                push        fs:0
                jmp        short _set_seh_1

                db Junkcode

_make_exception:
                pushfd
                jz                short _junk_2
                jnz        short _junk_2

_bad_address:
                db 0E9h

_junk_2:
                or        dword ptr [esp], 100h
                popfd
                nop
                jmp        short _bad_address

_set_seh_1:
                mov        fs:0, esp
                jmp        short _make_exception
_out:
                ret
ENDM

2022 KCTF春季赛【最佳人气奖】火热评选中!快来投票吧~

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 245
活跃值: 活跃值 (11)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
pll621 活跃值 2004-6-2 23:13
2
0
从ida里面贴过来的?怎么命名都这么怪异呢?
雪    币: 5536
活跃值: 活跃值 (56)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 活跃值 26 2004-6-5 20:31
3
0
最初由 pll621 发布
从ida里面贴过来的?怎么命名都这么怪异呢?

dump出来整理了一下,label没什么意义
游客
登录 | 注册 方可回帖
返回