说明:gcc是编译器,负责对c代码的编译, ld是连接器 负责将多个*.o的目标文件链接成elf可执行文件。elf可执行文件是unix常用的可执行文件类型,就像windows的exe文件。elf文件中有很多信息包括段信息还有头信息,这些信息对硬件是没有意义的,所以有的时候我们通过objcopy将el...
分类:
系统相关 时间:
2014-11-26 22:26:30
阅读次数:
257
ELF(Executable and Linking Format)用于存储Linux程序。ELF文件分三种类型: 1、目标文件(通常是.o); 2、可执行文件(我们的运行文件) 3、动态库(.so)ELF头的各个字段:typedef struct { unsigned char e_ident.....
分类:
其他好文 时间:
2014-11-24 11:40:39
阅读次数:
225
直接搜索文件中的 UPX! 字样 ,然后填充00 搞定? ? 不过对于这种文件还是可以修改 upx 的源代码强制解压,目前Linux上还没看到内存中 dump ?elf 文件的例子 ? 写了个小脚本? <?php
if($argc?<?2)
{
??...
分类:
其他好文 时间:
2014-11-04 13:21:07
阅读次数:
226
问题引入:Linux的elf文件一开始理解起来的确很难,有的人可能会去看《linkersandloaders》,这书的确好,但是没有详细的解释很多细节,尤其是从汇编语言视角。我读了这本书很多地方后还是不明白,然后我又读了IBM360计算机的汇编器设计文档,里面详解了二次扫描汇编器的设计原..
分类:
编程语言 时间:
2014-11-01 06:28:29
阅读次数:
225
在前面一文中,我们介绍了Android运行时ART,它的核心是OAT文件。OAT文件是一种Android私有ELF文件格式,它不仅包含有从DEX文件翻译而来的本地机器指令,还包含有原来的DEX文件内容。这使得我们无需重新编译原有的APK就可以让它正常地在ART里面运行,也就是我们不需要改变原来的APK编程接口。本文我们通过OAT文件的加载过程分析OAT文件的结构,为后面分析ART的工作原理打基础。...
分类:
移动开发 时间:
2014-09-29 01:55:38
阅读次数:
418
实际上 目标文件从结构上讲,已经非常接近可执行文件,只是没有经过链接的过程,所以其中有些符号或者地址还没有被调整。实际上上在linux下 都是可以称之为ELF文件。看一下这个图,a.out 就是我们的hello.c的执行文件。hello.o 就是目标文件 所以实际上他们2 几乎是一样的。一般目标文件...
分类:
系统相关 时间:
2014-09-28 16:45:14
阅读次数:
1974
Linux下ELF文件类型分为以下几种: 1、可重定位文件,例如SimpleSection.o; 2、可执行文件,例如/bin/bash; 3、共享目标文件,例如/lib/libc.so。 在Linux 可重定位文件 ELF结构一文中,我们已经分析了可重定位文件ELF结构。本文分析可执行文件的ELF结构。 首先附上源代码:#include
int main()
{...
分类:
系统相关 时间:
2014-09-18 14:50:44
阅读次数:
356
Linux下ELF文件类型分为以下几种: 1、可重定位文件,例如SimpleSection.o; 2、可执行文件,例如/bin/bash; 3、共享目标文件,例如/lib/libc.so。 再接下来的文章中,我们会使用objdump,readelf,hexdump,nm等来分析一个Linux中可重定位文件SimpleSection.o。 首先附上SimpleSecti...
分类:
系统相关 时间:
2014-09-09 21:38:39
阅读次数:
564
Raspberry PI 系列 —— 裸机点亮LED灯
背景
最近刚买了Raspberry PI B+,配置运行了官方提供的Raspbian系统,折腾了一周Linux系统,感觉没啥意思,于是就试着想了解底层的启动流程,通过几天的研究,发现最底层部分的启动是由官方提供的bootcore.bin和start.elf文件来执行(应该是对硬件设备的初始化,如MMU等),之后由下一部分kernel...
分类:
Web程序 时间:
2014-08-24 11:39:42
阅读次数:
302