首页
社区
课程
招聘
[旧帖] {讨论}OllyDBG反汇编时的问题 0.00雪花
发表于: 2009-7-2 08:56 3140

[旧帖] {讨论}OllyDBG反汇编时的问题 0.00雪花

2009-7-2 08:56
3140
各位,我也不知道怎么学习反汇编,我是这样学的,我学过DOS下的汇编(16位),后来听说现在都用32位的汇编,我就买了一本罗云彬的<WINDOWS环境下32位汇编语言程序设计> ,现在学的有点迷惑,呵呵,他书中让用W32DASM  这个软件反汇编,我个人不太喜欢,就在论谈上下载了一个OD, 因为是初学者,问题比较简单,大侠们别笑!!! 我怕不多说点没人理我.呵呵
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Hello.asm   汇编源码
; 使用 Win32ASM 写的 Hello, world 程序
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    .386
    .model flat,stdcall
    option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include    windows.inc
include    user32.inc
includelib  user32.lib
include    kernel32.inc
includelib  kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    .data

szCaption  db  'A MessageBox !',0
szText    db  'Hello, World !',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    .code
start:
    invoke  MessageBox,NULL,offset szText,offset szCaption,MB_OK
    invoke  ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    end  start

_________________________________________________________________
以下是OD反汇编程序
00401000 >/$  6A 00         push    0                                          ; /Style = MB_OK|MB_APPLMODAL
00401002  |.  68 00304000   push    00403000                         ; |A MessageBox !
00401007  |.  68 0F304000   push    0040300F                         ; |Text = "Hello, World !"
0040100C  |.  6A 00         push    0                                ; |hOwner = NULL
0040100E  |.  E8 07000000   call    <jmp.&USER32.MessageBoxA>        ; \MessageBoxA
00401013  |.  6A 00         push    0                                ; /ExitCode = 0
00401015  \.  E8 06000000   call    <jmp.&KERNEL32.ExitProcess>      ; \ExitProcess
0040101A   $- FF25 08204000 jmp     dword ptr [<&USER32.MessageBoxA>>;  USER32.MessageBoxA
00401020   .- FF25 00204000 jmp     dword ptr [<&KERNEL32.ExitProces>;  kernel32.ExitProcess

________________________________________________________________
我想问的问题是:
    看汇编和反汇编都很确的告诉我们,这个小程序调用了MessageBox(),ExitProcess(),这两个API, 但看这两句.当我点击这行 040101A   $- FF25 08204000 jmp     dword ptr [<&USER32.MessageBoxA>>;   下面会出现: ":[00402008]=77D5058A (USER32.MessageBoxA) 地调用来自 <模块入口点>+0E"  这句话是什么意思?

请高手指点.以下是附图

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 290
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
已经写的很清楚了
地调用来自 <模块入口点>+0E

00401000+0E=0040100E       call    <jmp.&USER32.MessageBoxA>
2009-7-2 09:21
0
游客
登录 | 注册 方可回帖
返回
//