检查打开的文件是不是ELF格式的文件,提取“特别”的节中的信息
来源:互联网 发布:布丁软件官网 编辑:程序博客网 时间:2024/05/09 09:51
//检验ELF头
//获得节头表的地址
//遍历节头表,依次查看一个节的属性,从节头字符串表中找到其名称,如果名称和“特别”的section名匹配,则找到此节的地址
//提取“特别”的节中的信息
//显示上面提取的信息
#include<stdio.h>
#include<elf.h>
#include<stdlib.h>
#include<string.h>
int main(int argc,char *argv[])
{
FILE *fp;
Elf64_Ehdr *ehdr;
Elf64_Shdr *shdr;
char buffer[1024]={0};
int i=0,j=0;
long length;
fp=fopen(argv[1],"rb");
if(fp==NULL)
{
printf("can not open %s\n",argv[1]);
return -1;
}
ehdr = (Elf64_Ehdr *)malloc(sizeof(Elf64_Ehdr));
shdr = (Elf64_Shdr *)malloc(sizeof(Elf64_Shdr));
fread(ehdr,sizeof(Elf64_Ehdr),1,fp);
if(ehdr->e_ident[EI_MAG0] == ELFMAG0 ||
ehdr->e_ident[EI_MAG1] == ELFMAG1 ||
ehdr->e_ident[EI_MAG2] == ELFMAG2 ||
ehdr->e_ident[EI_MAG3] == ELFMAG3)
{
printf("此文件是ELF文件!\n");
printf("节头表地址是 %p\n",ehdr+ehdr->e_shoff);
//获取节头字符串表地址
fseek(fp,ehdr->e_shoff,0);
fread(shdr,sizeof(Elf64_Shdr),ehdr->e_shnum,fp);
length = shdr[ehdr->e_shstrndx].sh_offset;
printf("节头字符串表的地址 %p\n",length);
//获取字符串表各节名称
fseek(fp,length,0);
fread(buffer,1,sizeof(buffer),fp);
//匹配"infosection"
for(i=0;i<=(int)ehdr->e_shnum;i++)
{
char *name=&buffer[shdr[i].sh_name];
if(!strcmp(name,".infosection"))
{
printf("匹配到的section name is %s\n", name);
char temp[shdr[i].sh_size];
fseek(fp, shdr[i].sh_offset, 0);
fread(temp, 1, shdr[i].sh_size, fp);
printf("匹配到的节的 message is : %s", temp);
}
}
}
else
{
printf("此文件不是ELF文件\n");
}
fclose(fp);
return 0;
}
- 检查打开的文件是不是ELF格式的文件,提取“特别”的节中的信息
- 检查打开的文件是不是ELF格式的文件,如果是就输出节头表的文件偏移
- 检查打开的文件是不是ELF格式的文件,如果是就输出节头表表項的数目,各表項指向的节的地址
- 检查打开的文件是不是ELF格式的文件,如果是就输出节头字符串表的地址,并依次输出各节的名称,字符串
- ELF 文件的格式
- ELF文件的格式和加载过程
- ELF文件的格式和加载过程
- ELF文件的格式和加载过程
- linux目标文件ELF的格式
- 检查CSV文件的格式
- 判断一个文件是不是excel格式的
- 提取android apk文件中的dat格式的图片资源
- 用id3lib提取mp3文件中的图片信息的实例
- ELF文件的加载
- Excel的文件打开特别慢,xls文件特别大解决一例
- [Android Pro] 查看 keystore文件的签名信息 和 检查apk文件中的签名信息
- 文件管理器-打开不同格式的文件
- 检查文件编码是什么格式的
- org.apache.log4j.Logger详解
- 检查打开的文件是不是ELF格式的文件,如果是就输出节头字符串表的地址,并依次输出各节的名称,字符串
- matlab经典教程分享
- MySQL C++接口封装
- 回话session和cookie的区别
- 检查打开的文件是不是ELF格式的文件,提取“特别”的节中的信息
- Android探秘:SimpleAdapter与Bitmap的结合
- int* (*a)[10]
- MATLAB中常用到的绘图函数
- Objective-C语法快速参考
- 牛人的博客链接s
- 框架——是否为新版本
- Spring Security3源码分析(20)-CAS支持
- Iptables 指南