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

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

?? read_elf.cpp

?? RISC processor ARM-7 emulator
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/* 		case EM_960 : printf("Intel 80960"); break; */
/* 		case EM_PPC : printf("PowerPC"); break; */

/* 		case EM_V800 : printf("NEC V800 series"); break; */
/* 		case EM_FR20 : printf("Fujitsu FR20"); break; */
/* 		case EM_RH32 : printf("TRW RH32"); break; */
/* 		case EM_MMA : printf("Fujitsu MMA"); break; */
/* 		case EM_ARM : printf("ARM"); break; */
/* 		case EM_FAKE_ALPHA : printf("Digital Alpha"); break; */
/* 		case EM_SH : printf("Hitachi SH"); break; */
/* 		case EM_SPARCV9 : printf("SPARC v9 64-bit"); break; */
/* 		case EM_TRICORE : printf("Siemens Tricore"); break; */
/* 		case EM_ARC : printf("Argonaut RISC Core"); break; */
/* 		case EM_H8_300 : printf("Hitachi H8/300"); break; */
/* 		case EM_H8_300H : printf("Hitachi H8/300H"); break; */
/* 		case EM_H8S : printf("Hitachi H8S"); break; */
/* 		case EM_H8_500 : printf("Hitachi H8/500"); break; */
/* 		case EM_IA_64 : printf("Intel Merced"); break; */
/* 		case EM_MIPS_X : printf("Stanford MIPS-X"); break; */
/* 		case EM_COLDFIRE : printf("Motorola Coldfire"); break; */
/* 		case EM_68HC12 : printf("Motorola M68HC12"); break; */
/* 		default: printf("?"); */
/* 	} */
	
	printf("\nNumber of program headers : %u", hdr->e_phnum);
	
	printf("\nNumber of section headers : %u", hdr->e_shnum);
	
	printf("\n");
}

void DumpProgramHeader(Elf32_Phdr *phdr)
{
	printf("--- Program Header ---");
	printf("\nSegment type : ");
	switch(phdr->p_type)
	{	
		case PT_NULL: printf("Program header table entry unused"); break;
		case PT_LOAD: printf("Loadable program segment"); break;
		case PT_DYNAMIC: printf("Dynamic linking information"); break;
		case PT_INTERP: printf("Program interpreter"); break;
		case PT_NOTE: printf("Auxiliary information"); break;
		case PT_SHLIB: printf("Reserved"); break;
		case PT_PHDR: printf("Entry for header table itself"); break;
/* 		case PT_LOOS: printf("Start of OS-specific"); break; */
/* 		case PT_HIOS: printf("End of OS-specific"); break; */
		case PT_LOPROC: printf("Start of processor-specific"); break;
		case PT_HIPROC: printf("End of processor-specific"); break;
	}
	
	printf("\nFile offset : 0x%lx", (unsigned long) phdr->p_offset);
	printf("\nVirtual Address : 0x%lx", (unsigned long) phdr->p_vaddr);
	printf("\nPhysical Address : 0x%lx", (unsigned long) phdr->p_paddr);
	printf("\nFile size : %lu", (unsigned long) phdr->p_filesz);
	printf("\nMemory size : %lu", (unsigned long) phdr->p_memsz);
	printf("\nSegment flags (rwx) : ");
	printf(phdr->p_flags & PF_R ? "r" : "-");
	printf(phdr->p_flags & PF_W ? "w" : "-");
	printf(phdr->p_flags & PF_X ? "x" : "-");
	printf(phdr->p_flags & PF_MASKPROC ? " and some Processor-specific flags" : "");

	printf("\nMemory/File alignment : %u", phdr->p_align);

	printf("\n");
}



void DumpSectionHeader(Elf32_Shdr *shdr, char *string_table)
{
	printf("--- Section header ---");
	printf("\nSection name : %s", string_table + shdr->sh_name);
	printf("\nSection type : ");
	
	switch(shdr->sh_type)
	{
		case SHT_NULL: printf("Section header table entry unused"); break;
		case SHT_PROGBITS: printf("Program data"); break;
		case SHT_SYMTAB: printf("Symbol table"); break;
		case SHT_STRTAB: printf("String table"); break;
		case SHT_RELA: printf("Relocation entries with addends"); break;
		case SHT_HASH: printf("Symbol hash table"); break;
		case SHT_DYNAMIC: printf("Dynamic linking information"); break;
		case SHT_NOTE: printf("Notes"); break;
		case SHT_NOBITS: printf("Program space with no data (bss)"); break;
		case SHT_REL: printf("Relocation entries, no addends"); break;
		case SHT_SHLIB: printf("Reserved"); break;
		case SHT_DYNSYM: printf("Dynamic linker symbol table"); break;
		case SHT_NUM: printf("Number of defined types. "); break;
/* 		case SHT_LOOS: printf("Start OS-specific"); break; */
		case SHT_LOSUNW: printf("Sun-specific low bound. "); break;
		case SHT_SUNW_syminfo: printf("sun ?"); break;
/* 		case SHT_GNU_verdef: printf("Version definition section."); break; */
/* 		case SHT_GNU_verneed: printf("Version needs section."); break; */
/* 		case SHT_GNU_versym: printf("Version symbol table."); break; */
		default : printf("?");
	}
	
	printf("\nSection flags : ");
	
	if(shdr->sh_flags & SHF_WRITE) printf("\n - Writable");
	if(shdr->sh_flags & SHF_ALLOC) printf("\n - Occupies memory during execution");
	if(shdr->sh_flags & SHF_EXECINSTR) printf("\n - Executable");
	if(shdr->sh_flags & SHF_MASKPROC) printf("\n - Processor-specific");
	
	printf("\nFile offset : 0x%x", shdr->sh_offset);
	printf("\nVirtual Address : 0x%x", shdr->sh_addr);

	printf("\n");
}

Elf32_Shdr *GetTextSection(Elf32_Ehdr *hdr, Elf32_Shdr *shdr_table, char
*string_table)
{
	Elf32_Shdr *shdr = shdr_table;
	int i;
	
	for(i = 0; i < hdr->e_shnum; i++)
	{
		if(shdr[i].sh_type == SHT_PROGBITS &&
		   (shdr[i].sh_flags & SHF_ALLOC) != 0 &&
		   (shdr[i].sh_flags & SHF_EXECINSTR) != 0 &&
		   strcmp(GetSymbolName(shdr[i].sh_name, string_table), ".text") == 0)
		{
			return &shdr[i];
		}
	}
	return NULL;
}

Elf32_Shdr *GetDataSection(Elf32_Ehdr *hdr, Elf32_Shdr *shdr_table, char *string_table)
{
	Elf32_Shdr *shdr = shdr_table;
	int i;
	
	for(i = 0; i < hdr->e_shnum; i++)
	{
		if(shdr[i].sh_type == SHT_PROGBITS &&
		   (shdr[i].sh_flags & SHF_ALLOC) != 0 &&
		   (shdr[i].sh_flags & SHF_WRITE) != 0 &&
		   strcmp(GetSymbolName(shdr[i].sh_name, string_table), ".data") == 0)
		{
			return &shdr[i];
		}
	}
	return NULL;
}

Elf32_Shdr *GetBSSSection(Elf32_Ehdr *hdr, Elf32_Shdr *shdr_table, char *string_table)
{
	Elf32_Shdr *shdr = shdr_table;
	int i;
	
	for(i = 0; i < hdr->e_shnum; i++)
	{
		if(shdr[i].sh_type == SHT_NOBITS &&
		   (shdr[i].sh_flags & SHF_ALLOC) != 0 &&
		   (shdr[i].sh_flags & SHF_WRITE) != 0 &&
		   strcmp(GetSymbolName(shdr[i].sh_name, string_table), ".bss") == 0)
		{
			return &shdr[i];
		}
	}
	return NULL;
}

Elf32_Word GetSectionSize(Elf32_Shdr *shdr)
{
	return shdr->sh_size;
}

Elf32_Addr GetSectionAddr(Elf32_Shdr *shdr)
{
	return shdr->sh_addr;
}

Elf32_Word GetSectionType(Elf32_Shdr *shdr)
{
    return shdr->sh_type;
}

Elf32_Word GetSectionFlags(Elf32_Shdr *shdr)
{
	return shdr->sh_flags;
}


int LoadSection(Elf32_Shdr *shdr, void *buffer, FILE *f)
{
	if(fseek(f, shdr->sh_offset, SEEK_SET) != 0) return -1;
	if(fread(buffer, shdr->sh_size, 1, f) != 1) return -1;
	return 0;
}

char *GetSymbolName(Elf32_Half index, char *string_table)
{
	return string_table + index;
}

Elf32_Shdr *GetSymbolTableSection(Elf32_Ehdr *hdr, Elf32_Shdr *shdr_table, char *string_table)
{
	Elf32_Shdr *shdr = shdr_table;
	int i;
	
	for(i = 0; i < hdr->e_shnum; i++)
	{
		if(shdr[i].sh_type == SHT_SYMTAB &&
		   strcmp(GetSymbolName(shdr[i].sh_name, string_table), ".symtab") == 0)
		{
			return &shdr[i];
		}
	}
	return NULL;
}

Elf32_Shdr *GetSymbolStringTableSection(Elf32_Ehdr *hdr, Elf32_Shdr *shdr_table, char *string_table)
{
	Elf32_Shdr *shdr = shdr_table;
	int i;
	
	for(i = 0; i < hdr->e_shnum; i++)
	{
		if(shdr[i].sh_type == SHT_STRTAB &&
		   strcmp(GetSymbolName(shdr[i].sh_name, string_table), ".strtab") == 0)
		{
			return &shdr[i];
		}
	}
	return NULL;
}

Elf32_Sym *LoadSymbolTable(Elf32_Ehdr *hdr, Elf32_Shdr *shdr_table, char *string_table, FILE *f)
{
/*	Elf32_Shdr *shdr = GetSymbolTableSection(hdr, shdr_table, string_table);*/
	Elf32_Word size = GetSectionSize(shdr_table);
	
	Elf32_Sym *symbol_table = (Elf32_Sym *) malloc(size);
	
	return LoadSection(shdr_table, symbol_table, f) ? NULL : symbol_table;
}

Elf32_Sym *GetSymbol(Elf32_Sym *symbol_table, Elf32_Shdr *shdr_symbol_table, char *name, char
*string_table)
{
	unsigned int i;
	
	for(i = 0; i < shdr_symbol_table->sh_size / shdr_symbol_table->sh_entsize; i++)
	{
		if(strcmp(name, GetSymbolName(symbol_table[i].st_name, string_table)) == 0)
		{
			return &symbol_table[i];
		}
	}
	return NULL;
}

Elf32_Addr GetSymbolAddr(Elf32_Sym *symbol, Elf32_Shdr *shdr_table)
{
	switch(symbol->st_shndx)
	{
		case SHN_ABS:
			return symbol->st_value;
	}
	return shdr_table[symbol->st_shndx].sh_addr + symbol->st_value;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久99久久精品免费看蜜桃| 欧美少妇一区二区| www..com久久爱| 精品一区二区三区免费播放| 麻豆高清免费国产一区| 蜜桃视频一区二区三区在线观看| 首页国产欧美久久| 免费xxxx性欧美18vr| 经典三级一区二区| 国产美女一区二区三区| 福利视频网站一区二区三区| 成人网在线免费视频| 色综合久久久久| 欧美日韩综合在线免费观看| 91精品国产一区二区| 国产精品一区二区在线观看不卡| www.亚洲色图| 韩日欧美一区二区三区| 国产不卡在线一区| 在线视频欧美区| 555夜色666亚洲国产免| 亚洲精品在线电影| 中文字幕一区二区日韩精品绯色| 亚洲在线观看免费| 精品一二三四在线| bt欧美亚洲午夜电影天堂| 欧美在线观看一区| 久久亚洲免费视频| 亚洲欧美激情插| 久久精品国产亚洲高清剧情介绍 | 国产精品灌醉下药二区| 国产精品99久久久久久久vr| 91色综合久久久久婷婷| 看片的网站亚洲| 成人黄色片在线观看| 欧美三级欧美一级| 国产女主播一区| 亚洲成av人综合在线观看| 风流少妇一区二区| 欧美一区二区精美| 亚洲三级小视频| 国产一区三区三区| 日本韩国精品一区二区在线观看| 日韩女优制服丝袜电影| 亚洲欧美电影院| 国产美女主播视频一区| 欧美日韩亚洲丝袜制服| 国产精品家庭影院| 狠狠色丁香婷婷综合久久片| 在线免费观看一区| 中文字幕第一页久久| 免费美女久久99| 精品视频在线免费看| 国产精品不卡一区| 国产成人亚洲精品狼色在线| 欧美精选一区二区| 一区二区三区中文免费| 成人av在线播放网址| 久久久久久久综合日本| 免费一级欧美片在线观看| 色诱视频网站一区| 亚洲欧洲www| 成人激情视频网站| 国产精品美女久久久久高潮| 国产在线播放一区| 精品人在线二区三区| 香港成人在线视频| 欧美日韩免费一区二区三区视频| 亚洲女厕所小便bbb| a在线播放不卡| 亚洲欧美在线高清| 色综合视频在线观看| 亚洲欧美日韩国产一区二区三区| 岛国精品在线观看| 中文字幕av资源一区| 豆国产96在线|亚洲| 国产精品久久久一区麻豆最新章节| 国产在线视频一区二区三区| 精品国产伦理网| 国产大陆亚洲精品国产| 中文乱码免费一区二区| 成人sese在线| 亚洲精品一二三| 欧美日韩免费不卡视频一区二区三区| 一区二区三区小说| 欧美精品高清视频| 久久99国内精品| 国产欧美一区在线| 91免费视频大全| 亚洲h在线观看| 亚洲精品一区在线观看| 岛国精品在线播放| 亚洲一级在线观看| 欧美一二三在线| 国产v综合v亚洲欧| 亚洲人成精品久久久久久| 色拍拍在线精品视频8848| 亚洲成人黄色小说| 精品国产一区久久| 99久久久久免费精品国产| 亚洲午夜在线电影| 亚洲精品一区二区三区精华液| 国产精品自拍毛片| 亚洲最新视频在线观看| 日韩欧美激情四射| 97精品久久久午夜一区二区三区 | 亚洲激情中文1区| 欧美精选在线播放| 成人性色生活片| 亚洲国产成人高清精品| 久久影院午夜论| 欧美专区日韩专区| 国产成人在线视频网站| 亚洲不卡在线观看| 国产精品久久久久久久午夜片| 欧美影视一区二区三区| 国产91丝袜在线18| 日韩在线一区二区| 亚洲精品日日夜夜| 久久久久国产免费免费| 欧美色图在线观看| 丁香网亚洲国际| 久久成人18免费观看| 亚洲欧美aⅴ...| 国产香蕉久久精品综合网| 6080午夜不卡| 91浏览器入口在线观看| 国产一区二区三区免费播放| 午夜视频在线观看一区| 亚洲精品水蜜桃| 欧美国产成人在线| 久久先锋影音av鲁色资源网| 欧美日韩卡一卡二| 色老汉av一区二区三区| 成人激情动漫在线观看| 国产乱理伦片在线观看夜一区| 午夜精品国产更新| 亚洲一区二区高清| 自拍偷在线精品自拍偷无码专区| 国产午夜亚洲精品午夜鲁丝片| 洋洋av久久久久久久一区| 韩国中文字幕2020精品| 国产精品99久久久久久宅男| 亚洲成人一区二区| 亚洲精品国产a久久久久久| 欧美激情在线免费观看| 久久久久国产精品麻豆ai换脸| 正在播放亚洲一区| 51精品视频一区二区三区| 91福利在线免费观看| 色婷婷精品久久二区二区蜜臀av| 成人av小说网| 成人深夜视频在线观看| 成人综合婷婷国产精品久久免费| 国产精品资源在线观看| 岛国一区二区三区| 懂色中文一区二区在线播放| 国产69精品久久久久毛片| 成人综合在线网站| www.色综合.com| 色天天综合久久久久综合片| 欧美在线制服丝袜| 91麻豆精品国产91久久久资源速度| 欧美日韩亚洲综合在线| 91精品国产乱码| 精品久久国产字幕高潮| 国产日韩高清在线| 1024成人网| 天天操天天干天天综合网| 日韩av中文字幕一区二区| 久久99精品久久久久久久久久久久| 免费人成黄页网站在线一区二区| 久久99精品久久久久久国产越南| 国产一区二区三区| 91免费看片在线观看| 3atv一区二区三区| 国产亚洲一二三区| 一区二区三区鲁丝不卡| 免费高清在线一区| 丰满白嫩尤物一区二区| 在线观看精品一区| 精品国产自在久精品国产| 国产精品国产自产拍高清av| 一区二区三区在线不卡| 久88久久88久久久| 99这里只有精品| 日韩视频免费观看高清在线视频| 欧美国产日韩a欧美在线观看| 一区二区理论电影在线观看| 美女视频黄久久| 91在线一区二区| 精品国产自在久精品国产| 国产精品夫妻自拍| 麻豆久久久久久| 日本久久精品电影| 久久日一线二线三线suv| 亚洲制服丝袜一区| 成人精品gif动图一区| 欧美三级三级三级爽爽爽| 久久精品人人爽人人爽|