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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? htle.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/*  *	HT Editor *	htle.cc * *	Copyright (C) 1999-2002 Stefan Weyergraf * *	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 "errno.h"#include <stdlib.h>#include "endianess.h"#include "htle.h"#include "htlehead.h"#include "htleimg.h"#include "htleobj.h"#include "htleent.h"#include "htlepage.h"#include "htlevxd.h"#include "htiobox.h"#include "htnewexe.h"#include "lestruct.h"#include "log.h"#include "tools.h"#define LE_SEG_ADDR(i) (LE_shared->objmap.header[(i)].page_map_index-1) *\			LE_shared->hdr.pagesize + LE_BASE_ADDRstatic format_viewer_if *htle_ifs[] = {	&htleheader_if,	&htlevxd_if,	&htlepagemaps_if,	&htleobjects_if,	&htleentrypoints_if,	&htleimage_if,	0};static ht_view *htle_init(Bounds *b, File *file, ht_format_group *format_group){	byte lemagic[2];	FileOfs h=get_newexe_header_ofs(file);	file->seek(h);		if (file->read(lemagic, 2) != 2 	 || lemagic[0] != LE_MAGIC0 || lemagic[1] != LE_MAGIC1) return 0;	ht_le *g=new ht_le();	g->init(b, file, htle_ifs, format_group, h);	return g;}format_viewer_if htle_if = {	htle_init,	0};void ht_le::init(Bounds *b, File *file, format_viewer_if **ifs, ht_format_group *format_group, FileOfs h){	ht_format_group::init(b, VO_BROWSABLE | VO_SELECTABLE | VO_RESIZE, DESC_LE, file, false, true, 0, format_group);	VIEW_DEBUG_NAME("ht_le");	String fn;	LOG("%y: LE: found header at 0x%08qx", &file->getFilename(fn), h);	ht_le_shared_data *le_shared = ht_malloc(sizeof (ht_le_shared_data));	shared_data = le_shared;	le_shared->v_header = NULL;	le_shared->v_objects = NULL;	le_shared->v_pagemaps = NULL;	le_shared->v_image = NULL;	le_shared->v_le_vxd = NULL;	le_shared->hdr_ofs = h;	le_shared->linear_file = NULL;	le_shared->reloc_file = NULL;	le_shared->best_entrypoint = LE_ADDR_INVALID;	// FIXME: byteorder handling...	le_shared->byteorder = little_endian;	/* read LE header */	file->seek(h);	file->readx(&le_shared->hdr, sizeof le_shared->hdr);	createHostStruct(&le_shared->hdr, LE_HEADER_struct, le_shared->byteorder);	le_shared->is_vxd = le_shared->hdr.winresoff 		|| le_shared->hdr.winreslen		|| le_shared->hdr.devid		|| le_shared->hdr.ddkver;	read_pagemap();	read_objects();	ht_le_page_file *lfile = new ht_le_page_file(file, false, &le_shared->pagemap, 		le_shared->pagemap.count, le_shared->hdr.pagesize);	le_shared->linear_file = lfile;	do_fixups();	check_vxd();	ht_format_group::init_ifs(ifs);}void ht_le::done(){	ht_format_group::done();	ht_le_shared_data *le_shared=(ht_le_shared_data*)shared_data;		free(le_shared->objmap.header);	free(le_shared->objmap.vsize);	free(le_shared->objmap.psize);		free(le_shared->pagemap.offset);	free(le_shared->pagemap.vsize);	free(le_shared->pagemap.psize);	delete le_shared->linear_file;	delete le_shared->reloc_file;	free(le_shared);}void ht_le::do_fixups(){	ht_le_shared_data *le_shared = (ht_le_shared_data*)shared_data;	FileOfs h = le_shared->hdr_ofs;	uint32 *page_fixup_ofs = ht_malloc(sizeof (uint32) * (le_shared->hdr.pagecnt+1));	uint32 *page_fixup_size = ht_malloc(sizeof (uint32) * (le_shared->hdr.pagecnt));	file->seek(h+le_shared->hdr.fpagetab);	for (uint i=0; i<le_shared->hdr.pagecnt+1; i++) {		char buf[4];		file->readx(buf, 4);		uint32 ofs = createHostInt(buf, 4, little_endian);		page_fixup_ofs[i] = ofs;	}	for (uint i=0; i<le_shared->hdr.pagecnt; i++) {		page_fixup_size[i] = page_fixup_ofs[i+1] - page_fixup_ofs[i];	}	ht_le_reloc_file *rfile = new ht_le_reloc_file(le_shared->linear_file, 					false, le_shared);	le_shared->reloc_file = rfile;	uint error_count = 0;	for (uint i=0; i < le_shared->hdr.pagecnt; i++) {		// size of fixup record table for segment		uint32 size = page_fixup_size[i];		uint obj_ofs = i * le_shared->hdr.pagesize;		file->seek(h+le_shared->hdr.frectab+page_fixup_ofs[i]);		bool error = false;		while (size>0 && !error) {			// addr_type + reloc_type			LE_FIXUP f;			if (sizeof f > size) { error = true; break; }			size -= sizeof f;			file->readx(&f, sizeof f);			createHostStruct(&f, LE_FIXUP_struct, le_shared->byteorder);			/* only internal references (16/32) supported for now... */			if ((f.reloc_type != 0) && (f.reloc_type != 16)) {				error = true;				break;			}			// is address_type supported ?			switch (f.address_type & LE_FIXUP_ADDR_TYPE_MASK) {				case LE_FIXUP_ADDR_TYPE_0_8:				case LE_FIXUP_ADDR_TYPE_16_0:				case LE_FIXUP_ADDR_TYPE_16_16:				case LE_FIXUP_ADDR_TYPE_0_16:				case LE_FIXUP_ADDR_TYPE_16_32:				case LE_FIXUP_ADDR_TYPE_0_32:				case LE_FIXUP_ADDR_TYPE_REL32:					break;				default:					error = true;					break;			}			if (error) break;			uint multi_count = 0;			uint16 src_ofs;			bool multi_ofs = (f.address_type & LE_FIXUP_ADDR_MULTIPLE);			if (multi_ofs) {				// number of entries in offset table				char buf[1];				if (sizeof buf > size) { error = true; break; }				size -= sizeof buf;				file->readx(buf, sizeof buf);				multi_count = createHostInt(buf, 1, little_endian);			} else {				// single source offset				char buf[2];				if (sizeof buf > size) { error = true; break; }				size -= sizeof buf;				file->readx(buf, sizeof buf);				src_ofs = createHostInt(buf, 2, little_endian);			}			switch (f.reloc_type & LE_FIXUP_RELOC_TYPE_MASK) {				case LE_FIXUP_RELOC_TYPE_INTERNAL:					uint16 target_seg;					uint32 target_ofs;					if (f.reloc_type & LE_FIXUP_RELOC_TARGET32) {						LE_FIXUP_INTERNAL32 x;						if (sizeof x > size) { error = true; break; }						size -= sizeof x;						file->readx(&x, sizeof x);						createHostStruct(&x, LE_FIXUP_INTERNAL32_struct, le_shared->byteorder);						target_seg = x.seg-1;						target_ofs = x.ofs;					} else {						LE_FIXUP_INTERNAL16 x;						if (sizeof x > size) { error = true; break; }						size -= sizeof x;						file->readx(&x, sizeof x);						createHostStruct(&x, LE_FIXUP_INTERNAL16_struct, le_shared->byteorder);						target_seg = x.seg-1;						target_ofs = x.ofs;					}					if (multi_ofs) {						for (uint j=0; j<multi_count; j++) {							char buf[2];							if (sizeof buf > size) { error = true; break; }							size -= sizeof buf;							file->readx(buf, sizeof buf);							src_ofs = createHostInt(buf, sizeof buf, little_endian);							rfile->insert_reloc(obj_ofs + src_ofs, new ht_le_reloc_entry(obj_ofs + src_ofs, target_seg, LE_MAKE_ADDR(le_shared, target_seg, target_ofs), f.address_type, f.reloc_type));						}					} else {						rfile->insert_reloc(obj_ofs + src_ofs, new ht_le_reloc_entry(obj_ofs + src_ofs, target_seg, LE_MAKE_ADDR(le_shared, target_seg, target_ofs), f.address_type, f.reloc_type));					}					break;				case LE_FIXUP_RELOC_TYPE_IMPORT_ORD:					error = true;					break;				case LE_FIXUP_RELOC_TYPE_IMPORT_NAME:					error = true;					break;				case LE_FIXUP_RELOC_TYPE_OSFIXUP:					error = true;					break;			}		}		if (error) error_count++;	}	free(page_fixup_ofs);	free(page_fixup_size);	if (error_count) {		String fn;		// FIXME: once complete:		// "%s: NE relocations seem to be corrupted.", file->get_filename());		LOG_EX(LOG_WARN, "%y: LE: invalid and/or unsupported relocations found.", &file->getFilename(fn));		errorbox("%y: LE: invalid and/or unsupported relocations found.", &fn);	} else {		String fn;		LOG("%y: LE: relocations present, relocation simulation layer enabled", &file->getFilename(fn));	}	rfile->finalize();}void ht_le::check_vxd(){	ht_le_shared_data *le_shared = (ht_le_shared_data*)shared_data;	FileOfs h = le_shared->hdr_ofs;	/* VxD */	if (le_shared->is_vxd) {		/* test if really VxD and find VxD descriptor */		LE_ENTRYPOINT_BUNDLE b;		file->seek(h+le_shared->hdr.enttab);		file->readx(&b, sizeof b);		le_shared->is_vxd = false;		if ((b.entry_count == 1) && (b.flags & LE_ENTRYPOINT_BUNDLE_VALID) &&		(b.flags & LE_ENTRYPOINT_BUNDLE_32BIT) && (b.obj_index == 1)) {			LE_ENTRYPOINT32 e;			file->readx(&e, sizeof e);			createHostStruct(&e, LE_ENTRYPOINT32_struct, le_shared->byteorder);			if (e.flags & LE_ENTRYPOINT_EXPORTED) {				/* linearized address for ht_le_page_file */				uint32 vxd_desc_ofs = (le_shared->objmap.header[0].					page_map_index-1)*le_shared->hdr.pagesize + e.offset;				le_shared->reloc_file->seek(vxd_desc_ofs);				le_shared->reloc_file->readx(&le_shared->vxd_desc, sizeof le_shared->vxd_desc);				createHostStruct(&le_shared->vxd_desc, LE_VXD_DESCRIPTOR_struct, le_shared->byteorder);				le_shared->vxd_desc_linear_ofs = vxd_desc_ofs;				le_shared->is_vxd = true;			}		}	}}void ht_le::read_pagemap(){	ht_le_shared_data *le_shared = (ht_le_shared_data*)shared_data;	FileOfs h = le_shared->hdr_ofs;	le_shared->pagemap.count=le_shared->hdr.pagecnt;	le_shared->pagemap.offset = ht_malloc(le_shared->pagemap.count*sizeof *le_shared->pagemap.offset);	le_shared->pagemap.psize = ht_malloc(le_shared->pagemap.count*sizeof *le_shared->pagemap.psize);	le_shared->pagemap.vsize = ht_malloc(le_shared->pagemap.count*sizeof *le_shared->pagemap.vsize);	uint32 last_page_offset=0, last_page=0;	for (uint32 i=0; i<le_shared->hdr.pagecnt; i++) {		LE_PAGE_MAP_ENTRY e;		file->seek(h+le_shared->hdr.pagemap+i*4);		file->readx(&e, sizeof e);		createHostStruct(&e, LE_PAGE_MAP_ENTRY_struct, le_shared->byteorder);				/* FIXME: is this formula correct ? it comes straight from my docs... */		uint32 eofs=(e.high+e.low-1)*le_shared->hdr.pagesize+le_shared->hdr.datapage;		le_shared->pagemap.offset[i] = eofs;		if (le_shared->pagemap.offset[i]>last_page_offset) {			last_page_offset = le_shared->pagemap.offset[i];			last_page = i;		}	}	for (uint32 i=0; i<le_shared->hdr.pagecnt; i++) {		le_shared->pagemap.vsize[i]=0;	/* filled by read_objects() */		if (i==last_page)			le_shared->pagemap.psize[i]=le_shared->hdr.lastpagesize;		else			le_shared->pagemap.psize[i]=le_shared->hdr.pagesize;	}}void ht_le::read_objects(){	ht_le_shared_data *le_shared = (ht_le_shared_data*)shared_data;	FileOfs h = le_shared->hdr_ofs;	le_shared->objmap.count = le_shared->hdr.objcnt;	le_shared->objmap.header = ht_malloc(le_shared->objmap.count*sizeof *le_shared->objmap.header);	le_shared->objmap.vsize = ht_malloc(le_shared->objmap.count * sizeof *le_shared->objmap.vsize);	le_shared->objmap.psize = ht_malloc(le_shared->objmap.count * sizeof *le_shared->objmap.psize);	for (uint i=0; i<le_shared->hdr.objcnt; i++) {		file->seek(h+le_shared->hdr.objtab+i*24);		file->readx(&le_shared->objmap.header[i], sizeof *le_shared->objmap.header);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美不卡123| 在线播放中文字幕一区| 国产成人免费在线观看不卡| 久久福利资源站| 国产一区二区三区不卡在线观看 | 高清成人在线观看| 国产一区二区三区精品视频| 国产精品一区不卡| 成人动漫一区二区| 国产69精品久久久久毛片 | 国产最新精品免费| 国产黄色精品网站| 99re热视频精品| 欧美精品v国产精品v日韩精品| 91精品国产品国语在线不卡| 国产日韩综合av| 亚洲精品乱码久久久久久久久| 午夜视黄欧洲亚洲| 国产成人精品免费看| 在线一区二区观看| 欧美一级午夜免费电影| 欧美国产日本视频| 日韩高清不卡一区二区三区| 成人一道本在线| 欧美在线观看一区| 国产女主播一区| 日本强好片久久久久久aaa| 本田岬高潮一区二区三区| 欧美精品色综合| 亚洲女性喷水在线观看一区| 久久99精品久久久久久| 色综合久久中文字幕综合网 | 日本韩国精品在线| 7777精品伊人久久久大香线蕉最新版| 精品视频1区2区| 国产三级欧美三级日产三级99| 亚洲成av人片| 色噜噜偷拍精品综合在线| 国产婷婷色一区二区三区在线| 日本成人中文字幕| 欧美日韩免费一区二区三区视频 | 成人性生交大片免费看视频在线 | 91麻豆精品在线观看| 久久综合五月天婷婷伊人| 三级成人在线视频| 欧美日韩国产另类一区| 亚洲资源中文字幕| 日本高清成人免费播放| 自拍偷拍国产精品| 91久久人澡人人添人人爽欧美| 日本一区二区视频在线| 成人精品视频一区| 国产精品久久影院| 91丨porny丨蝌蚪视频| 国产精品日韩精品欧美在线| 国产成人精品综合在线观看| 久久亚洲二区三区| www.欧美日韩| 91精品久久久久久久99蜜桃 | 亚洲精品成a人| 欧美优质美女网站| 美女在线视频一区| 国产日韩av一区二区| 不卡一二三区首页| 亚洲线精品一区二区三区八戒| 欧美精品在线视频| 国产精品911| 亚洲一本大道在线| 精品少妇一区二区三区在线播放 | 精品三级在线观看| 成人av免费观看| 午夜精品免费在线观看| 欧美tk丨vk视频| 91蝌蚪porny成人天涯| 免费精品视频最新在线| 国产亚洲精品福利| 欧美日韩亚洲综合一区二区三区| 韩国欧美国产一区| 一区二区三区精密机械公司| 精品区一区二区| 欧美少妇xxx| 成av人片一区二区| 午夜精彩视频在线观看不卡| 制服丝袜中文字幕一区| 成人a免费在线看| 日本美女一区二区| 夜夜操天天操亚洲| 亚洲国产精品激情在线观看 | 国产丝袜美腿一区二区三区| 欧美精品高清视频| 一本色道亚洲精品aⅴ| 岛国一区二区在线观看| 激情综合色播五月| 日本不卡视频在线观看| 亚洲成a天堂v人片| 亚洲一二三四在线| 亚洲男帅同性gay1069| 亚洲欧洲国产日韩| 国产午夜亚洲精品午夜鲁丝片| 日韩亚洲欧美一区| 欧美精品乱人伦久久久久久| 欧美性大战久久久久久久| 92国产精品观看| jlzzjlzz亚洲日本少妇| 9色porny自拍视频一区二区| 成人久久久精品乱码一区二区三区| 国产一区二区三区高清播放| 国产一区欧美日韩| 成人做爰69片免费看网站| 国产不卡在线视频| eeuss鲁片一区二区三区| 97久久久精品综合88久久| 国产精品伊人色| 日韩免费电影网站| 精品国产sm最大网站免费看| 精品国精品国产尤物美女| 国产欧美一区二区在线观看| 一个色综合av| 久久国产视频网| 成人激情小说网站| 在线观看av一区二区| 日韩一级免费一区| 中文字幕av不卡| 午夜精品一区二区三区电影天堂 | 亚洲大片一区二区三区| 麻豆国产91在线播放| av动漫一区二区| 日韩视频一区二区| 亚洲三级在线看| 精品中文av资源站在线观看| 色综合亚洲欧洲| 精品国产乱码久久久久久久久| 国产精品第四页| 久久99精品久久久久久国产越南 | 岛国一区二区在线观看| 欧美精品国产精品| 一区2区3区在线看| 大桥未久av一区二区三区中文| 欧美日韩国产综合草草| 自拍偷拍亚洲欧美日韩| 韩国女主播成人在线| 欧美精品粉嫩高潮一区二区| 亚洲欧美日韩电影| 成人白浆超碰人人人人| 国产女主播一区| 国产精品亚洲视频| 久久亚洲捆绑美女| 狠狠色狠狠色综合系列| 91精品久久久久久久久99蜜臂| 亚洲一线二线三线视频| 99视频超级精品| 国产精品视频看| 国产经典欧美精品| 久久精品亚洲国产奇米99| 国产综合久久久久久鬼色| 日韩午夜激情视频| 日本中文在线一区| 欧美成人女星排名| 九九在线精品视频| 国产日本一区二区| 成人精品免费视频| 亚洲天堂免费在线观看视频| 91在线观看一区二区| 亚洲激情中文1区| 在线免费一区三区| 日本欧美加勒比视频| 精品久久国产97色综合| 国产精品18久久久久久久久| 国产精品免费网站在线观看| 岛国精品在线播放| 午夜一区二区三区在线观看| 欧美日韩国产经典色站一区二区三区 | 国产成人在线网站| 欧美午夜精品久久久久久孕妇| 亚洲天堂成人在线观看| 国产大片一区二区| 日韩免费性生活视频播放| 久久精品国产精品亚洲红杏| 日本道精品一区二区三区 | 成年人国产精品| 一本到不卡免费一区二区| 91久久精品一区二区| 欧美一区二区三区在| 久久综合成人精品亚洲另类欧美| 久久久久久免费| 久久久亚洲精品石原莉奈| 欧美婷婷六月丁香综合色| 久久机这里只有精品| 国产精品理伦片| www.亚洲精品| 亚洲六月丁香色婷婷综合久久| 成人免费毛片aaaaa**| 亚洲一区在线观看免费观看电影高清 | 99久久伊人精品| 亚洲人成网站影音先锋播放| 欧美日韩精品一区二区天天拍小说| 蜜桃av噜噜一区二区三区小说| 中文字幕在线观看不卡| 欧美日本国产视频| 99re热视频精品|