亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? read_elf.cpp

?? RISC processor ARM-7 emulator
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*************************************************************************
    Copyright (C) 2002,2003,2004,2005 Wei Qin
    See file COPYING for more information.

    This program is free software; you can redistribute it and/or modify    
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
*************************************************************************/

#include <read_elf.h>
#include <stdlib.h>
#include <string.h>

#define SwapHalf(a) (((a & 0x00ff) << 8) | ((a & 0xff00) >> 8))
#define SwapWord(a) (((a & 0xff000000) >> 24) | ((a & 0x00ff0000) >> 8) | ((a & 0x0000ff00) << 8) | ((a & 0x000000ff) << 24))
#define SwapAddr(a) SwapWord(a)
#define SwapOff(a) SwapWord(a)

int LittleEndian()
{
	Elf32_Word a = 0x01020304;
	return *(char *) &a == 0x04;
}

void SwapElfHeader(Elf32_Ehdr *hdr)
{
	hdr->e_type = SwapHalf(hdr->e_type);
	hdr->e_machine = SwapHalf(hdr->e_machine);
	hdr->e_version = SwapWord(hdr->e_version);
	hdr->e_entry = SwapAddr(hdr->e_entry);
	hdr->e_phoff = SwapOff(hdr->e_phoff);
	hdr->e_shoff = SwapOff(hdr->e_shoff);
	hdr->e_flags = SwapWord(hdr->e_flags);
	hdr->e_ehsize = SwapHalf(hdr->e_ehsize);
	hdr->e_phentsize = SwapHalf(hdr->e_phentsize);
	hdr->e_phnum = SwapHalf(hdr->e_phnum);
	hdr->e_shentsize = SwapHalf(hdr->e_shentsize);
	hdr->e_shnum = SwapHalf(hdr->e_shnum);
	hdr->e_shstrndx = SwapHalf(hdr->e_shstrndx);
}

void SwapProgramHeader(Elf32_Phdr *phdr)
{
	phdr->p_type = SwapWord(phdr->p_type);
	phdr->p_offset = SwapOff(phdr->p_offset);
	phdr->p_vaddr = SwapAddr(phdr->p_vaddr);
	phdr->p_paddr = SwapAddr(phdr->p_paddr);
	phdr->p_filesz = SwapWord(phdr->p_filesz);
	phdr->p_memsz = SwapWord(phdr->p_memsz);
	phdr->p_flags = SwapWord(phdr->p_flags);
	phdr->p_align = SwapWord(phdr->p_align);
}

void SwapSectionHeader(Elf32_Shdr *shdr)
{
	shdr->sh_name = SwapWord(shdr->sh_name);
	shdr->sh_type = SwapWord(shdr->sh_type);
	shdr->sh_flags = SwapWord(shdr->sh_flags);
	shdr->sh_addr = SwapAddr(shdr->sh_addr);
	shdr->sh_offset = SwapOff(shdr->sh_offset);
	shdr->sh_size = SwapWord(shdr->sh_size);
	shdr->sh_link = SwapWord(shdr->sh_link);
	shdr->sh_info = SwapWord(shdr->sh_info);
	shdr->sh_addralign = SwapWord(shdr->sh_addralign);
	shdr->sh_entsize = SwapWord(shdr->sh_entsize);
}

void AdjustElfHeader(Elf32_Ehdr *hdr)
{
	switch(hdr->e_ident[EI_DATA])
	{
		case ELFDATA2LSB:
			if(!LittleEndian())
				SwapElfHeader(hdr);
			break;
		case ELFDATA2MSB:
			if(LittleEndian())
				SwapElfHeader(hdr);
			break;
	}
}

void AdjustProgramHeader(Elf32_Ehdr *hdr, Elf32_Phdr *phdr)
{
	switch(hdr->e_ident[EI_DATA])
	{
		case ELFDATA2LSB:
			if(!LittleEndian())
				SwapProgramHeader(phdr);
			break;
		case ELFDATA2MSB:
			if(LittleEndian())
				SwapProgramHeader(phdr);
			break;
	}
}
void AdjustSectionHeader(Elf32_Ehdr *hdr, Elf32_Shdr *shdr)
{
	switch(hdr->e_ident[EI_DATA])
	{
		case ELFDATA2LSB:
			if(!LittleEndian())
				SwapSectionHeader(shdr);
			break;
		case ELFDATA2MSB:
			if(LittleEndian())
				SwapSectionHeader(shdr);
			break;
	}
}

Elf32_Ehdr *ReadElfHeader(FILE *f)
{
	Elf32_Ehdr *hdr = (Elf32_Ehdr *) malloc(sizeof(Elf32_Ehdr));

	if(fseek(f, 0, SEEK_SET) != 0)
	{
		free(hdr);
		return NULL;
	}
	if(fread(hdr, sizeof(Elf32_Ehdr), 1, f) != 1)
	{
		free(hdr);
		return NULL;
	}
	
	if(hdr->e_ident[EI_MAG0] != 0x7f ||
	   hdr->e_ident[EI_MAG1] != 'E' ||
	   hdr->e_ident[EI_MAG2] != 'L' ||
	   hdr->e_ident[EI_MAG3] != 'F')
	{
		free(hdr);
		return NULL;
	}
	
	hdr = (Elf32_Ehdr *) realloc(hdr, hdr->e_ehsize);

	AdjustElfHeader(hdr);	
	return hdr;
}

Elf32_Phdr *ReadProgramHeaders(Elf32_Ehdr *hdr, FILE *f)
{
	int i;
	unsigned long sz = hdr->e_phnum * hdr->e_phentsize;
	Elf32_Phdr *phdr = (Elf32_Phdr *) malloc(sz);
	
	fseek(f, hdr->e_phoff, SEEK_SET);
	fread(phdr, sz, 1, f);
	
	for(i = 0; i < hdr->e_phnum; i++)
		AdjustProgramHeader(hdr, phdr + i);
	
	return phdr;
}

Elf32_Shdr *ReadSectionHeaders(Elf32_Ehdr *hdr, FILE *f)
{
	int i;
	unsigned long sz = hdr->e_shnum * hdr->e_shentsize;
	Elf32_Shdr *shdr = (Elf32_Shdr *) malloc(sz);
	
	if(fseek(f, hdr->e_shoff, SEEK_SET) != 0)
	{
		free(shdr);
		return NULL;
	}
	if(fread(shdr, sz, 1, f) != 1)
	{
		free(shdr);
		return NULL;
	}

	for(i = 0; i < hdr->e_shnum; i++)
		AdjustSectionHeader(hdr, shdr + i);
	
	return shdr;
}


char *LoadStringTable(Elf32_Ehdr *hdr, Elf32_Shdr *shdr_table, FILE *f)
{
	Elf32_Shdr *shdr = shdr_table + hdr->e_shstrndx;
	char *string_table;

	string_table = (char *) malloc(shdr->sh_size);
	fseek(f, shdr->sh_offset, SEEK_SET);
	fread(string_table, shdr->sh_size, 1, f);
	
	return string_table;
}

void DumpElfHeader(Elf32_Ehdr *hdr)
{
	printf("--- Elf Header ---");
	printf("\nClass : ");
	switch(hdr->e_ident[EI_CLASS])
	{
		case ELFCLASSNONE : printf("Invalid class"); break;
		case ELFCLASS32 : printf("32-bit objects"); break;
		case ELFCLASS64 : printf("64-bit objects"); break;
		default : printf("?"); break;
	}
	
	printf("\nData encoding : ");
	switch(hdr->e_ident[EI_DATA])
	{
		case ELFDATANONE : printf("Invalid data encoding"); break;
		case ELFDATA2LSB : printf("2's complement, little endian"); break;
		case ELFDATA2MSB : printf("2's complement, big endian"); break;
	}
	
	printf("\nVersion : %u", (unsigned int) hdr->e_ident[EI_VERSION]);	
	
/* 	printf("\nOS ABI identification : "); */
/* 	switch(hdr->e_ident[EI_OSABI]) */
/* 	{ */
/* 		case ELFOSABI_SYSV : printf("UNIX System V ABI"); break; */
/* 		case ELFOSABI_HPUX : printf("HP-UX"); break; */
/* 		case ELFOSABI_ARM : printf("ARM"); break; */
/* 		case ELFOSABI_STANDALONE : printf("Standalone (embedded) application"); */
/* 		default : printf("?"); */
/* 	} */
	
	printf("\nObject File Type : ");
	
	switch(hdr->e_type)
	{
		case ET_NONE : printf("No file type"); break;
		case ET_REL : printf("Relocatable file"); break;
		case ET_EXEC : printf("Executable file"); break;
		case ET_DYN : printf("Shared object file"); break;
		case ET_CORE : printf("Core file"); break;
		case ET_NUM : printf("Number of defined types"); break;
		case ET_LOPROC : printf("Processor-specific"); break;
		case ET_HIPROC : printf("Processor-specific"); break;
		default : printf("?");
	}
	
	printf("\nTarget machine : ");
	
/* 	switch(hdr->e_machine) */
/* 	{ */
/* 		case EM_NONE : printf("No machine"); break; */
/* 		case EM_M32 : printf("AT&T WE 32100"); break; */
/* 		case EM_SPARC : printf("SUN SPARC"); break; */
/* 		case EM_386 : printf("Intel 80386"); break; */
/* 		case EM_68K : printf("Motorola m68k family"); break; */
/* 		case EM_88K : printf("Motorola m88k family"); break; */
/* 		case EM_486 : printf("Intel 80486"); break; */
/* 		case EM_860 : printf("Intel 80860"); break; */
/* 		case EM_MIPS : printf("MIPS R3000 big-endian"); break; */
/* 		case EM_S370 : printf("Amdahl"); break; */
/* 		case EM_MIPS_RS4_BE : printf("MIPS R4000 big-endian"); break; */
/* 		case EM_RS6000 : printf("RS6000"); break; */

/* 		case EM_PARISC : printf("HPPA"); break; */
/* 		case EM_nCUBE : printf("nCUBE"); break; */
/* 		case EM_VPP500 : printf("Fujitsu VPP500"); break; */
/* 		case EM_SPARC32PLUS : printf("Sun v8plus"); break; */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品精品国产高清a毛片牛牛 | 国产精品一二三区在线| 一区二区在线电影| 亚洲视频免费在线观看| 96av麻豆蜜桃一区二区| 精品综合久久久久久8888| 成人午夜视频在线观看| 欧美日韩色综合| 久久久亚洲精品石原莉奈| 国产精品国产三级国产普通话三级 | 亚洲国产毛片aaaaa无费看| 国产精品萝li| 成人免费在线观看入口| 自拍偷拍欧美精品| 夜夜嗨av一区二区三区网页| 亚洲第一激情av| 日本aⅴ精品一区二区三区 | 国产精品中文字幕欧美| 国产一区在线不卡| www.综合网.com| 在线观看91视频| 91精品在线观看入口| 久久九九全国免费| 亚洲色欲色欲www在线观看| 亚洲九九爱视频| 日本v片在线高清不卡在线观看| 九九国产精品视频| av午夜精品一区二区三区| 色视频成人在线观看免| 日韩一级高清毛片| 日韩欧美美女一区二区三区| 久久久亚洲午夜电影| 久久久www免费人成精品| 亚洲午夜久久久久久久久久久| 久久久久久久久97黄色工厂| 国产精品丝袜一区| 亚洲1区2区3区4区| 国产98色在线|日韩| 欧美三级电影在线观看| 久久久99久久| 亚洲成人免费观看| 国产成人免费在线| 8x8x8国产精品| 亚洲国产精品v| 一区二区三区精品在线| 国产麻豆精品视频| 欧美日韩成人综合| 亚洲国产精品传媒在线观看| 久久99久国产精品黄毛片色诱| 久久一日本道色综合| 欧美激情一区二区在线| 亚洲一区二区成人在线观看| 国产精品一区二区果冻传媒| 欧美午夜免费电影| 国产女人18水真多18精品一级做| 午夜亚洲国产au精品一区二区| 韩国av一区二区三区在线观看| 在线观看欧美日本| 中文久久乱码一区二区| 黑人精品欧美一区二区蜜桃| 欧美日韩精品二区第二页| 亚洲三级久久久| 激情五月激情综合网| 欧美一区二区三级| 午夜久久久久久| 欧美主播一区二区三区美女| 国产精品入口麻豆九色| 国产在线一区观看| 精品国产一区二区三区久久久蜜月| 亚洲一区二区中文在线| 色婷婷亚洲精品| 亚洲色图视频免费播放| 99久久久国产精品| 亚洲欧洲一区二区三区| 99久久伊人久久99| 亚洲欧洲性图库| 91蜜桃免费观看视频| 亚洲美女在线一区| 91国偷自产一区二区开放时间 | 久久久综合网站| 日韩高清不卡一区二区三区| 国产亚洲欧美激情| 另类小说色综合网站| 日韩亚洲国产中文字幕欧美| 日韩激情视频在线观看| 欧美日韩国产系列| 日韩激情av在线| 日韩欧美亚洲国产精品字幕久久久| 人人超碰91尤物精品国产| 777午夜精品免费视频| 麻豆精品一区二区av白丝在线| 日韩欧美资源站| 国产呦萝稀缺另类资源| 中文字幕一区二区三区不卡在线 | 91小视频在线| 一区二区三区欧美日| 欧美日韩aaaaaa| 黄色日韩网站视频| 自拍偷拍亚洲欧美日韩| 欧美中文字幕一区二区三区亚洲| 亚洲成人午夜影院| ww久久中文字幕| 91丨九色丨蝌蚪富婆spa| 亚洲影院免费观看| 2021国产精品久久精品| 国产美女在线观看一区| 亚洲欧美区自拍先锋| 色美美综合视频| www.欧美亚洲| 亚洲成人免费电影| 国产日产欧美一区| 欧美色电影在线| 精品一区二区影视| 日韩理论片一区二区| 日韩精品在线网站| 91美女片黄在线| 国产一区二区三区免费观看| 亚洲欧洲国产日本综合| 日韩欧美一二三四区| 91免费视频观看| 国产自产视频一区二区三区| 亚洲人成网站在线| 精品久久久久久久久久久久包黑料| 成人av网站大全| 久久超碰97中文字幕| 亚洲一区欧美一区| 中文欧美字幕免费| 日韩欧美一级二级| 在线一区二区视频| 精品在线亚洲视频| 精品视频在线看| 奇米色一区二区| 又紧又大又爽精品一区二区| 久久久久国产精品麻豆| 欧美精品久久久久久久久老牛影院 | 精品在线亚洲视频| 亚洲超丰满肉感bbw| 中文字幕欧美一| 国产天堂亚洲国产碰碰| 7777精品伊人久久久大香线蕉完整版| 北岛玲一区二区三区四区| 精品一区二区精品| 免费精品视频最新在线| 五月天久久比比资源色| 亚洲激情六月丁香| 亚洲日本在线a| 亚洲人成网站影音先锋播放| 亚洲国产成人一区二区三区| 26uuu久久天堂性欧美| 精品久久久久久久人人人人传媒| 欧美精品99久久久**| 欧美日韩精品系列| 欧美精品国产精品| 7777女厕盗摄久久久| 777午夜精品免费视频| 欧美精品在线视频| 欧美一区二区视频在线观看| 欧美精品 国产精品| 欧美一级欧美一级在线播放| 91精品国产色综合久久不卡电影| 欧美伦理视频网站| 91精品国产色综合久久ai换脸| 日韩一区二区中文字幕| 精品国产污污免费网站入口| 精品国产乱码久久久久久免费| 欧美tickling网站挠脚心| 久久综合久久99| 日本一区二区三区四区在线视频| 欧美国产97人人爽人人喊| 1024精品合集| 亚洲精品免费一二三区| 天天色综合天天| 久久精品噜噜噜成人av农村| 国产最新精品免费| 99精品欧美一区二区蜜桃免费| 91麻豆蜜桃一区二区三区| 欧美亚一区二区| 精品久久久久久最新网址| 亚洲精品一区二区三区蜜桃下载| 国产亚洲成aⅴ人片在线观看| 中文字幕av不卡| 一区二区欧美视频| 免费人成精品欧美精品| 春色校园综合激情亚洲| 欧亚一区二区三区| 久久综合九色综合97婷婷 | 中文字幕一区日韩精品欧美| 性久久久久久久久久久久| 狠狠色丁香久久婷婷综合_中| 99视频在线精品| 秋霞av亚洲一区二区三| 国产喷白浆一区二区三区| 91精品蜜臀在线一区尤物| 精品久久久久99| 亚洲一区二区三区国产| 国产一区二区视频在线| 欧美视频一区二| 中文字幕+乱码+中文字幕一区| 日韩精品欧美成人高清一区二区| 国产宾馆实践打屁股91|