首页
社区
课程
招聘
hying的单步陷阱
发表于: 2004-6-2 18:55 7496

hying的单步陷阱

2004-6-2 18:55
7496

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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 10
支持
分享
最新回复 (2)
雪    币: 260
活跃值: (86)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
从ida里面贴过来的?怎么命名都这么怪异呢?
2004-6-2 23:13
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
3
最初由 pll621 发布
从ida里面贴过来的?怎么命名都这么怪异呢?

dump出来整理了一下,label没什么意义
2004-6-5 20:31
0
游客
登录 | 注册 方可回帖
返回
//