#include "elf.h"
#include
int main(int argc, char *argv[])
{
FILE *fp;
int i = 0;
int fd = 0;
Elf64_Ehdr ehdr;
if ((fp=fopen(argv[1],"r"))==NULL)
{
...
分类:
其他好文 时间:
2014-09-12 08:54:53
阅读次数:
183
//检查打开的文件是不是ELF格式的文件
//检验ELF头
//获得节头表的地址
//遍历节头表,依次查看一个节的属性,从节头字符串表中找到其名称,如果名称和“特别”的section名匹配,则找到此节的地址
//提取“特别”的节中的信息
//显示上面提取的信息
#include
#include
#include
#include
int main(int argc,char...
分类:
其他好文 时间:
2014-09-12 08:54:43
阅读次数:
220
看,宝藏就在那儿在上一篇文章中,我们提到用按图索骥比喻库的初始化过程,那么现在有了地图,接下来的事情就是去寻找我们感兴趣的宝藏了。这个宝藏可能是一个ELF文件的程序文本段,也有可能是程序的某个不知名的代码段,这些都取决于你想要什么信息。我建议你去阅读ELF 的官方标准,那里边讲的比较清楚。我这里只是...
分类:
其他好文 时间:
2014-08-17 10:24:52
阅读次数:
606
寻宝要先设计路线图对一个ELF文件来说,它里边装个一个程序的所有信息。我们想要拿的程序信息就在这个ELF文件的某个地址处。可是我们根本就不知道这个具体的地址是哪个,怎么办?举个较形象的例子来描述我们将要的做的事情。峨眉山的山道上放着一大箱金子,我们想搞到这箱黄金。所以在动手之前,我们应该先搞清楚这箱...
分类:
其他好文 时间:
2014-08-10 18:15:30
阅读次数:
334
抽象?抽谁的象? ELF是一种链接执行格式,它规定了对于一个ELF文件的基本数据类型是什么样的.可是,要解析一个ELF文件,而这个ELF文件或者是32Bits 或者是 64Bits,反正字长是未定的,怎么办?难道我们要定义两套解析的接口,以对应不同的字长的ELF文件吗?如果要这样做,不是不可以,只是...
分类:
其他好文 时间:
2014-08-02 20:53:24
阅读次数:
253
ELF格式简介 ELF是现代linux/unix流行的程序可执行链接格式,它有官方定义文档,具体的资料在Tool Interface Standard Executable and Linking Format Specification version 1.2 有其对应的详细描述。我在这里不会讲述...
分类:
其他好文 时间:
2014-07-28 13:43:40
阅读次数:
368
1、arm-linux-gcc 常用的参数:-o[制定输出文件名] -c[只到编译停止,不连接] -g[键入调试信息] -xO[优化级别] -w/W(警告等级) arm-linux-gcc -o dest source,直接编译出可执行文件elf格式 arm-linux-gcc -o ...
分类:
其他好文 时间:
2014-07-27 22:38:49
阅读次数:
214
跨平台是什么意思呢?先了解一下平台的概念以及平台的差异。我们知道一个VC编译出来的*.exe是不能在Linux运行的,不能运行的原因可以概括为以下几个方面:
1. 文件的结构与格式
可执行程序是按定义好的格式来组织的, Microsoft 他 GNU对程序文件的定义是不一样的,如GNU使用 ELF格式定义。也就是说,当操作系统(Windows/Linux)试图把一个程序文件加载到内存里准备运行...
分类:
编程语言 时间:
2014-06-15 17:17:33
阅读次数:
419
ldd命令用于判断某个可执行的 binary 档案含有什么动态函式库。 参数说明: --version
打印ldd的版本号 -v --verbose 打印所有信息,例如包括符号的版本信息 -d --data-relocs
执行符号重部署,并报告缺少的目标对象(只对ELF格式适用) -r -...
分类:
其他好文 时间:
2014-06-10 19:54:17
阅读次数:
258