首页
社区
课程
招聘
[旧帖] [求助]请问OD中的反汇编如何改写成汇编源码? 0.00雪花
发表于: 2007-8-7 18:59 5161

[旧帖] [求助]请问OD中的反汇编如何改写成汇编源码? 0.00雪花

2007-8-7 18:59
5161
今天搞一个非常小的程序,为了使用方便需要转换成MASM的汇编源码使用,OD中看一共就下面这几行

00401000 68 88130000 push 1388
00401005 E8 0E000000 call <jmp.&kernel32.Sleep>
0040100A 6A 00 push 0
0040100C E8 01000000 call <jmp.&kernel32.ExitProcess>
00401011 CC int3
00401012 - FF25 04204000 jmp dword ptr ds:[<&kernel32.ExitProc>; kernel32.ExitProcess
00401018 - FF25 00204000 jmp dword ptr ds:[<&kernel32.Sleep>] ; kernel32.Sleep
0040101E S> 90 nop ;入口点
0040101F 90 nop
00401020 90 nop
00401021 B8 D1834100 mov eax,Sample02.004183D1
00401026 FFE0 jmp eax ;此处跳转到资源中一个可执行文件处运行

我实在是很菜,在添加以下头文件后,照搬抄过来,不能编译
include                windows.inc
include                kernel32.inc
includelib                        kernel32.lib
才知道INT3和调用函数的部分都不能照抄。。。
请教高手,这种应该怎么写才对?

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
.386
.model flat,stdcall
option casemap:none

include windows.inc
include kernel32.inc
include user32.inc

includelib kernel32.lib
includelib user32.lib

.code
start:
    invoke Sleep,1388h
    invoke ExitProcess,NULL
end start
2007-8-7 19:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢班主大人
还有下面这部分
00401021     B8 D1834100                     mov eax,Sample02.004183D1
00401026     FFE0                            jmp eax ;此处跳转到资源中一个可执行文件处运行
这个是跳转到资源文件中一个exe的入口点继续运行,这个又用什么语句写呢?
2007-8-7 20:24
0
雪    币: 208
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
这句得结合上下文才能写呢.
2007-8-7 23:39
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
5
如楼上所说,那一句应该结合整个程序的上下文才能写。单纯的写:
mov eax,004183D1
jmp eax
不能达到你要的预期目标的。
程序是你自己再写过的,那么资源程序的地址肯定也会改变,那个004183D1肯定也是不正确的地址了。
2007-8-8 11:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不知道有没有什么函数可以自动获取资源文件可执行文件的入口地址的?
2007-8-8 12:52
0
游客
登录 | 注册 方可回帖
返回
//