首页
社区
课程
招聘
[求助]这个HelloWorld.asm使用masm10编译之后,请问有什么办法反汇编成一样或者相近的源代码?
发表于: 2009-2-8 18:13 7889

[求助]这个HelloWorld.asm使用masm10编译之后,请问有什么办法反汇编成一样或者相近的源代码?

2009-2-8 18:13
7889
【求助】这个HelloWorld.asm使用masm10编译之后,请问有什么办法反汇编成一样或者相近的源代码?

;文件名:HelloWorld.asm

        .386
        .model flat ,stdcall

NULL    equ 0
MB_OK   equ 0

ExitProcess PROTO :DWORD
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD

includelib kernel32.lib
includelib user32.lib

          .data
szText    db "Hello, world!",0
szCaption db "Win32Asm",0

        .code
start:
        push MB_OK
        lea eax,szCaption
        push eax
        lea eax,szText
        push eax
        push NULL
        call messageboxa
        xor eax,eax
        push eax
        call exitprocess
        end start

请教请教,谢谢先

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我能很负责的告诉你,反汇编后的代码,跟这个一样
2009-2-8 18:15
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢老大!~
请问使用什么工具?
2009-2-8 19:27
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
IDA~~~~
2009-2-8 19:40
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
;
; 赏屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?
; ?    This file is generated by The Interactive Disassembler (IDA)        ?
; ?    Copyright (c) 2006 by DataRescue sa/nv, <ida@datarescue.com>        ?
; ?Licensed to: Paul Ashton - Blue Lane Technologies (1-user Advanced 03/2006) ?s
; 韧屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?
;
; Input MD5  : B10F70A1DCD595E3CA4ED9E189A735C6

; File Name  : F:\masm32\HelloWord.exe
; Format      : Portable executable for 80386 (PE)
; Imagebase  : 400000

; Section 1. (virtual address 00001000)
; Virtual size                  : 0000002C (    44.)
; Section size in file          : 00000200 (    512.)
; Offset to raw data for section: 00000400
; Flags 60000020: Text Executable Readable
; Alignment    : default

.686p
.mmx
.model flat

; Segment type: Pure code
; Segment permissions: Read/Execute
_text segment para public 'CODE' use32
assume cs:_text
;org 401000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing

public start
start proc near
push    0              ; uType
lea    eax, Caption    ; "Win32Asm"
push    eax            ; lpCaption
lea    eax, Text      ; "Hello, world!"
push    eax            ; lpText
push    0              ; hWnd
call    MessageBoxA
xor    eax, eax
push    eax            ; uExitCode
call    ExitProcess
int    3              ; Trap to Debugger
start endp

我找了一个“IDA 5.0 Adv 5.0.0.879”打开,确是上面的代码,好像相差很大啊
2009-2-8 20:49
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
差距当然会有了。不过我不觉上面反汇编出来的代码和你的代码有多大的差距,基本上就是你上面的源码了。
2009-2-8 21:18
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
szText    db "Hello, world!",0
szCaption db "Win32Asm",0

===这个是我没有编译的源代码

编译之后,有2句类似的,但是"Win32Asm"、Hello, world!" 都是出现在注释“;”之后,好像没有赋值?

lea    eax, Caption    ; "Win32Asm"
lea    eax, Text      ; "Hello, world!"

请教请教
2009-2-9 06:01
0
雪    币: 0
活跃值: (309)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
lea    eax, Caption    ; "Win32Asm"
lea    eax, Text      ; "Hello, world!"
不是写明白了吗?第1个取标题的有效偏移地址,第2个取对话筐文本的有效偏移地址。
2009-2-9 07:26
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
9
; 这不是和你的程序差不多吗?
start:                                      start proc near
        push MB_OK                   push    0              ; uType
        lea eax,szCaption           lea    eax, Caption    ; "Win32Asm"
        push eax                        push    eax            ; lpCaption
        lea eax,szText                lea    eax, Text
        push eax                        push    eax            ; lpText
        push NULL                      push    0
        call messageboxa           call    MessageBoxA
        xor eax,eax                    xor    eax, eax
        push eax                        push    eax
        call exitprocess              call    ExitProcess
        end start                        start endp
2009-2-9 09:07
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
lea    eax, Caption    ; "Win32Asm"
lea    eax, Text      ; "Hello, world!"

===这个看不出Caption和Text的值来自哪里?; "Win32Asm" 前面的;是注释吧?

请教请教
2009-2-9 09:15
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
11
你双击Caption或Text变量IDA会自动跳转到Caption和Text的值的地方。
"Win32Asm"是IDA添加的注释,他是告诉你Caption保存的值就是"Win32Asm"字符串。
2009-2-9 09:18
0
雪    币: 233
活跃值: (43)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
小虾版主真的是太负责了,这么简单的问题都亲自去回答。建议楼主花两个小时看看书,就什么都明白了。
2009-2-9 09:40
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢谢版主!!!
楼上的可能都不知这个是什么问题,就在那里说

我使用IDA,看到的代码,没有看到那个地方有赋值的

莫非你可以看到???
2009-2-9 10:36
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
14
代码中对字符串只有引用,没有赋值
2009-2-9 11:32
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
lea    eax, Caption    ; "Win32Asm"
lea    eax, Text      ; "Hello, world!"
===从这个地方,也看不到怎么引用的
要是在上面双击才跳到引用的对方,那就是说IDA反汇编的代码不完全?

怎么才能得到完全的代码呢?
2009-2-9 15:39
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
16
那是不可能的。
2009-2-9 18:51
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
17
楼主要求太苛刻了吧…
2009-2-9 21:02
0
雪    币: 213
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
那两个字符串取到地址就行了,其它的MessageBox全弄好的,不用你来确定它们在那里,也不是每次运行都是在同一个地址,具体的地址是由系统的底层来维护的,PE加载器把文件加载时会随机分配一段内存给程序,然后重新计算各种数据的相对的偏移地址,就可以使用的.
这是菜鸟的理解,也不知道对不对?
2009-2-10 07:33
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
19
怎么才能得到完全的代码呢?

在脑海中思考一下就出来了 不然怎么叫逆向呢 这些是最基础的东西 是可以不经过大脑就出来的 否则今后的代码就都免谈了
2009-2-10 07:42
0
雪    币: 220
活跃值: (107)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
已经有百分之 九十九是一样的,居然还说跟源码不像...可能也许是...是...是.....
2009-2-10 17:01
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
21
楼主是想直接有一个反汇编工具,F5一下,反汇编代码就直接变成可编译代码 = =!
2009-2-10 19:27
0
游客
登录 | 注册 方可回帖
返回
//