您的位置:逆风者 汇编技术 正文
原作者:www.upwinder.com 添加时间:2007-09-01 原文发表:2007-08-31 人气:129 来源:未知

本文章共3713字,分3页,当前第1页,快速翻页:
 

1、先准备两个程序,一个汇编、一个C语言

逆风者

汇编中没有定义变量,因为在一个模块中不会有问题;
在C中定义了两个函数,一些局部变量,一些全局变量;
这样我们要考虑的内容都完备了。
ms.asm mc2.c

.386 int sum(int i){
.model flat int k = i;
extrn c m:near int j = 0;
public _start int s = 0;
.code for(j=1;j<=k;j ) s =j;
_start: return s;
mov ax,cs }
mov ds,ax
call m int e = 1;
stop: int f = 2;
jmp stop int ar[6000000L];
end _start
extern void m(){ 
int d;
long c;
c=1;

2、分别编译成obj文件

ml /c /coff ms.asm //指定生成coff格式的obj文件
cl /c /Fomc.obj mc2.c //指定生成的obj文件名为mc.obj
link /subsystem:windows ms.obj mc.obj //这里使用32位的链接器,要设好lib路径

现在得到ms.obj mc.obj ms.exe 三个文件

3、分析一下源代码,显然程序入口点是_start(在使用/coff参数进行编译时必须有下划线),在汇编

调用了C中的m函数,这是需要重定位的。在C中m调用了sum函数,这也是要重定位的。

4、现在利用VC6自带的dumpbin.exe工具,生成解析文件:

dumpbin /all ms.obj>msobj.txt
dumpbin /all mc.obj>mcobj.txt
dumpbin /all ms.exe>msexe.txt

现在得到三个解析文件,下面逐个分析
*******************************************************************************
*msobj.txt
*******************************************************************************
Microsoft (R) COFF Binary File Dumper Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.


Dump of file ms.obj

File Type: COFF OBJECT

FILE HEADER valueS
14C machine (i386) //机器类型为386
3 number of sections //ms.obj文件有三节
41AABB57 time date stamp Mon Nov 29 14:01:59 2004
B2 file pointer to symbol table //符号表的文件偏移是 0B2H
B number of symbols //共 0BH=11 个符号
0 size of optional header
0 characteristics

//第一节的头部
SECTION HEADER #1
.text name
0 physical address
0 virtual address
D size of raw data //原始数据长度为 0DH=13 个字节
8C file pointer to raw data //其在文件内的偏移为 8Ch
9A file pointer to relocation table //其重定位表在文件内的偏移为9Ah
0 file pointer to line numbers
1 number of relocations //需重定位的项有 1 项
0 number of line numbers
60300020 flags
Code //这是一个代码段
4 byte align
Execute Read

RAW DATA #1 //这里列出了原始数据,恰好 13=0DH 个字节
00000000: 66 8C C8 66 8E D8 E8 00 00 00 00 EB FE f..f.........
|-->这是偏移7的位置,查下面的重定位表知道它需要重定位。
当前值是 00 00 00 00 ,E8代表call


RELOCATIONS #1 //这是重定位表
Symbol Symbol
Offset Type Applied To Index Name
-------- ---------------- ----------------- -------- ------
00000007 REL32 00000000 7 _m //清楚的指出_m需要重定位
 

本文章更多内容1 - 2 - 3 - 下一页>>
相关文章

动态链接库
masm中宏指令的bug
虚拟机管理器
DOS下的EXE格式文件
API参数说明符前缀详解
如何建立汇编工作环境
驻留exe文件
进一步学习对话框
MASM的反反汇编技术
给程序加个图标
学习更多关于“绘制”文本串的知识
程式语言效率分析(1)
任务状态段和控制门
只能在保护模式下执行的指令
系统托盘中的快捷图标

相关评论


本文章所属分类:首页 汇编技术

  热门关键字:
进制数据输出的通用程序 2007-09-12
汇编源码--showmem 2007-08-31
汇编源码--CLEAN 2007-08-31
汇编源码--hdr 2007-08-31
汇编源码--basload 2007-08-31
汇编源码--CHAR 2007-08-31
汇编源码--fxn 2007-08-31
汇编源码--alarm 2007-08-31
汇编源码--getsect 2007-08-31
汇编源码--DEV 2007-08-31
汇编源码--getspace 2007-08-31
汇编源码--frespace 2007-08-31
CIH文件型病毒检测消除程序 2007-08-31
Mixer Volume Ctrler V1.0 2007-08-31
汇编源码--COMINT 2007-08-31
自己用汇编语言写的一个病毒(源码... 2007-08-31
汇编源码--col 2007-08-31
汇编源码--BURNOUT 2007-08-31