首页
社区
课程
招聘
[讨论]看这段郁闷的代码~
发表于: 2007-5-18 09:34 5339

[讨论]看这段郁闷的代码~

2007-5-18 09:34
5339
.386p

.model flat, stdcall

option casemap:none

include         windows.inc

include       user32.inc

includelib     user32.lib 

.code

start:
        
    push MB_ICONINFORMATION or MB_OK

    call Func1

    db "Test",0

Func1:

    call Func2

    db "Hello",0

Func2:

    push NULL    

    call MessageBoxA

;    ret

end start
:

哪位大大,能分析一下这段代码,我怎么看着有点晕?
在生成pe文件后,用od调试怎么不在自己的领空,跑到了ntdll里
很是不明白,哪位大大能给个思路~,分析一下代码流程~
这里先谢谢了~eek:

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
这段代码很简单啊。就只是一句调用MessageBox函数的代码而已。
invoke MessageBox,CTXT("Hello"),CTXT("Test"),MB_ICONINFORMATION or MB_OK
2007-5-18 11:32
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
在生成pe文件后,用od调试怎么不在自己的领空,跑到了ntdll里

可能是你的OD设置成中断在系统断点入口了。
2007-5-18 11:34
0
雪    币: 150
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
     call Func1

     db "Test",0


这一句开始的时候一直很晕,现在明白了,这句的主要目的是对 test的地址进行压栈
~,谢谢小虾提示,但是还有一个问题,在进行调试的时候在进入这句代码的时候就直接进入
ntdll了,不知道是为什么??能给个提示吗?
2007-5-18 16:41
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
5
在进入这个函数时你不会是使用F8吧?用F7进入试试。
2007-5-18 17:21
0
雪    币: 150
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
00401000 >  6A 40           push    40
00401002    E8 05000000     call    0040100C                         ; PUSH ASCII "Test"
00401007    54              push    esp
00401008    65:73 74        jnb     short 0040107F
0040100B    00E8            add     al, ch
0040100D    06              push    es
0040100E    0000            add     byte ptr [eax], al
00401010    0048 65         add     byte ptr [eax+65], cl
00401013    6C              ins     byte ptr es:[edi], dx
00401014    6C              ins     byte ptr es:[edi], dx
00401015    6F              outs    dx, dword ptr es:[edi]
00401016    006A 00         add     byte ptr [edx], ch
00401019    E8 00000000     call    <jmp.&user32.MessageBoxA>
0040101E  - FF25 00204000   jmp     dword ptr [<&user32.MessageBoxA>>; user32.MessageBoxA


不可以的,在00401000处下断,断不下来,不知道为什么,下硬断点也不可以,我把它作为附件上传了,老兄能帮忙看一下吗?
2007-5-18 17:34
0
雪    币: 404
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
同意2楼的看法,用 call 方式压栈在FunLove病毒中用到过
2007-5-18 18:10
0
雪    币: 189
活跃值: (56)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
这种压栈有什么好呢?能迷惑静态反汇编?
2007-5-18 21:37
0
雪    币: 150
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我的意思是,它为什么不能下断,代码很好读的~
2007-5-18 21:41
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
10
你的附件下载不了。
我用你的代码编译后测试没有问题,可以中断在程序入口处,OllyDBG v1.10,OS是WinXP
2007-5-19 08:37
0
雪    币: 150
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感觉那可能是我od的问题,我再看一下~,谢谢小虾~
2007-5-20 21:26
0
游客
登录 | 注册 方可回帖
返回
//