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

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

?? elf_analy.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁 / 共 2 頁
字號:
						if (demangled) free(demangled);						addComment(address, 0, "");						addComment(address, 0, ";********************************************************");						addComment(address, 0, elf_buffer);						addComment(address, 0, ";********************************************************");						pushAddress(address, address);						assignSymbol(address, label, label_func);					}					delete address;				}				break;			}			case ELF_STT_OBJECT: {				char *label = name;				if (!getSymbolByName(label)) {					Address *address = createAddress64(sym.st_value);					char *demangled = cplus_demangle(label, DMGL_PARAMS | DMGL_ANSI);					if (!demangled) demangled = cplus_demangle_v3(label, DMGL_PARAMS | DMGL_ANSI | DMGL_TYPES);					make_valid_name(label, label);					ht_snprintf(elf_buffer, sizeof elf_buffer, "; data object %s, size %qd (%s)", (demangled) ? demangled : label, sym.st_size, bind);					free(demangled);					addComment(address, 0, "");					addComment(address, 0, ";********************************************************");					addComment(address, 0, elf_buffer);					addComment(address, 0, ";********************************************************");					assignSymbol(address, label, label_data);					delete address;				}				break;			}			case ELF_STT_SECTION:			case ELF_STT_FILE:				break;			}			free(name);		}		if (entropy) free(entropy);	}}/* * */void ElfAnalyser::load(ObjectStream &f){    	GET_OBJECT(f, validarea);	Analyser::load(f);}/* * */void ElfAnalyser::done(){	validarea->done();	delete validarea;	Analyser::done();}ObjectID ElfAnalyser::getObjectID() const{	return ATOM_ELF_ANALYSER;}/* * */uint ElfAnalyser::bufPtr(Address *Addr, byte *buf, int size){	FileOfs ofs = addressToFileofs(Addr);/*     if (ofs == INVALID_FILE_OFS) {		int as = 1;	}*/	assert(ofs != INVALID_FILE_OFS);	file->seek(ofs);	return file->read(buf, size);}bool ElfAnalyser::convertAddressToELFAddress(Address *addr, ELFAddress *r){	if (addr->getObjectID()==ATOM_ADDRESS_FLAT_32) {		r->a32 = ((AddressFlat32*)addr)->addr;		return true;	} else if (addr->getObjectID()==ATOM_ADDRESS_X86_FLAT_32) {		r->a32 = ((AddressX86Flat32*)addr)->addr;		return true;	} else if (addr->getObjectID()==ATOM_ADDRESS_FLAT_64) {		r->a64 = ((AddressFlat64*)addr)->addr;		return true;	} else {		return false;	}}Address *ElfAnalyser::createAddress(){	switch (elf_shared->ident.e_ident[ELF_EI_CLASS]) {			case ELFCLASS32: {				switch (elf_shared->header32.e_machine) {					case ELF_EM_386:						return new AddressX86Flat32();				}				return new AddressFlat32();			}			case ELFCLASS64: {/*				switch (elf_shared->header32.e_machine) {					case ELF_EM_386:						return new AddressX86Flat32(0);				}*/				return new AddressFlat64();			}	}	return new AddressFlat32();}Address *ElfAnalyser::createAddress32(uint32 addr){	switch (elf_shared->header32.e_machine) {		case ELF_EM_386:			return new AddressX86Flat32(addr);	}	return new AddressFlat32(addr);}Address *ElfAnalyser::createAddress64(uint64 addr){	return new AddressFlat64(addr);}/* * */Assembler *ElfAnalyser::createAssembler(){	switch (elf_shared->ident.e_ident[ELF_EI_CLASS]) {	case ELFCLASS32:		switch (elf_shared->header32.e_machine) {		case ELF_EM_386:			Assembler *a = new x86asm(X86_OPSIZE32, X86_ADDRSIZE32);			a->init();			return a;		}	case ELFCLASS64:		switch (elf_shared->header64.e_machine) {		case ELF_EM_X86_64:			Assembler *a = new x86_64asm();			a->init();			return a;		}	}	return NULL;}/* * */FileOfs ElfAnalyser::addressToFileofs(Address *Addr){	if (validAddress(Addr, scinitialized)) {		FileOfs ofs;		ELFAddress ea;		if (!convertAddressToELFAddress(Addr, &ea)) return INVALID_FILE_OFS;		if (!elf_addr_to_ofs(&elf_shared->sheaders, elf_shared->ident.e_ident[ELF_EI_CLASS], ea, &ofs)) return INVALID_FILE_OFS;		return ofs;	} else {		return INVALID_FILE_OFS;	}}/* * */const char *ElfAnalyser::getSegmentNameByAddress(Address *Addr){	static char elf_sectionname[33];	elf_section_headers *sections=&elf_shared->sheaders;	int i;	ELFAddress ea;	if (!convertAddressToELFAddress(Addr, &ea)) return NULL;	if (!elf_addr_to_section(sections, elf_shared->ident.e_ident[ELF_EI_CLASS], ea, &i)) return NULL;	if (i == elf_shared->fake_undefined_shidx) {		strcpy(elf_sectionname, "$$HT_FAKE$$");	} else {		ht_strlcpy(elf_sectionname, elf_shared->shnames[i], sizeof elf_sectionname);	}	return elf_sectionname;}/* * */String &ElfAnalyser::getName(String &res){	return file->getDesc(res);}/* * */const char *ElfAnalyser::getType(){	return "ELF/Analyser";}/* * */void ElfAnalyser::initCodeAnalyser(){	Analyser::initCodeAnalyser();}/* * */void ElfAnalyser::initUnasm(){	DPRINTF("elf_analy: ");	int machine = 0;	bool elf64 = false;	switch (elf_shared->ident.e_ident[ELF_EI_CLASS]) {		case ELFCLASS32: machine = elf_shared->header32.e_machine; break;		case ELFCLASS64: machine = elf_shared->header64.e_machine; elf64 = true; break;	}	switch (machine) {	case ELF_EM_386:		DPRINTF("initing analy_x86_disassembler\n");		analy_disasm = new AnalyX86Disassembler();		((AnalyX86Disassembler*)analy_disasm)->init(this, elf64 ? ANALYX86DISASSEMBLER_FLAGS_FLAT64 : 0);		break;	case ELF_EM_X86_64:		if (elf_shared->ident.e_ident[ELF_EI_CLASS] != ELFCLASS64) {			errorbox("x86_64 cant be used in a 32-Bit ELF.");		} else {			analy_disasm = new AnalyX86Disassembler();			((AnalyX86Disassembler*)analy_disasm)->init(this, ANALYX86DISASSEMBLER_FLAGS_AMD64 | ANALYX86DISASSEMBLER_FLAGS_FLAT64);		}		break;	case ELF_EM_IA_64: // Intel ia64		if (elf_shared->ident.e_ident[ELF_EI_CLASS] != ELFCLASS64) {			errorbox("Intel IA64 cant be used in a 32-Bit ELF.");		} else {			analy_disasm = new AnalyIA64Disassembler();			((AnalyIA64Disassembler*)analy_disasm)->init(this);		}		break;	case ELF_EM_PPC: // PowerPC		if (elf_shared->ident.e_ident[ELF_EI_CLASS] != ELFCLASS32) {			errorbox("PowerPC32 cant be used in a 64-Bit ELF.");		} else {			DPRINTF("initing analy_ppc_disassembler\n");			analy_disasm = new AnalyPPCDisassembler();			((AnalyPPCDisassembler*)analy_disasm)->init(this, ANALY_PPC_32);		}		break;	case ELF_EM_PPC64: // PowerPC64		if (elf_shared->ident.e_ident[ELF_EI_CLASS] != ELFCLASS64) {			errorbox("PowerPC64 cant be used in a 32-Bit ELF.");		} else {			DPRINTF("initing analy_ppc_disassembler\n");			analy_disasm = new AnalyPPCDisassembler();			((AnalyPPCDisassembler*)analy_disasm)->init(this, ANALY_PPC_64);		}		break;        case ELF_EM_ARM: // Arm                if (elf_shared->ident.e_ident[ELF_EI_CLASS] != ELFCLASS32) {                        errorbox("ARM cant be used in a 64-Bit ELF.");                } else {                        DPRINTF("initing analy_arm_disassembler\n");                        analy_disasm = new AnalyArmDisassembler();                        ((AnalyArmDisassembler*)analy_disasm)->init(this);                }                break;	default:		DPRINTF("no apropriate disassembler for machine %04x\n", machine);		warnbox("No disassembler for unknown machine type %04x!", machine);	}}/* * */Address *ElfAnalyser::nextValid(Address *Addr){	return (Address *)validarea->findNext(Addr);}/* * */void ElfAnalyser::store(ObjectStream &f) const{	PUT_OBJECT(f, validarea);	Analyser::store(f);}/* * */int ElfAnalyser::queryConfig(int mode){	switch (mode) {		case Q_DO_ANALYSIS:		case Q_ENGAGE_CODE_ANALYSER:		case Q_ENGAGE_DATA_ANALYSER:			return true;		default:			return 0;	}}/* * */Address *ElfAnalyser::fileofsToAddress(FileOfs fileofs){	ELFAddress ea;	if (elf_ofs_to_addr(&elf_shared->sheaders, elf_shared->ident.e_ident[ELF_EI_CLASS], fileofs, &ea)) {		switch (elf_shared->ident.e_ident[ELF_EI_CLASS]) {			case ELFCLASS32: return createAddress32(ea.a32);			case ELFCLASS64: return createAddress64(ea.a64);		}		return new InvalidAddress();	} else {		return new InvalidAddress();	}}/* * */bool ElfAnalyser::validAddress(Address *Addr, tsectype action){	elf_section_headers *sections=&elf_shared->sheaders;	int sec;	byte cls = elf_shared->ident.e_ident[ELF_EI_CLASS];	ELFAddress ea;	if (!convertAddressToELFAddress(Addr, &ea)) return false;	if (!elf_addr_to_section(sections, cls, ea, &sec)) return false;	switch (cls) {	case ELFCLASS32: {		ELF_SECTION_HEADER32 *s = sections->sheaders32 + sec;		switch (action) {		case scvalid:			return true;		case scread:			return true;		case scwrite:		case screadwrite:			return s->sh_flags & ELF_SHF_WRITE;		case sccode:			return (s->sh_flags & ELF_SHF_EXECINSTR) && (s->sh_type == ELF_SHT_PROGBITS);		case scinitialized:			return s->sh_type==ELF_SHT_PROGBITS;		}		return false;	}	case ELFCLASS64: {		ELF_SECTION_HEADER64 *s = sections->sheaders64 + sec;		switch (action) {		case scvalid:			return true;		case scread:			return true;		case scwrite:		case screadwrite:			return s->sh_flags & ELF_SHF_WRITE;		case sccode:			return (s->sh_flags & ELF_SHF_EXECINSTR) && (s->sh_type == ELF_SHT_PROGBITS);		case scinitialized:			return s->sh_type==ELF_SHT_PROGBITS;		}		return false;	}	}	return false;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产一级| 中国色在线观看另类| 一本久道久久综合中文字幕 | 欧美电影在线免费观看| 日本怡春院一区二区| 国产欧美精品一区二区三区四区| 欧美一卡二卡三卡四卡| 欧美精三区欧美精三区| 欧美视频一区二区三区在线观看| 91小视频在线| 91小视频免费看| av欧美精品.com| 成人免费毛片aaaaa**| 视频一区二区三区在线| 日日摸夜夜添夜夜添国产精品| 亚洲综合在线电影| 亚洲自拍欧美精品| 亚洲成人三级小说| 亚洲成人av中文| 夜夜操天天操亚洲| 亚洲一二三专区| 亚洲va欧美va天堂v国产综合| 国产精品国产三级国产三级人妇| 亚洲国产高清aⅴ视频| 国产精品色婷婷久久58| 精品国产乱码久久久久久浪潮| 欧美一区二区三区不卡| 亚洲精品在线免费观看视频| 91精品国产综合久久香蕉麻豆 | 91视频在线观看免费| 成人av在线资源网| 91亚洲男人天堂| 日本精品免费观看高清观看| 色av一区二区| 欧美日韩精品二区第二页| 欧美日韩精品免费观看视频| 5566中文字幕一区二区电影| 欧美一区二区啪啪| 精品三级av在线| 国产精品美女久久福利网站| 夜夜嗨av一区二区三区四季av| 午夜电影一区二区三区| 麻豆国产精品官网| 激情深爱一区二区| 99免费精品在线| 日本韩国精品在线| 欧美日韩一级二级| 精品裸体舞一区二区三区| 久久久精品tv| 欧美国产精品中文字幕| 亚洲综合在线电影| 韩国成人福利片在线播放| 91福利资源站| 日本一区二区三区久久久久久久久不| 亚洲精品国产一区二区精华液 | 懂色av一区二区三区免费看| 欧美美女视频在线观看| 中文字幕在线不卡一区| 久久狠狠亚洲综合| 欧美性猛交xxxxxxxx| 国产欧美一区二区三区在线看蜜臀 | 国产亚洲婷婷免费| 日韩视频永久免费| 一区二区三区精密机械公司| 国产麻豆日韩欧美久久| 欧美丰满少妇xxxbbb| 久久久久久久久岛国免费| 日韩电影在线免费观看| 色国产综合视频| 国产精品视频免费看| 美女视频黄 久久| 欧美三级一区二区| 椎名由奈av一区二区三区| 国产乱码一区二区三区| 日韩一卡二卡三卡| 午夜视频一区二区三区| 日本电影欧美片| 国产欧美日韩亚州综合| 久久福利视频一区二区| 欧美高清视频在线高清观看mv色露露十八 | 久久av中文字幕片| 欧美日韩色一区| 亚洲欧美国产三级| 成人h动漫精品一区二| 国产丝袜美腿一区二区三区| 日本不卡在线视频| 欧美精品色综合| 亚洲高清视频在线| 欧美视频在线观看一区二区| 亚洲美女免费在线| 91丨九色丨蝌蚪丨老版| 国产女主播一区| 国产a精品视频| 国产欧美日韩在线视频| 国产宾馆实践打屁股91| 久久这里只有精品6| 国产综合色在线视频区| 欧美大片在线观看一区二区| 另类的小说在线视频另类成人小视频在线| 在线观看免费一区| 亚洲va欧美va人人爽午夜| 欧美在线啊v一区| 亚洲综合av网| 欧美日韩国产区一| 日韩av电影免费观看高清完整版| 色综合天天在线| 国产亚洲女人久久久久毛片| 国内精品伊人久久久久影院对白| 久久综合久久综合久久| 韩国成人精品a∨在线观看| 久久久精品一品道一区| 国产成人欧美日韩在线电影| 久久久国产午夜精品| 国产成人久久精品77777最新版本| 亚洲国产美国国产综合一区二区| 欧美三级资源在线| 免费成人在线视频观看| 精品国产91洋老外米糕| 国产v综合v亚洲欧| 亚洲日本电影在线| 欧美日韩视频在线观看一区二区三区| 丝袜亚洲另类丝袜在线| 日韩手机在线导航| 国产乱码精品一区二区三区av | av爱爱亚洲一区| 亚洲一区二区在线观看视频 | 亚洲六月丁香色婷婷综合久久| 色女孩综合影院| 琪琪久久久久日韩精品| 欧美精品一区二区三区蜜桃| 成人一道本在线| 亚洲大片一区二区三区| 亚洲精品在线网站| 91老师片黄在线观看| 青青草一区二区三区| 国产亚洲精品aa| 99国产欧美另类久久久精品| 亚洲一区二区偷拍精品| 精品福利一区二区三区| 成人国产免费视频| 石原莉奈在线亚洲二区| 国产目拍亚洲精品99久久精品| 色诱视频网站一区| 狂野欧美性猛交blacked| 成人免费在线视频| 日韩精品中文字幕一区二区三区| 99亚偷拍自图区亚洲| 日韩1区2区3区| 国产精品每日更新在线播放网址| 欧美精品免费视频| av影院午夜一区| 久久超碰97中文字幕| 亚洲欧美色综合| 久久综合久久综合亚洲| 在线观看中文字幕不卡| 国产成人在线视频免费播放| 午夜伦理一区二区| 中文字幕在线观看不卡| 精品国产91亚洲一区二区三区婷婷 | 成人性视频网站| 人人狠狠综合久久亚洲| 亚洲三级小视频| 久久精品视频一区二区| 欧美美女视频在线观看| av不卡免费在线观看| 国产一区二区三区免费看| 午夜精品久久久久久久久久| 国产精品进线69影院| 精品美女一区二区| 欧美久久一二三四区| 97精品久久久午夜一区二区三区 | 欧美三级日韩三级| 97精品超碰一区二区三区| 九九国产精品视频| 图片区小说区国产精品视频| 日韩一区欧美小说| 日本一区二区三区在线观看| 欧美大片拔萝卜| 91精品视频网| 欧美色图一区二区三区| 97精品久久久久中文字幕| 懂色av一区二区三区蜜臀| 国内外精品视频| 久久99国产精品久久99 | 91久久精品一区二区| 成人黄色电影在线| 国产毛片精品国产一区二区三区| 日韩电影在线观看网站| 午夜精品视频一区| 亚洲国产wwwccc36天堂| 日韩美女精品在线| 1024亚洲合集| 中文字幕欧美一区| 国产精品欧美久久久久无广告| 国产亚洲成av人在线观看导航| ww久久中文字幕| 久久影院视频免费| 久久青草国产手机看片福利盒子| 欧美成人猛片aaaaaaa| 欧美成人激情免费网|