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

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

?? htpeexp.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
字號:
/*  *	HT Editor *	htpeexp.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 "formats.h"#include "htanaly.h"#include "htctrl.h"#include "data.h"#include "htdebug.h"#include "endianess.h"#include "htiobox.h"#include "htnewexe.h"#include "htpal.h"#include "htpe.h"#include "htpeexp.h"#include "strtools.h"#include "httag.h"#include "log.h"#include "pe_analy.h"#include "snprintf.h"#include "stream.h"#include "tools.h"#include <stdlib.h>#include <string.h>static ht_view *htpeexports_init(Bounds *b, File *file, ht_format_group *group){	ht_pe_shared_data *pe_shared=(ht_pe_shared_data *)group->get_shared_data();	if (pe_shared->opt_magic!=COFF_OPTMAGIC_PE32) return NULL;	uint32 sec_rva, sec_size;	sec_rva = pe_shared->pe32.header_nt.directory[PE_DIRECTORY_ENTRY_EXPORT].address;	sec_size = pe_shared->pe32.header_nt.directory[PE_DIRECTORY_ENTRY_EXPORT].size;	if (!sec_rva || !sec_size) return NULL;	int h0=new_timer();	start_timer(h0);	uint32 *efunct=NULL, *enamet=NULL;	uint16 *eordt=NULL;	String filename;	char *esectionbuf = NULL;	char eline[256];	FileOfs ename_ofs;	char *ename;	bool *lord;	String s;	ConstMemMapFile *efile = NULL;	ht_group *g = NULL;	Bounds c;	ht_statictext *head;	ht_pe_export_viewer *v = NULL;		file->getFilename(filename);	/* get export directory offset */	/* 1. get export directory rva */	FileOfs eofs;	uint32 erva=pe_shared->pe32.header_nt.directory[PE_DIRECTORY_ENTRY_EXPORT].address;	uint32 esize=pe_shared->pe32.header_nt.directory[PE_DIRECTORY_ENTRY_EXPORT].size;		/* 2. transform it into an offset */	if (!pe_rva_to_ofs(&pe_shared->sections, erva, &eofs)) goto pe_read_error;	LOG("%y: PE: reading export directory at offset 0x%08qx, rva %08x, size %08x...", &filename, eofs, erva, esize);	/* make a memfile out of this section */	esectionbuf = ht_malloc(esize);	file->seek(eofs);	file->readx(esectionbuf, esize);	efile = new ConstMemMapFile(esectionbuf, esize, eofs);	file = efile;		/* read export directory header */	PE_EXPORT_DIRECTORY edir;	file->seek(eofs);	file->readx(&edir, sizeof edir);	createHostStruct(&edir, PE_EXPORT_DIRECTORY_struct, little_endian);	/* get export filename */	if (!pe_rva_to_ofs(&pe_shared->sections, edir.name_address, &ename_ofs)) goto pe_read_error;	file->seek(ename_ofs);	ename = efile->fgetstrz();	/* read in function entrypoint table */	FileOfs efunct_ofs;	efunct = ht_malloc(edir.function_count*sizeof *efunct);	if (!pe_rva_to_ofs(&pe_shared->sections, edir.function_table_address, &efunct_ofs)) goto pe_read_error;	file->seek(efunct_ofs);	file->readx(efunct, edir.function_count*sizeof *efunct);	for (uint i=0; i<edir.function_count;i++) {		efunct[i] = createHostInt(efunct+i, sizeof *efunct, little_endian);	}	if (edir.name_count) {		/* read in name address table */		FileOfs enamet_ofs;		enamet = ht_malloc(edir.name_count*sizeof *enamet);		if (!pe_rva_to_ofs(&pe_shared->sections, edir.name_table_address, &enamet_ofs)) goto pe_read_error;		file->seek(enamet_ofs);		file->readx(enamet, edir.name_count*sizeof *enamet);		for (uint i=0; i<edir.name_count; i++) {			enamet[i] = createHostInt(enamet+i, sizeof *enamet, little_endian);		}		/* read in ordinal table */		FileOfs eordt_ofs;		eordt = ht_malloc(edir.name_count*sizeof *eordt);		if (!pe_rva_to_ofs(&pe_shared->sections, edir.ordinal_table_address, &eordt_ofs)) goto pe_read_error;		file->seek(eordt_ofs);		file->readx(eordt, edir.name_count*sizeof *eordt);		for (uint i=0; i<edir.name_count; i++) {			eordt[i] = createHostInt(eordt+i, sizeof *eordt, little_endian);		}		lord = ht_malloc(sizeof *lord*edir.function_count);		memset(lord, 0, sizeof *lord*edir.function_count);		for (uint i=0; i < edir.name_count; i++) {			if (eordt[i] < edir.function_count) {				lord[eordt[i]]=true;			}		}		/* exports by ordinal */		for (uint i=0; i<edir.function_count; i++) {			if (lord[i]) continue;			RVA f = efunct[i];			ht_pe_export_function *efd = new ht_pe_export_function(f, i+edir.ordinal_base);			pe_shared->exports.funcs->insert(efd);		}		free(lord);		/* exports by name */		for (uint i=0; i < edir.name_count; i++) {			uint o = eordt[i];			RVA f = efunct[o];			FileOfs en;			if (!pe_rva_to_ofs(&pe_shared->sections, *(enamet+i), &en)) goto pe_read_error;			file->seek(en);			efile->readStringz(s);			ht_pe_export_function *efd = new ht_pe_export_function(f, o+edir.ordinal_base, s.contentChar());			pe_shared->exports.funcs->insert(efd);		}	} else {		/* exports by ordinal */		for (uint i=0; i < edir.function_count; i++) {			RVA f = efunct[i];			ht_pe_export_function *efd = new ht_pe_export_function(f, i+edir.ordinal_base);			pe_shared->exports.funcs->insert(efd);		}	}	// sdgfdg	c = *b;	c.x = 0;	c.y = 0;	g = new ht_group();	g->init(&c, VO_RESIZE, DESC_PE_EXPORTS"-g");	c.y = 1;	c.h--;	v = new ht_pe_export_viewer();	v->init(&c, group);	c.y = 0;	c.h = 1;	ht_snprintf(eline, sizeof eline, "* PE export directory at offset %08qx (dllname = %s)", eofs, ename);	head = new ht_statictext();	head->init(&c, eline, align_left);	g->insert(head);	g->insert(v);//	for (uint i=0; i<pe_shared->exports.funcs->count(); i++) {		ht_pe_export_function *e = (ht_pe_export_function *)(*pe_shared->exports.funcs)[i];		char ord[32], addr[32];		ht_snprintf(ord, sizeof ord, "%04x", e->ordinal);		ht_snprintf(addr, sizeof addr, "%08x", e->address);		v->insert_str(i, ord, addr, e->byname ? e->name : "<by ordinal>");	}//	v->update();	g->setpalette(palkey_generic_window_default);	stop_timer(h0);//	LOG("%y: PE: %d ticks (%d msec) to read exports", filename, get_timer_tick(h0), get_timer_msec(h0));	delete_timer(h0);	free(ename);	free(efunct);	free(enamet);	free(eordt);	pe_shared->v_exports = v;	delete efile;	free(esectionbuf);	return g;pe_read_error:	delete_timer(h0);	errorbox("%y: PE export directory seems to be corrupted.", &filename);	free(efunct);	free(enamet);	free(eordt);	if (g) {		g->done();		delete g;	}	if (v) {		v->done();		delete v;	}	delete efile;	free(esectionbuf);	return NULL;}format_viewer_if htpeexports_if = {	htpeexports_init,	NULL};/* *	CLASS ht_pe_export_viewer */void	ht_pe_export_viewer::init(Bounds *b, ht_format_group *fg){	ht_text_listbox::init(b, 3, 2, LISTBOX_QUICKFIND);	options |= VO_BROWSABLE;	desc = strdup(DESC_PE_EXPORTS);	format_group = fg;}void	ht_pe_export_viewer::done(){	ht_text_listbox::done();}const char *ht_pe_export_viewer::func(uint i, bool execute){	ht_text_listbox_sort_order sortord;	switch (i) {		case 2:			if (execute) {				sortord.col = 0;				sortord.compare_func = strcmp;				sort(1, &sortord);			}			return "sortord";		case 4:			if (execute) {				sortord.col = 1;				sortord.compare_func = strcmp;				sort(1, &sortord);			}			return "sortva";		case 5:			if (execute) {				sortord.col = 2;				sortord.compare_func = strcmp;				sort(1, &sortord);			}			return "sortname";	}	return NULL;}void ht_pe_export_viewer::handlemsg(htmsg *msg){	switch (msg->msg) {		case msg_funcexec:			if (func(msg->data1.integer, 1)) {				clearmsg(msg);				return;			}			break;		case msg_funcquery: {			const char *s=func(msg->data1.integer, 0);			if (s) {				msg->msg=msg_retval;				msg->data1.cstr=s;			}			break;		}		case msg_keypressed: {			if (msg->data1.integer == K_Return) {				select_entry(e_cursor);				clearmsg(msg);			}			break;		}	}	ht_text_listbox::handlemsg(msg);}bool ht_pe_export_viewer::select_entry(void *entry){	ht_text_listbox_item *i = (ht_text_listbox_item *)entry;	ht_pe_shared_data *pe_shared=(ht_pe_shared_data *)format_group->get_shared_data();	ht_pe_export_function *e = (ht_pe_export_function*)(*pe_shared->exports.funcs)[i->id];	if (!e) return true;	if (pe_shared->v_image) {		ht_aviewer *av = (ht_aviewer*)pe_shared->v_image;		PEAnalyser *a = (PEAnalyser*)av->analy;		Address *addr;		if (pe_shared->opt_magic == COFF_OPTMAGIC_PE32) {			addr = a->createAddress32(e->address+pe_shared->pe32.header_nt.image_base);		} else {			addr = a->createAddress64(e->address+pe_shared->pe64.header_nt.image_base);		}		if (av->gotoAddress(addr, NULL)) {			app->focus(av);			vstate_save();		} else {			global_analyser_address_string_format = ADDRESS_STRING_FORMAT_COMPACT | ADDRESS_STRING_FORMAT_ADD_0X;			errorbox("can't follow: %s %y is not valid!", "export address", addr);		}		delete addr;	} else errorbox("can't follow: no image viewer");	return true;}/* *	class ht_pe_export_function */ht_pe_export_function::ht_pe_export_function(RVA addr, uint ord){	ordinal = ord;	address = addr;	byname = false;}ht_pe_export_function::ht_pe_export_function(RVA addr, uint ord, const char *n){	ordinal = ord;	name = ht_strdup(n);	address = addr;	byname = true;}ht_pe_export_function::~ht_pe_export_function(){	if (byname) free(name);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级日韩在线| 国产精品资源在线看| 综合婷婷亚洲小说| 久久久久99精品国产片| 久久久午夜精品| 久久影院午夜片一区| 久久久久久一级片| 国产午夜亚洲精品羞羞网站| 久久婷婷一区二区三区| 国产精品另类一区| 亚洲欧美日韩中文字幕一区二区三区 | 99re成人精品视频| 成人动漫精品一区二区| 91麻豆视频网站| 欧美色老头old∨ideo| 777午夜精品视频在线播放| 日韩一区二区精品葵司在线| 久久久久久免费| 亚洲精品乱码久久久久久黑人 | 欧美蜜桃一区二区三区| 91精品国产一区二区三区蜜臀| 日韩一卡二卡三卡四卡| 久久精品视频在线免费观看| 亚洲日本va午夜在线影院| 日韩专区欧美专区| 国产精品99久久久久久宅男| 99精品偷自拍| 91精品蜜臀在线一区尤物| 国产亚洲精品资源在线26u| 樱花草国产18久久久久| 另类小说一区二区三区| 91麻豆国产在线观看| 日韩一区二区免费高清| 成人免费在线视频| 日韩国产在线观看| 99久久伊人精品| 日韩视频一区在线观看| 一区二区高清在线| 狠狠色狠狠色合久久伊人| 日本韩国一区二区三区视频| 日韩一级在线观看| 亚洲一区视频在线| 国产98色在线|日韩| 日韩精品一区二区三区四区 | 一区二区三区四区视频精品免费| 麻豆精品一区二区三区| 在线区一区二视频| 国产欧美日韩精品一区| 日本成人在线一区| 欧美无乱码久久久免费午夜一区 | 不卡高清视频专区| 欧美一级艳片视频免费观看| 亚洲另类色综合网站| 成人综合在线观看| 欧美tickle裸体挠脚心vk| 性欧美疯狂xxxxbbbb| 91影院在线免费观看| 国产精品欧美久久久久无广告 | 亚洲特级片在线| 国产电影精品久久禁18| 精品国产乱码久久久久久1区2区 | 视频一区二区三区在线| 色狠狠av一区二区三区| 中文字幕一区二区在线观看| 国产成a人亚洲| 久久久精品免费免费| 激情五月婷婷综合| 精品欧美久久久| 激情偷乱视频一区二区三区| 91精品国产综合久久小美女| 午夜精品久久久久久久久| 欧美日韩激情一区二区三区| 亚洲一区av在线| 337p亚洲精品色噜噜| 香蕉av福利精品导航| 日韩一区二区电影网| 免费一级欧美片在线观看| 欧美成人欧美edvon| 看电视剧不卡顿的网站| 337p粉嫩大胆噜噜噜噜噜91av| 国产主播一区二区| 国产午夜亚洲精品午夜鲁丝片| 国产风韵犹存在线视精品| 国产精品日韩精品欧美在线| 成人免费看黄yyy456| 国产精品第一页第二页第三页| 99精品久久久久久| 亚洲午夜成aⅴ人片| 欧美一区二区三区免费视频| 久久99精品网久久| 国产精品私人自拍| 一本大道av伊人久久综合| 亚洲高清免费观看高清完整版在线观看| 在线看一区二区| 日韩精品欧美精品| 26uuu色噜噜精品一区| 94-欧美-setu| 日韩av电影一区| 国产精品你懂的在线| 欧美日韩一区二区三区在线看| 麻豆精品在线看| 亚洲视频一二三| 9191成人精品久久| 成人午夜av影视| 午夜激情一区二区三区| 久久网站最新地址| 在线免费不卡视频| 国产乱码字幕精品高清av| 亚洲精选在线视频| 精品成人一区二区| 欧美日韩国产综合草草| 国产一区二区看久久| 亚洲国产精品一区二区久久| 国产欧美日韩视频在线观看| 欧美色电影在线| 粉嫩绯色av一区二区在线观看| 亚洲国产日韩a在线播放性色| 国产亚洲综合性久久久影院| 欧美精品成人一区二区三区四区| 国产乱码一区二区三区| 亚洲国产美女搞黄色| 欧美激情艳妇裸体舞| 日韩一级二级三级| 在线观看一区二区精品视频| 成人av免费网站| 国产在线精品一区二区夜色| 亚洲电影中文字幕在线观看| 国产精品热久久久久夜色精品三区| 欧美丰满嫩嫩电影| 91在线国产观看| 成人性生交大片免费看中文| 久久成人久久爱| 日本中文字幕一区| 亚洲va中文字幕| 依依成人精品视频| 亚洲欧洲av色图| 国产欧美一区二区精品忘忧草| 日韩免费观看2025年上映的电影| 91福利视频久久久久| 91蝌蚪国产九色| 成人午夜激情在线| 成人免费观看视频| 国产很黄免费观看久久| 国产一区久久久| 麻豆国产精品777777在线| 日韩av电影天堂| 午夜视频在线观看一区二区三区| 亚洲综合免费观看高清完整版 | 久久久99精品久久| 欧美tickling挠脚心丨vk| 精品乱人伦一区二区三区| 日韩一区二区免费高清| 精品少妇一区二区三区日产乱码| 欧美一区二区三区免费| 日韩午夜电影av| 久久久久国产精品厨房| 国产三级三级三级精品8ⅰ区| 中文字幕欧美日韩一区| 国产清纯在线一区二区www| 中文字幕av一区二区三区| 中文字幕一区二区不卡| 亚洲另类在线制服丝袜| 亚洲成人av电影在线| 奇米精品一区二区三区在线观看一| 日韩成人免费电影| 精品一区二区三区蜜桃| 成人性色生活片免费看爆迷你毛片| 春色校园综合激情亚洲| 97精品视频在线观看自产线路二| 91麻豆国产精品久久| 欧美亚洲另类激情小说| 欧美va天堂va视频va在线| 中文字幕精品—区二区四季| 樱花草国产18久久久久| 免费成人在线网站| 国产91精品精华液一区二区三区| 91免费视频网| 欧美精品一级二级| 国产欧美精品一区二区色综合| 亚洲色图欧洲色图婷婷| 日韩激情一二三区| 国产福利精品导航| 欧美色老头old∨ideo| 久久精品视频免费| 亚洲第一精品在线| 成人手机电影网| 91精品国产综合久久久久久漫画 | 成人免费va视频| 欧美丰满少妇xxxxx高潮对白| 国产亚洲视频系列| 亚洲成人自拍一区| 丁香另类激情小说| 日韩精品一区二区三区swag| 中文字幕一区二区三区蜜月| 美女一区二区在线观看| 91社区在线播放| 久久久www成人免费毛片麻豆| 亚洲国产欧美日韩另类综合| 国产91丝袜在线播放九色| 欧美一卡二卡三卡四卡|