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

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

?? ne_analy.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
字號:
/* *	HT Editor *	ne_analy.cc * *	Copyright (C) 1999-2002 Sebastian Biallas (sb@biallas.net) * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	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. * *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "analy.h"#include "analy_alpha.h"#include "analy_names.h"#include "analy_register.h"#include "analy_x86.h"#include "ne_analy.h"#include "htctrl.h"#include "htdebug.h"#include "endianess.h"#include "htiobox.h"#include "htne.h"#include "htneent.h"#include "strtools.h"#include "nestruct.h"#include "snprintf.h"#include "x86asm.h"/* * */NEAnalyser::NEAnalyser(){}void	NEAnalyser::init(ht_ne_shared_data *NE_shared, File *File){	ne_shared = NE_shared;	file = File;	validarea = new Area();	validarea->init();	Analyser::init();	/////////////	setLocationTreeOptimizeThreshold(100);	setSymbolTreeOptimizeThreshold(100);}/* * */void	NEAnalyser::load(ObjectStream &f){	/*	ht_pe_shared_data 	*pe_shared;	ht_stream 		*file;	area				*validarea;	*/	GET_OBJECT(f, validarea);	Analyser::load(f);}/* * */void	NEAnalyser::done(){	validarea->done();	delete validarea;	Analyser::done();}/* * */void NEAnalyser::beginAnalysis(){	char	buffer[1024];	/*	 *	entrypoint	 */	 	Address *entry = createAddress1616(NE_ADDR_SEG(ne_shared->hdr.csip), NE_ADDR_OFS(ne_shared->hdr.csip));		if (ne_shared->hdr.flags & NE_FLAGS_SELFLOAD) {		// bound as family app (needs loader)		struct bla {		    NEAddress a;		    const char *b;		    const char *c;		};		bla blabla[] = {			{ NE_MAKE_ADDR(0x0001, 0x0004), "loader_ptr_1", "loader_entry_1"},			{ NE_MAKE_ADDR(0x0001, 0x0008), "loader_ptr_2", "loader_entry_2"},			{ NE_MAKE_ADDR(0x0001, 0x0018), "loader_ptr_3", "loader_entry_3"},			{ 0, 0, 0 },		};		bla *blla = blabla;		while (blla->b) {			Address *bllaa = createAddress1616(NE_ADDR_SEG(blla->a), NE_ADDR_OFS(blla->a));			addComment(bllaa, 0, "");			assignSymbol(bllaa, blla->b, label_data);			data->setIntAddressType(bllaa, dst_idword, 4);			NEAddress addr;			byte buf[4];			if (validAddress(bllaa, scinitialized) && bufPtr(bllaa, buf, 4)==4) {				ht_snprintf(buffer, sizeof buffer, "; pointer to %s", blla->c);				addComment(bllaa, 0, buffer);				addr = createHostInt(buf, 4, little_endian);				Address *a = createAddress1616(NE_ADDR_SEG(addr), NE_ADDR_OFS(addr));				addComment(a, 0, "");				assignSymbol(a, blla->c, label_func);				pushAddress(a, a);				delete a;			}			blla++;			delete bllaa;		}	} else {		pushAddress(entry, entry);	}		/*	 * give all sections a descriptive comment:	 */	NE_SEGMENT *s = ne_shared->segments.segments;	for (uint i = 0; i < ne_shared->segments.segment_count; i++) {		Address *secaddr = createAddress1616(NE_ADDR_SEG(NE_get_seg_addr(ne_shared, i)), NE_ADDR_OFS(NE_get_seg_addr(ne_shared, i)));		uint epsize = MIN(NE_get_seg_vsize(ne_shared, i), NE_get_seg_psize(ne_shared, i));		uint evsize = MAX(NE_get_seg_vsize(ne_shared, i), NE_get_seg_psize(ne_shared, i));		ht_snprintf(buffer, sizeof buffer, ";  section %d <%s>", i+1, getSegmentNameByAddress(secaddr));		addComment(secaddr, 0, "");		addComment(secaddr, 0, ";******************************************************************");		addComment(secaddr, 0, buffer);		ht_snprintf(buffer, sizeof buffer, ";  virtual address  %08x  virtual size   %08x", NE_get_seg_addr(ne_shared, i), evsize);		addComment(secaddr, 0, buffer);		uint32 ofs = NE_get_seg_ofs(ne_shared, i);		ht_snprintf(buffer, sizeof buffer, ";  file offset      %08x  file size      %08x", ofs, epsize);		addComment(secaddr, 0, buffer);		addComment(secaddr, 0, ";******************************************************************");		// mark end of sections		sprintf(buffer, ";  end of section <%s>", getSegmentNameByAddress(secaddr));		Address *secend_addr = secaddr->clone();		secend_addr->add(evsize);		newLocation(secend_addr)->flags |= AF_FUNCTION_END;		addComment(secend_addr, 0, "");		addComment(secend_addr, 0, ";******************************************************************");		addComment(secend_addr, 0, buffer);		addComment(secend_addr, 0, ";******************************************************************");		validarea->add(secaddr, secend_addr);		Address *seciniaddr = secaddr->clone();		seciniaddr->add(epsize);		if (validAddress(secaddr, scinitialized) && validAddress(seciniaddr, scinitialized)) {			initialized->add(secaddr, seciniaddr);		}		delete secaddr;		delete secend_addr;		delete seciniaddr;		s++;	}	// entrypoints	int entrypoint_count = ne_shared->entrypoints->count();	int *entropy = random_permutation(entrypoint_count);	for (int i = 0; i < entrypoint_count; i++) {		ht_ne_entrypoint *f = (ht_ne_entrypoint*) (*ne_shared->entrypoints)[entropy[i]];		if (f) {			Address *address = createAddress1616(f->seg, f->offset);			if (validAddress(address, scvalid)) {				char *label;				if (f->name) {					ht_snprintf(buffer, sizeof buffer, "; exported function %s, ordinal %04x", f->name, f->ordinal);				} else {					ht_snprintf(buffer, sizeof buffer, "; unnamed exported function, ordinal %04x", f->ordinal);				}				label = export_func_name(f->name, f->ordinal);				addComment(address, 0, "");				addComment(address, 0, ";********************************************************");				addComment(address, 0, buffer);				addComment(address, 0, ";********************************************************");				pushAddress(address, address);				assignSymbol(address, label, label_func);				free(label);			}			delete address;		}	}	if (entropy) free(entropy);	// imports	if (ne_shared->imports) {		FileOfs h = ne_shared->hdr_ofs + ne_shared->hdr.imptab;		foreach (ne_import_rec, imp, *ne_shared->imports, {			char *name = NULL;			char *mod = (imp->module-1 < ne_shared->modnames_count) ? ne_shared->modnames[imp->module-1] : (char*)"invalid!";			if (imp->byname) {				file->seek(h + imp->name_ofs);				name = file->readstrp();			}			char *label = import_func_name(mod, name, imp->byname ? 0 : imp->ord);			if (name) free(name);			Address *addr = createAddress1616(ne_shared->fake_segment + 1, imp->addr);			addComment(addr, 0, "");			assignSymbol(addr, label, label_func);			data->setIntAddressType(addr, dst_ibyte, 1);			free(label);			delete addr;		});	}/*	virtual Object *enum_next(ht_data **value, Object *prevkey);	int import_count = ne_shared->imports.funcs->count();	for (int i=0; i<import_count; i++) {		ht_pe_import_function *f=(ht_pe_import_function *)pe_shared->imports.funcs->get(*(entropy+i));		ht_pe_import_library *d=(ht_pe_import_library *)pe_shared->imports.libs->get(f->libidx);		char *label;		label = import_func_name(d->name, (f->byname) ? f->name.name : NULL, f->ordinal);		addComment(f->address, 0, "");		assignSymbol(f->address, label, label_func);		data->set_int_addr_type(f->address, dst_idword, 4);		free(label);	}*/	addComment(entry, 0, "");	addComment(entry, 0, ";****************************");	if (ne_shared->hdr.flags & NE_FLAGS_NOTAPROCESS) {		addComment(entry, 0, ";  library entry point");	} else {		addComment(entry, 0, ";  program entry point");	}	addComment(entry, 0, ";****************************");	if (validCodeAddress(entry)) {		assignSymbol(entry, "entrypoint", label_func);	} else {		assignSymbol(entry, "entrypoint", label_data);	}	setLocationTreeOptimizeThreshold(1000);	setSymbolTreeOptimizeThreshold(1000);	delete entry;		Analyser::beginAnalysis();}/* * */ObjectID	NEAnalyser::getObjectID() const{	return ATOM_NE_ANALYSER;}/* * */uint NEAnalyser::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 NEAnalyser::convertAddressToNEAddress(Address *addr, NEAddress *r){	if (addr->getObjectID()==ATOM_ADDRESS_X86_1616) {		*r = NE_MAKE_ADDR(((AddressX86_1616*)addr)->seg, ((AddressX86_1616*)addr)->addr);		return true;	} else {		return false;	}}Address *NEAnalyser::createAddress(){	return new AddressX86_1616(0, 0);}Address *NEAnalyser::createAddress1616(uint16 seg, uint16 ofs){	return new AddressX86_1616(seg, ofs);}/* * */Assembler *NEAnalyser::createAssembler(){/* FIXME: 16/32 */	Assembler *a = new x86asm(X86_OPSIZE16, X86_ADDRSIZE16);	a->init();	return a;}/* * */FileOfs NEAnalyser::addressToFileofs(Address *Addr){	if (validAddress(Addr, scinitialized)) {		FileOfs ofs;		NEAddress na;		if (!convertAddressToNEAddress(Addr, &na)) return INVALID_FILE_OFS;		if (!NE_addr_to_ofs(ne_shared, na, &ofs)) {			return INVALID_FILE_OFS;		}		return ofs;	} else {		return INVALID_FILE_OFS;	}}/* * */const char *NEAnalyser::getSegmentNameByAddress(Address *Addr){	static char segmentname[16];	int i;	NEAddress na;	if (!convertAddressToNEAddress(Addr, &na)) return NULL;	if (!NE_addr_to_segment(ne_shared, na, &i)) return NULL;	if (i == (int)ne_shared->fake_segment) {		strcpy(segmentname, "faked names");	} else {		sprintf(segmentname, "seg%d", i+1);	}	return segmentname;}/* * */String &NEAnalyser::getName(String &res){	return file->getDesc(res);}/* * */const char *NEAnalyser::getType(){	return "NE/Analyser";}/* * */void NEAnalyser::initCodeAnalyser(){	Analyser::initCodeAnalyser();}/* * */void NEAnalyser::initUnasm(){	DPRINTF("ne_analy: ");	DPRINTF("initing analy_x86_disassembler\n");	analy_disasm = new AnalyX86Disassembler();	((AnalyX86Disassembler*)analy_disasm)->init(this, ANALYX86DISASSEMBLER_FLAGS_16BIT | ANALYX86DISASSEMBLER_FLAGS_SEGMENTED);}/* * */void NEAnalyser::log(const char *msg){	/*	 *	log() creates to much traffic so dont log	 *   perhaps we reactivate this later	 *	 *//*	LOG(msg);*/}/* * */Address *NEAnalyser::nextValid(Address *Addr){	return (Address *)validarea->findNext(Addr);}/* * */void NEAnalyser::store(ObjectStream &st) const{	PUT_OBJECT(st, validarea);	Analyser::store(st);}/* * */int	NEAnalyser::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 *NEAnalyser::fileofsToAddress(FileOfs fileofs){	NEAddress a;	if (NE_ofs_to_addr(ne_shared, fileofs, &a)) {		return createAddress1616(NE_ADDR_SEG(a), NE_ADDR_OFS(a));	} else {		return new InvalidAddress();	}}/* * */bool NEAnalyser::validAddress(Address *Addr, tsectype action){	ne_segment_headers *segments = &ne_shared->segments;	int sec;	NEAddress na;	if (!convertAddressToNEAddress(Addr, &na)) return false;	if (!NE_addr_to_segment(ne_shared, na, &sec)) return false;	NE_SEGMENT *s = segments->segments + sec;	switch (action) {		case scvalid:			return true;		case scread:			return !(s->flags & NE_READONLY) || (s->flags & NE_DATA);		case scwrite:			return !(s->flags & NE_READONLY) && (s->flags & NE_DATA);		case screadwrite:			return !(s->flags & NE_READONLY) && (s->flags & NE_DATA);		case sccode:			return (!(s->flags & NE_DATA)) && NE_addr_is_physical(ne_shared, na);		case scinitialized:			return NE_addr_is_physical(ne_shared, na);	}	return false;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
怡红院av一区二区三区| 色偷偷成人一区二区三区91| 色偷偷久久人人79超碰人人澡| 91精品国产欧美一区二区18| 亚洲日韩欧美一区二区在线| 国产一区二区女| 欧美精品一级二级三级| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品综合av一区二区国产馆| 欧美日韩久久久| 一区二区高清免费观看影视大全 | 精品视频在线免费看| 久久久www成人免费毛片麻豆| 日韩高清不卡一区二区| 欧美综合一区二区| 欧美猛男男办公室激情| 天堂va蜜桃一区二区三区漫画版| 国产成人一级电影| 日韩一区二区免费电影| 天堂蜜桃一区二区三区| 欧美三电影在线| 亚洲一区在线观看免费| 在线观看国产一区二区| 亚洲一区二区中文在线| 91久久香蕉国产日韩欧美9色| 午夜精品久久久久久久99水蜜桃| 91丨porny丨户外露出| 精品第一国产综合精品aⅴ| 裸体在线国模精品偷拍| 91麻豆精品国产自产在线 | 2020国产精品自拍| 亚洲精品免费在线| 99国产精品一区| 亚洲精品国产a| 欧美视频一区在线观看| 亚洲电影第三页| 91超碰这里只有精品国产| 日韩二区在线观看| 日韩一二在线观看| 国产一区二区三区免费在线观看| 久久久蜜桃精品| 99久久精品情趣| 亚洲午夜一区二区三区| 91精品国产综合久久精品性色| 美女被吸乳得到大胸91| 久久丝袜美腿综合| 色综合久久综合网97色综合| 亚洲自拍偷拍综合| 日韩欧美一区二区视频| 国产精品伊人色| 亚洲视频狠狠干| 在线不卡的av| 国产福利精品导航| 亚洲综合丁香婷婷六月香| 欧美一区二区在线免费观看| 国产精品一区二区视频| 亚洲欧美区自拍先锋| 欧美喷水一区二区| 国产高清不卡二三区| 洋洋av久久久久久久一区| 欧美一区二区在线看| 不卡的看片网站| 亚洲一区二区三区免费视频| 精品国产区一区| 在线精品观看国产| 国产一区二区成人久久免费影院 | 激情图片小说一区| 国产蜜臀97一区二区三区| 在线一区二区视频| 国产一区在线观看视频| 一区二区三国产精华液| 久久综合资源网| 欧美亚洲国产一区二区三区va | 亚洲第一福利一区| 国产欧美日韩中文久久| 欧美日韩三级视频| 成人免费福利片| 久久精品国内一区二区三区| 亚洲私人影院在线观看| 亚洲精品在线观看网站| 欧美日韩久久久| 色综合天天天天做夜夜夜夜做| 久久66热re国产| 午夜电影一区二区三区| 欧美视频在线观看一区二区| 亚洲男人的天堂一区二区| 欧美一级日韩免费不卡| 在线看不卡av| 99天天综合性| 成人综合在线观看| 紧缚奴在线一区二区三区| 五月综合激情婷婷六月色窝| 综合激情成人伊人| 国产精品丝袜久久久久久app| 日韩你懂的电影在线观看| 欧美剧情片在线观看| 色网站国产精品| 91麻豆国产自产在线观看| 高清不卡在线观看| 韩国中文字幕2020精品| 蜜桃精品在线观看| 日韩电影一区二区三区四区| 亚洲精品乱码久久久久久| 亚洲欧洲www| 国产精品的网站| 国产精品乱码一区二三区小蝌蚪| 久久综合99re88久久爱| 日韩精品一区二区三区视频| 欧美一级日韩免费不卡| 91.xcao| 国产白丝精品91爽爽久久| 激情小说亚洲一区| 国精产品一区一区三区mba桃花| 日本亚洲天堂网| 免费观看在线综合色| 日本视频免费一区| 免费日韩伦理电影| 狂野欧美性猛交blacked| 极品少妇xxxx精品少妇| 免费欧美高清视频| 国产又黄又大久久| 风间由美中文字幕在线看视频国产欧美| 国产在线看一区| 成人精品视频一区二区三区| 99re热视频精品| 欧美三区在线视频| 91麻豆精品国产91久久久资源速度| 3d动漫精品啪啪1区2区免费| 精品国产麻豆免费人成网站| 国产欧美一区二区在线观看| 亚洲欧美自拍偷拍| 亚洲va中文字幕| 狠狠色狠狠色综合日日91app| 成人在线视频一区二区| 色婷婷国产精品| 蜜臀精品一区二区三区在线观看 | 欧美日韩精品一区二区三区 | 欧美视频在线观看一区二区| 欧美精品亚洲二区| 精品99久久久久久| 国产精品麻豆一区二区| 午夜精品在线视频一区| 国产一区二区看久久| 91在线免费看| 91麻豆精品国产自产在线| 欧美激情在线观看视频免费| 亚洲线精品一区二区三区| 国模娜娜一区二区三区| 日本大香伊一区二区三区| 精品欧美一区二区三区精品久久| 欧美国产97人人爽人人喊| 亚洲成人一区二区| 国产一区二区三区高清播放| 91丨国产丨九色丨pron| 欧美v亚洲v综合ⅴ国产v| 精品精品欲导航| 欧美国产日韩一二三区| 香蕉av福利精品导航| 国产一区二区三区电影在线观看| 91久久线看在观草草青青| 久久婷婷综合激情| 亚洲午夜国产一区99re久久| 国产盗摄视频一区二区三区| 欧美久久一二三四区| 亚洲视频在线一区| 国产一区二区三区久久久| 欧美日韩mp4| 亚洲美女视频在线观看| 国产盗摄精品一区二区三区在线| 欧美日韩免费高清一区色橹橹| 欧美极品aⅴ影院| 国产一区二区不卡在线| 欧美一区二区三区在| 亚洲一区二区在线播放相泽 | 最新日韩在线视频| 激情综合网最新| 欧美一级精品在线| 婷婷成人激情在线网| 色网站国产精品| 亚洲色图在线播放| 不卡在线观看av| 国产精品色一区二区三区| 国产一区二区三区久久久| 欧美不卡一区二区三区| 亚洲欧美日韩国产成人精品影院| 欧美日韩高清不卡| 亚洲国产日韩综合久久精品| 99视频一区二区| 国产精品不卡在线观看| 成人av午夜电影| 国产精品久久夜| 99在线精品一区二区三区| 国产精品成人免费 | 国产精品中文欧美| 欧美精品一区在线观看| 久久99国产精品久久99| 精品国产在天天线2019| 国产一区二区主播在线| 久久久一区二区三区捆绑**| 国产精品一二三四|