检查打开的文件是不是ELF格式的文件,如果是就输出节头表的文件偏移
来源:互联网 发布:微商代理授权系统源码 编辑:程序博客网 时间:2024/05/18 01:17
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include "elf.h"
#define FALSE 0
#define TURE 1
#define MAX_SIZE 52
#define Elf_Ehdr Elf64_Ehdr
int OpenElf(char *filename)
{
int fd;
fd = open(filename, O_RDONLY);
if(fd == -1){
printf("Open %s Error!\n", filename);
return FALSE;
}
return fd;
}
//读取Elf头部表函数 :int ReadElf(int fd);
int ReadElf(int fd)
{
char str[MAX_SIZE];
int num;
Elf_Ehdr ehdr64;
memset(str, 0, MAX_SIZE);
if((num = read(fd, str, 52)) != 52){
perror("File NO ELF!\n");
return FALSE;
}
if((str[0] == 0x7f) && (str[1] == 'E') && (str[2] == 'L') && (str[3] == 'F')){
printf("This is ELF file.\n");
printf("文件类别: ");
switch(str[4]){
case 0:
printf("非法目标文件\n");
break;
case 1:
printf("32位目标文件\n");
break;
case 2:
printf("64位目标文件\n");
break;
default:
break;
}
printf("节头表偏移:%p\n",ehdr64.e_shoff);
}else{
perror("File NO ELF!\n");
return FALSE;
}
}
int main(int argc, char *argv[])
{
int boolen;
if(argc == 2){
boolen = OpenElf(argv[1]);
if(boolen == FALSE){
printf("open %s fail!",argv[1]);
return -1;
}
else
{
ReadElf(boolen);
}
}
else
{
printf("参数格式不正确!请正确输入:./main testfile\n");
}
return 0;
}
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include "elf.h"
#define FALSE 0
#define TURE 1
#define MAX_SIZE 52
#define Elf_Ehdr Elf64_Ehdr
int OpenElf(char *filename)
{
int fd;
fd = open(filename, O_RDONLY);
if(fd == -1){
printf("Open %s Error!\n", filename);
return FALSE;
}
return fd;
}
//读取Elf头部表函数 :int ReadElf(int fd);
int ReadElf(int fd)
{
char str[MAX_SIZE];
int num;
Elf_Ehdr ehdr64;
memset(str, 0, MAX_SIZE);
if((num = read(fd, str, 52)) != 52){
perror("File NO ELF!\n");
return FALSE;
}
if((str[0] == 0x7f) && (str[1] == 'E') && (str[2] == 'L') && (str[3] == 'F')){
printf("This is ELF file.\n");
printf("文件类别: ");
switch(str[4]){
case 0:
printf("非法目标文件\n");
break;
case 1:
printf("32位目标文件\n");
break;
case 2:
printf("64位目标文件\n");
break;
default:
break;
}
printf("节头表偏移:%p\n",ehdr64.e_shoff);
}else{
perror("File NO ELF!\n");
return FALSE;
}
}
int main(int argc, char *argv[])
{
int boolen;
if(argc == 2){
boolen = OpenElf(argv[1]);
if(boolen == FALSE){
printf("open %s fail!",argv[1]);
return -1;
}
else
{
ReadElf(boolen);
}
}
else
{
printf("参数格式不正确!请正确输入:./main testfile\n");
}
return 0;
}
0 0
- 检查打开的文件是不是ELF格式的文件,如果是就输出节头表的文件偏移
- 检查打开的文件是不是ELF格式的文件,如果是就输出节头字符串表的地址,并依次输出各节的名称,字符串
- 检查打开的文件是不是ELF格式的文件,如果是就输出节头表表項的数目,各表項指向的节的地址
- 检查打开的文件是不是ELF格式的文件,提取“特别”的节中的信息
- ELF 文件的格式
- ELF文件的格式和加载过程
- ELF文件的格式和加载过程
- ELF文件的格式和加载过程
- linux目标文件ELF的格式
- 检查CSV文件的格式
- 判断一个文件是不是excel格式的
- ELF文件的加载
- 检查当前目录下是否存在指定的文件,如果存在就重新命名
- 文件的打开并输出
- 新窗口打开文件如果是不能识别的文件档自动关闭窗口的问题。
- 文件管理器-打开不同格式的文件
- 检查文件编码是什么格式的
- jni如果文件是.cpp 的问题
- python读取文件,去掉换行符'\n'
- air 移动开发配置文件详解
- Sql Server 快速查看表结构(表描述及字段说明)
- fgets 之用法
- jQuery+PHP+Mysql实现输入自动完成提示的功能
- 检查打开的文件是不是ELF格式的文件,如果是就输出节头表的文件偏移
- python学习笔记(5)
- JAVA 工厂模式
- 开发账号
- 利用栈实现括号匹配算法!
- 非侵入式设计和侵入式设计
- Sharepoint习题——COM(Javascript)
- GitHub commit failed
- NSThread的使用