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

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

?? htanaly.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁 / 共 4 頁
字號:
/* *	HT Editor *	htanaly.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 <cstdlib>#include <cstring>#include <memory>#include "analy.h"#include "analy_names.h"#include "log.h"#include "htanaly.h"#include "htctrl.h" // FIXME: globalerror#include "htdialog.h"#include "htdisasm.h"#include "hthist.h"#include "htidle.h"#include "htiobox.h"#include "keyb.h"#include "htmenu.h"#include "htsearch.h"#include "strtools.h"#include "httag.h"#include "httree.h"#include "language.h"#include "textedit.h"#include "textfile.h"#include "tools.h"#include "snprintf.h"#include "syntax.h"#include "out.h"#include "out_ht.h"#include "out_txt.h"#include "store.h"extern "C" {#include "evalx.h"}/* FIXME: test *///#include "srt.h"#include "out_html.h"#include "out_sym.h"/* *   AnalyserInformation */void	AnalyserInformation::init(Bounds *b, ht_aviewer *a){	analy = a;	assert(a);	ht_statictext::init(b, 0, align_left);	register_idle_object(this);	idle();}void AnalyserInformation::done(){	unregister_idle_object(this);	ht_statictext::done();}int AnalyserInformation::gettext(char *buf, int maxlen){	return ht_snprintf(buf, maxlen,		"Analyser statistics:\n"		"====================\n\n"          		"Type: %s\nFile: %y\n"		"Using disassembler: %s\n\n"		"Known locations: %d\n"		"Known symbols: %d\n\n",		atype, &aname,		adis,		addrs, labels);}bool AnalyserInformation::idle(){	if (analy && analy->analy) {		addrs = analy->analy->getLocationCount();		labels = analy->analy->getSymbolCount();		atype = analy->analy->getType();		analy->analy->getName(aname);		if (analy->analy->disasm) {			adis = analy->analy->disasm->getName();		} else {			adis = "?";		}		dirtyview();	}	return false;}/* *   SymbolBox */void SymbolBox::init(Bounds *b, Analyser *Analy){	analy = Analy;	ht_listbox::init(b);	str = ht_malloc(1024);	symbols = analy->getSymbolCount();	idle_count = 1;}void SymbolBox::done(){	free(str);	ht_listbox::done();}int  SymbolBox::calcCount(){	return analy->getSymbolCount();}int  SymbolBox::cursorAdjust(){	Symbol *l = ((Symbol *)getFirst());	if (!l) return 0;	return l->location->addr->stringSize()+10;}int  SymbolBox::estimateEntryPos(void *entry){	return 0;}void *SymbolBox::getFirst(){	return analy->enumSymbols(NULL);}void *SymbolBox::getLast(){	return analy->enumSymbolsReverse(NULL);}void *SymbolBox::getNext(void *entry){	if (!entry) return NULL;	return analy->enumSymbols((Symbol *)entry);}void *SymbolBox::getPrev(void *entry){	if (!entry) return NULL;	return analy->enumSymbolsReverse((Symbol *)entry);}const char *SymbolBox::getStr(int col, void *entry){	if (!entry) return NULL;	Symbol *l = ((Symbol *)entry);	switch (col) {	case 0:		global_analyser_address_string_format = ADDRESS_STRING_FORMAT_LEADING_WHITESPACE;		ht_snprintf(str, 1024, "%y", l->location->addr);		break;	case 1:		ht_snprintf(str, 1024, "%s", label_type_short(l->type));		break;	case 2:		ht_snprintf(str, 1024, "%s", l->name);		break;	}	return str;}bool SymbolBox::idle(){	if ((idle_count % 500)==0) {		update();		redraw();		symbols = analy->getSymbolCount();		idle_count = 1;		return 1;	}	idle_count++;	return 0;}int SymbolBox::numColumns(){	return 3;}void *SymbolBox::quickfind(const char *s){	Symbol *tmp = analy->getSymbolByName(s);	if (tmp) return tmp;	tmp = analy->enumSymbolsByName(s);	if (tmp) {		int slen = strlen(s);		int tlen = strlen(tmp->name);		if (slen > tlen) return NULL;		if (ht_strncmp(tmp->name, s, slen)==0) return tmp;		return NULL;	} else {		return NULL;	}}char *SymbolBox::quickfindCompletition(const char *s){	if (analy->getSymbolByName(s)) {		return ht_strdup(s);	}	Symbol *tmp = analy->enumSymbolsByName(s);	if (!tmp) {		return ht_strdup(s);	}	Symbol *tmp2 = analy->enumSymbols(tmp);	if (!tmp2) {		return ht_strdup(tmp->name);	}	int slen = strlen(s);	if (!ht_strncmp(tmp->name, tmp2->name, slen)==0) {		return ht_strdup(tmp->name);	}	char *res = ht_malloc(1024); // buffer bla	strcpy(res, tmp->name);	while (tmp2 && (ht_strncmp(tmp2->name, s, slen)==0)) {//		fprintf(stdout, "while(%s, %s, %d)\n", tmp2->name, s, slen);		int a = ht_strccomm(res, tmp2->name);		res[a] = 0;		tmp2 = analy->enumSymbols(tmp2);	}	return res;}/* *	CLASS CallChain */void	CallChain::init(Bounds *b, Analyser *Analy, Address *a, char *desc){	ht_treeview::init(b, desc);	VIEW_DEBUG_NAME("CallChain");	analy = Analy;	root = createNode(a);}void CallChain_done(CallChainNode *n){	while (n) {		CallChain_done(n->child);		CallChainNode *temp = n->next;		free(n);		n = temp;	}}void	CallChain::done(){	CallChain_done(root);	ht_treeview::done();}void	CallChain::adjust(void *node, bool expand){	((CallChainNode*)node)->expanded = expand;}CallChainNode *CallChain::createNode(Address *a){	CallChainNode *n = ht_malloc(sizeof(CallChainNode));	n->next = NULL;	n->prev = NULL;	n->child = NULL;	n->examined = false;	n->xa = a->clone();	n->faddr = analy->getFunctionByAddress(a);	assert(n->faddr);	n->fa = n->faddr->addr;	n->expanded = false;	return n;}void CallChain::examineNode(CallChainNode *n){	n->examined = true;	if (has_children(n)) {		Container *x_tree = n->faddr->xrefs;		assert(x_tree);		ObjHandle oh = x_tree->findFirst();		AddrXRef *x = (AddrXRef *)x_tree->get(oh);		assert(x);		CallChainNode *nn = n->child = createNode(x->addr);		while ((oh = x_tree->findNext(oh)) != invObjHandle) {			x = (AddrXRef *)x_tree->get(oh);			nn->next = createNode(x->addr);			nn = nn->next;		}	}}void	*CallChain::get_child(void *node, int i){	CallChainNode *p;	if (node) {		if (!((CallChainNode *)node)->examined) examineNode((CallChainNode*)node);		p = ((CallChainNode *)node)->child;	} else {		p = root;	}	while (p && (--i)) p = p->next;	return p;}void	*CallChain::get_next_node(void *node){	return ((CallChainNode*)node)->next;}void	*CallChain::get_prev_node(void *node){	return ((CallChainNode*)node)->prev;}void	*CallChain::get_root(){	return root;}char *CallChain::get_text(void *node){	static char stupid[1024]; // FIXME: static var	CallChainNode *n = (CallChainNode*)node;	int d = 0;	n->xa->difference(d, n->faddr->addr);	char sign = '+';	if (d < 0) {		d = -d;		sign = '-';          	}	global_analyser_address_string_format = ADDRESS_STRING_FORMAT_COMPACT | ADDRESS_STRING_FORMAT_ADD_0X;	ht_snprintf(stupid, sizeof stupid, "%s%c%x (%y)", 		n->faddr->label ? n->faddr->label->name : "unknown", 		sign, 		d, 		n->xa	);	return stupid;}bool	CallChain::has_children(void *node){	return ((CallChainNode*)node)->faddr->xrefs != NULL;}bool	CallChain::is_expanded(void *node){	return ((CallChainNode*)node)->expanded;}void	CallChain::select_node(void *node){}//////////////////////////////////////////////////////////////////////////////* * */void AnalyInfoline::init(Bounds *b, ht_aviewer *A, const char *Format){	ht_statictext::init(b, 0, align_left);	VIEW_DEBUG_NAME("AnalyInfoline");	analy = A;	displayformat = ht_strdup(Format);	addr = new InvalidAddress();	fofs = INVALID_FILE_OFS;}void AnalyInfoline::done(){	free(displayformat);	delete addr;	ht_statictext::done();}int AnalyInfoline::gettext(char *buf, int maxlen){	if (maxlen <= 0) return 0;	if (valid()) {		const char *sec = analy->analy->getSegmentNameByAddress(addr);		if (fofs != INVALID_FILE_OFS) {			Location *a = analy->analy->getFunctionByAddress(addr);			const char *func = analy->analy->getSymbolNameByLocation(a);			char *d = displayformat;			char *ss = buf, *s = buf;			while (*d) {				if (*d == '%') {					d++;					switch (*d) {					case ANALY_STATUS_ARG_SECTION:						if (sec) ss += ht_snprintf(ss, maxlen-(ss-s), "%s", sec);						break;					case ANALY_STATUS_ARG_FILEOFFSET:						ss += ht_snprintf(ss, maxlen-(ss-s), "%08qx", fofs);						break;					case ANALY_STATUS_ARG_RAW_UNASM: {						int length;						ss += ht_snprintf(ss, maxlen-(ss-s), "%s", analy->analy->getDisasmStr(addr, length));						break;					}					case ANALY_STATUS_ARG_FUNCTION: {						if (func) {							int d = 0;							addr->difference(d, a->addr);							char sign = '+';							if (d < 0) {								d =- d;								sign = '-';							}							ss += ht_snprintf(ss, maxlen-(ss-s), "%s%c%x", func, sign, d);						}						break;					}					case ANALY_STATUS_ARG_OFFSET:						global_analyser_address_string_format = ADDRESS_STRING_FORMAT_LEADING_ZEROS;						ss += ht_snprintf(ss, maxlen-(ss-s), "%y", addr);						break;					case '%':						if (maxlen-(ss-s) > 1) {							*ss++ = '%';						}						break;					default:						ss += ht_snprintf(ss, maxlen-(ss-s), " error in format ");					}				} else {					if (maxlen - (ss-s) > 1) {						// leave space for trailing zero						*ss++ = *d;					}				}				d++;			}			*ss = 0;			return ss - s;		} else {			if (!sec) {				return ht_strlcpy(buf, "[not in file]", maxlen);			} else {				return ht_snprintf(buf, maxlen, "<%s> [not in file]", sec);			}		}	} else {		return ht_strlcpy(buf, "<no analyser>", maxlen);	}}void AnalyInfoline::update(Address *cursor_addr, FileOfs ecursor_addr){	delete addr;	if (valid()) {		fofs = ecursor_addr;		addr = cursor_addr->clone();	} else {		fofs = INVALID_FILE_OFS;		addr = new InvalidAddress();	}	dirtyview();	redraw();}bool AnalyInfoline::valid(){	return ((analy)&&(analy->analy));}/* * */void ht_aviewer::init(Bounds *b, const char *desc, int caps, File *file, ht_format_group *format_group, Analyser *Analy){	analy = Analy;	if (Analy) {		analy->setDisplayMode(ANALY_SHOW_ADDRESS | ANALY_SHOW_COMMENTS			| ANALY_SHOW_LABELS | ANALY_SHOW_XREFS			| ANALY_TRANSLATE_SYMBOLS | ANALY_COLLAPSE_XREFS, 			ANALY_EDIT_BYTES);	}	analy_sub = NULL;	ht_uformat_viewer::init(b, desc, caps, file, format_group);	search_caps |= SEARCHMODE_BIN | SEARCHMODE_EVALSTR | SEARCHMODE_EXPR;	infoline = NULL;	idle_count = 0;	last_active = true;	pause = false;	register_idle_object(this);	one_load_hack = false;}void ht_aviewer::done(){	unregister_idle_object(this);	ht_uformat_viewer::done();	if (analy) {		analy->done(); // FIXME: this musnt be here		delete analy;	}}void ht_aviewer::attachInfoline(AnalyInfoline *V){	infoline = V;}bool ht_aviewer::pos_to_offset(viewer_pos p, FileOfs *ofs){	if (analy) {		Address *addr;		if (!convertViewerPosToAddress(p, &addr)) return false;		FileOfs o=analy->addressToFileofs(addr);		delete addr;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久影视一区二区| 色婷婷综合中文久久一本| 一区二区三区产品免费精品久久75| 久久综合视频网| 精品国产成人系列| 日韩精品一区二区三区在线| 777欧美精品| 日韩免费电影网站| 2024国产精品| 国产精品私人影院| 亚洲视频香蕉人妖| 中文字幕免费一区| 一区视频在线播放| 亚洲激情五月婷婷| 日日夜夜精品视频免费| 七七婷婷婷婷精品国产| 久久国产生活片100| 激情五月激情综合网| 国产精品一区二区x88av| 成人一区二区在线观看| 色综合视频在线观看| 欧美日韩精品高清| 久久综合色鬼综合色| 国产女主播一区| 一个色在线综合| 日本中文字幕一区| 国产高清在线精品| 色婷婷一区二区三区四区| 欧美日韩成人高清| 2023国产精华国产精品| 国产精品国产三级国产a| 亚洲猫色日本管| 蜜臀av性久久久久av蜜臀妖精| 精品亚洲国产成人av制服丝袜| 成人app在线| 欧美一区二区日韩一区二区| 国产性天天综合网| 亚洲一级不卡视频| 丰满放荡岳乱妇91ww| 欧美性受xxxx黑人xyx性爽| 91精品国产综合久久久久久漫画 | 成人精品亚洲人成在线| 欧美性欧美巨大黑白大战| 久久综合丝袜日本网| 亚洲线精品一区二区三区八戒| 九九精品视频在线看| 91丝袜美女网| 欧美大尺度电影在线| 一区二区三区成人在线视频| 国产精品一线二线三线精华| 在线免费观看日本欧美| 国产精品视频麻豆| 美女视频一区在线观看| 欧美无人高清视频在线观看| 亚洲国产成人在线| 韩国欧美国产1区| 日韩亚洲欧美一区二区三区| 亚洲黄网站在线观看| 成人免费视频免费观看| 2014亚洲片线观看视频免费| 日韩av一区二| 欧美色成人综合| 亚洲男人电影天堂| 国产成人自拍网| 久久久久久亚洲综合| 久久精品国产色蜜蜜麻豆| 欧美日韩亚洲综合| 天天av天天翘天天综合网色鬼国产 | 免费在线观看一区二区三区| 欧美影视一区在线| 亚洲欧美日韩国产成人精品影院| 成人激情电影免费在线观看| 国产日韩欧美电影| 国产成人a级片| 国产欧美日韩在线观看| 国产一区二区0| 国产日韩欧美精品一区| 国产成人高清在线| 中文字幕在线播放不卡一区| 成人爱爱电影网址| 亚洲天堂2014| 欧美伊人久久久久久午夜久久久久| 亚洲欧美日韩人成在线播放| 色欧美片视频在线观看在线视频| 亚洲精品视频免费观看| 欧美在线高清视频| 午夜久久久久久久久| 欧美巨大另类极品videosbest | 首页欧美精品中文字幕| 正在播放亚洲一区| 精彩视频一区二区| 国产欧美中文在线| 在线观看亚洲a| 毛片基地黄久久久久久天堂| 日韩一区二区三区电影| 国产一区二区在线视频| 国产精品福利影院| 欧美性色aⅴ视频一区日韩精品| 三级久久三级久久久| 久久九九全国免费| 99re在线精品| 人人超碰91尤物精品国产| 精品999在线播放| 97se亚洲国产综合自在线| 亚洲午夜国产一区99re久久| 精品成人免费观看| 99久久99久久久精品齐齐| 亚洲6080在线| 国产日产欧美精品一区二区三区| a在线播放不卡| 日韩av不卡在线观看| 国产精品国产三级国产普通话蜜臀 | 在线不卡欧美精品一区二区三区| 麻豆一区二区三| 亚洲日本一区二区| 欧美大尺度电影在线| 色综合久久久久| 狠狠色狠狠色综合系列| 亚洲国产精品久久人人爱| 久久精品人人爽人人爽| 欧美日本精品一区二区三区| caoporn国产一区二区| 美女网站色91| 亚洲伦理在线精品| 国产精品人成在线观看免费 | 精品国产人成亚洲区| 欧美艳星brazzers| 成人免费黄色在线| 蜜桃精品在线观看| 日日摸夜夜添夜夜添精品视频 | 洋洋成人永久网站入口| 国产欧美日韩在线| 欧美一级欧美一级在线播放| 日本道色综合久久| 波多野洁衣一区| 国产一区美女在线| 捆绑变态av一区二区三区| 亚洲国产三级在线| 亚洲人成在线观看一区二区| 国产欧美一区二区三区沐欲| 日韩欧美高清在线| 欧美高清精品3d| 欧美三级乱人伦电影| 一本到三区不卡视频| av一区二区三区在线| 国产成人亚洲精品狼色在线 | 国产亚洲精品超碰| 精品国产三级电影在线观看| 日韩一区二区在线看| 欧美日韩国产乱码电影| 欧美伊人精品成人久久综合97 | 欧美一级黄色片| 91精选在线观看| 在线观看www91| 欧美自拍偷拍一区| 欧美三级资源在线| 制服丝袜日韩国产| 日韩一二在线观看| 久久久久久久综合狠狠综合| 久久青草欧美一区二区三区| 久久精品视频免费| 欧美经典三级视频一区二区三区| 久久精品欧美一区二区三区不卡| 久久综合九色综合97婷婷女人| 久久综合久久99| 国产精品美女久久久久久久久 | 成人午夜短视频| 99热在这里有精品免费| 在线精品观看国产| 日韩午夜激情免费电影| 久久先锋影音av鲁色资源| 欧美国产97人人爽人人喊| 国产精品国产三级国产三级人妇 | 色综合欧美在线视频区| 欧美视频一区二区三区四区| 69久久夜色精品国产69蝌蚪网| 日韩欧美在线影院| 欧美国产综合一区二区| 亚洲欧美日韩国产成人精品影院| 亚洲h动漫在线| 久久成人麻豆午夜电影| 成人性色生活片| 欧美综合在线视频| 欧美精品一区二区三区蜜桃视频| 国产精品人人做人人爽人人添| 亚洲成人av福利| 国产精品自拍网站| 欧美性生活一区| 欧美精品一区二区三区一线天视频| 国产精品久久久久精k8| 天堂久久久久va久久久久| 极品尤物av久久免费看| 色av成人天堂桃色av| 精品国产精品一区二区夜夜嗨| 亚洲色图.com| 久久er精品视频| 精品视频一区三区九区| 国产精品无人区| 久久国产精品区| 欧美日韩视频专区在线播放|