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

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

?? analy.h

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? H
字號(hào):
/*  *	HT Editor *	analy.h * *	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. */#ifndef analy_h#define analy_h#include "asm.h"#include "data.h"#include "code_analy.h"#include "data_analy.h"#include "stddata.h"extern int num_ops_parsed;class Analyser;#define ADDRESS_STRING_FORMAT_COMPACT            0#define ADDRESS_STRING_FORMAT_LEADING_WHITESPACE 1#define ADDRESS_STRING_FORMAT_LEADING_ZEROS      2#define ADDRESS_STRING_FORMAT_RESERVED           3#define ADDRESS_STRING_FORMAT_HEX_CAPS		    4#define ADDRESS_STRING_FORMAT_ADD_0X		    8#define ADDRESS_STRING_FORMAT_ADD_H		   16class Address: public Object {public:				Address() {};				Address(BuildCtorArg&a): Object(a) {};	virtual	bool		add(int offset) = 0;	virtual	int		byteSize() = 0;	virtual Address	*	clone() const = 0;	virtual	int		compareDelinear(Address *to);	virtual	bool 		difference(int &result, Address *to) = 0;	virtual	void 		getFromArray(const byte *array) = 0;	virtual	void 		getFromCPUAddress(CPU_ADDR *ca) = 0;	virtual	bool		getFromUInt64(uint64 u) = 0;	virtual	bool 		isValid();	virtual	int		parseString(const char *s, int length, Analyser *a) = 0;	virtual	void		putIntoArray(byte *array) const = 0;	virtual	void		putIntoCPUAddress(CPU_ADDR *ca) const = 0;	virtual	bool		putIntoUInt64(uint64 &u) const = 0;	virtual	int		stringify(char *s, int max_length, int format) const = 0;	virtual	int		stringSize() const = 0;	virtual	int		toString(char *buf, int buflen) const;};class InvalidAddress: public Address {public:				InvalidAddress() {};				InvalidAddress(BuildCtorArg&a): Address(a) {};	virtual	bool		add(int offset);	virtual	int		byteSize();	virtual	int		compareTo(const Object *obj) const;	virtual	bool		difference(int &result, Address *to);	virtual	InvalidAddress *clone() const;	virtual	void 		getFromArray(const byte *array);	virtual	void		getFromCPUAddress(CPU_ADDR *ca);	virtual	bool		getFromUInt64(uint64 u);	virtual	bool		isValid();	virtual	ObjectID	getObjectID() const;	virtual	int		parseString(const char *s, int length, Analyser *a);	virtual	void 		putIntoArray(byte *array) const;	virtual	void 		putIntoCPUAddress(CPU_ADDR *ca) const;	virtual	bool		putIntoUInt64(uint64 &u) const;	virtual	int		stringify(char *s, int max_length, int format) const;	virtual	int		stringSize() const;};/* *	This address type will be used by most analysers, so we define it here. */class AddressFlat32: public Address {public:	uint32 addr;				AddressFlat32(BuildCtorArg&a): Address(a) {};				AddressFlat32(uint32 a=0): addr(a) {};	virtual	bool		add(int offset);	virtual	int		byteSize();	virtual	AddressFlat32 *	clone() const;	virtual	int		compareTo(const Object *obj) const;	virtual	int		compareDelinear(Address *to);	virtual	void		getFromArray(const byte *array);	virtual	void		getFromCPUAddress(CPU_ADDR *ca);	virtual	bool		getFromUInt64(uint64 u);	virtual	bool		difference(int &result, Address *to);	virtual	void		load(ObjectStream &s);	virtual	ObjectID	getObjectID() const;	virtual	int		parseString(const char *s, int length, Analyser *a);	virtual	void		putIntoArray(byte *array) const;	virtual	void		putIntoCPUAddress(CPU_ADDR *ca) const;	virtual	bool		putIntoUInt64(uint64 &u) const;	virtual	void		store(ObjectStream &s) const;	virtual	int		stringify(char *s, int max_length, int format) const;	virtual	int		stringSize() const;};class AddressFlat64: public Address {public:	uint64 addr;				AddressFlat64(BuildCtorArg&a): Address(a) {};				AddressFlat64(uint64 a=0): addr(a) {};	virtual	bool		add(int offset);	virtual	int		byteSize();	virtual	int		compareTo(const Object *obj) const;	virtual	int		compareDelinear(Address *to);	virtual	void		getFromArray(const byte *array);	virtual	void		getFromCPUAddress(CPU_ADDR *ca);	virtual	bool		getFromUInt64(uint64 u);	virtual	bool		difference(int &result, Address *to);	virtual	AddressFlat64 *	clone() const;	virtual	void		load(ObjectStream &s);	virtual	ObjectID	getObjectID() const;	virtual	int		parseString(const char *s, int length, Analyser *a);	virtual	void		putIntoArray(byte *array) const;	virtual	void		putIntoCPUAddress(CPU_ADDR *ca) const;	virtual	bool		putIntoUInt64(uint64 &u) const;	virtual	void		store(ObjectStream &s) const;	virtual	int		stringify(char *s, int max_length, int format) const;	virtual	int		stringSize() const;};#define ANALY_SEGMENT_CAP_WRITE 1#define ANALY_SEGMENT_CAP_INITIALIZED 2// other caps can be defined locallyclass Segment: public Object {	Address *start, *end;	char *name;	int caps;						Segment(const char *n, Address *s, Address *e, int c, int address_size);	virtual	bool			containsAddress(Address *addr) = 0;	virtual	String &		getName(String &res);	virtual	int			getAddressSize();	virtual	int			getCapability(int cap);};/* *	these are the different possibilities of a branch *	to support further processors other types can be added */enum branch_enum_t {			br_nobranch,					// straight exec. flow			br_jump,			br_return,			br_call,			br_jXX};/* *   internal opcodes are interchanged in this format */#define OPCODE dis_insn/* * */class AnalyDisassembler: public Object {public:	Analyser		*analy;	Disassembler		*disasm;					AnalyDisassembler();					AnalyDisassembler(BuildCtorArg &a): Object(a) {};		void			init(Analyser *A);	virtual	Address *		branchAddr(OPCODE *opcode, branch_enum_t branchtype, bool examine) = 0;	virtual	void			examineOpcode(OPCODE *opcode) = 0;	virtual	void			initDisasm();	virtual	branch_enum_t		isBranch(OPCODE *opcode) = 0;};/***************************************************************************/enum xref_enum_t {	xrefread,	xrefwrite,	xrefoffset,	xrefjump,	xrefcall,	xrefijump,	xreficall};class AddrXRef: public Object {public:	Address		*addr;	xref_enum_t	type;				AddrXRef(Address *a, xref_enum_t aType = xrefread);				AddrXRef(BuildCtorArg&a): Object(a) {};	virtual			~AddrXRef();	virtual	void		load(ObjectStream &s);	virtual	ObjectID	getObjectID() const;	virtual	void		store(ObjectStream &s) const;	virtual int		compareTo(const Object *) const;};class CommentList: public Array {public:				CommentList();	void			appendPreComment(const char *s);	void			appendPreComment(int special);	void			appendPostComment(const char *s);	void			appendPostComment(int special);	const char *		getName(uint i);};struct Symbol;struct Location {	// the address	Address		*addr;	// this is a tree structure (key is addr)	Location	*left, *right;	// attached label	Symbol		*label;	// attached xrefs	Container	*xrefs;	// attached comments	CommentList	*comments;	// for data types	taddr_type	type;	// the function the address belongs to (if applicable)	Location	*thisfunc;	// some flags	int		flags;};/* * taddr.flags: */#define AF_DELETED 1#define AF_FUNCTION_SET 2#define AF_FUNCTION_END 4enum tsectype {	scvalid,	scread,	scwrite,	screadwrite,	sccode,	scinitialized};enum taccesstype {	acread,	acwrite,	acoffset};struct taccess	{	bool		indexed;	int		size;	taccesstype 	type;};enum labeltype {	label_unknown = 0,	label_func,	label_loc,	label_data};struct Symbol {	labeltype	type;	Location *	location;	char *		name;	Symbol		*left, *right;};class AddressQueueItem: public Object {public:	Address	*addr;	Address	*func;				AddressQueueItem(BuildCtorArg&a): Object(a) {};				AddressQueueItem(Address *Addr, Address *Func);				~AddressQueueItem();	virtual	void		load(ObjectStream &s);	virtual	ObjectID	getObjectID() const;	virtual	void		store(ObjectStream &s) const;};class CodeAnalyser;class DataAnalyser;class Analyser: public Object	{public:	Address *		addr;	Address *		invalid_addr;	Queue *			addr_queue;	int			ops_parsed;							// for continuing	bool			active;	Address			*next_explored, *first_explored, *last_explored;	bool			next_address_is_invalid;	Area *			explored;	Area *			initialized;	Location *		locations;	CodeAnalyser *		code;	DataAnalyser *		data;	AnalyDisassembler *	analy_disasm;	Disassembler *		disasm;	Symbol *		symbols;	int			location_threshold, symbol_threshold;	int			cur_addr_ops, cur_label_ops;                 // for threshold	int			max_opcode_length;	Location		*cur_func;	mutable bool		dirty;	int			symbol_count;	int			location_count;				Analyser() {};				Analyser(BuildCtorArg&a): Object(a) {};		void		init();	virtual	void		load(ObjectStream &s);	virtual	void		done();		bool		addAddressSymbol(Address *Addr, const char *Prefix, labeltype type, Location *infunc=NULL);		void	 	addComment(Address *Addr, int line, const char *c);		bool		addSymbol(Address *Addr, const char *label, labeltype type, Location *infunc=NULL);	virtual	FileOfs		addressToFileofs(Address *Addr) = 0;		bool		addXRef(Address *from, Address *to, xref_enum_t action);		void	 	assignComment(Address *Addr, int line, const char *c);		bool		assignSymbol(Address *Addr, const char *label, labeltype type, Location *infunc=NULL);		void		assignXRef(Address *from, Address *to, xref_enum_t action);	virtual	void		beginAnalysis();	virtual	uint		bufPtr(Address *Addr, byte *buf, int size) = 0;		bool	  	continueAnalysis();		void		continueAnalysisAt(Address *Addr);	virtual	Address *	createAddress() = 0;		void		dataAccess(Address *Addr, taccess access);		void		deleteLocation(Address *Addr);		void		deleteSymbol(Address *Addr);		bool		deleteXRef(Address *from, Address *to);		void		disableSymbol(Symbol *label);		void		doBranch(branch_enum_t branch, OPCODE *opcode, int len);		void		engageCodeanalyser();		Location *	enumLocations(Address *Addr);		Location *	enumLocationsReverse(Address *Addr);		Symbol *	enumSymbolsByName(const char *at);		Symbol *	enumSymbolsByNameReverse(const char *at);		Symbol *	enumSymbols(Symbol *sym);		Symbol *	enumSymbolsReverse(Symbol *sym);	virtual	taddr_typetype	examineData(Address *Addr);		void		finish();		void		freeLocation(Location *loc);		void		freeLocations(Location *locs);		void		freeComments(Location *loc);		void		freeSymbol(Symbol *sym);		void		freeSymbols(Symbol *syms);		Location *	getLocationByAddress(Address *Addr);		Location *	getLocationContextByAddress(Address *Addr);		int		getLocationCount() const;		Location *	getFunctionByAddress(Address *Addr);		Location *	getPreviousSymbolByAddress(Address *Addr);	virtual	const char *	getSegmentNameByAddress(Address *Addr);		Symbol *	getSymbolByAddress(Address *Addr);		Symbol *	getSymbolByName(const char *label);		const char *	getSymbolNameByLocation(Location *loc);		int		getSymbolCount() const;		bool		gotoAddress(Address *Addr, Address *func);	virtual	void 		initCodeAnalyser();	virtual	void		initDataAnalyser();	virtual	void		initUnasm() = 0;	virtual	void		log(const char *s);                // stub	virtual	CPU_ADDR 	mapAddr(Address *Addr);      // stub		Location *	newLocation(Address *Addr);		Location *	newLocation(Location *&locs, Address *Addr);		Symbol *	newSymbol(const char *label, Location *loc, labeltype type, Location *infunc);		Symbol *	newSymbol(Symbol *&syms, const char *label, Location *loc, labeltype type);	virtual	Address *	nextValid(Address *Addr) = 0;		void		optimizeLocationTree();		void		optimizeSymbolTree();		bool		popAddress(Address **Addr, Address **func);		void		pushAddress(Address *Addr, Address *func);	virtual	int		queryConfig(int mode);				// stub		void		setActive(bool mode);		void		setLocationFunction(Location *a, Location *func);		void		setLocationTreeOptimizeThreshold(int threshold);		void		setDisasm(Disassembler *d);		void		setSymbolTreeOptimizeThreshold(int threshold);	virtual	void		store(ObjectStream &s) const;	virtual	bool		validAddress(Address *addr, tsectype action) = 0;		bool		validCodeAddress(Address *addr);		bool		validReadAddress(Address *addr);		bool		validWriteAddress(Address *addr);//  interface only (there's no internal use)		int	mode;	virtual	Assembler *	createAssembler();	virtual	Address *	fileofsToAddress(FileOfs fileofs);		CommentList *	getComments(Address *Addr);		const char *	getDisasmStr(Address *Addr, int &length);		const char *	getDisasmStrFormatted(Address *Addr);		int		getDisplayMode();	virtual	String &	getName(String &res);	virtual	const char *	getType();		Container *	getXRefs(Address *Addr);		bool		isDirty();		void		makeDirty();		void		setDisplayMode(int enable, int disable);		void		toggleDisplayMode(int toggle);};/* display modes */#define ANALY_SHOW_ADDRESS 1#define ANALY_SHOW_COMMENTS 2#define ANALY_SHOW_LABELS 4#define ANALY_SHOW_XREFS 8#define ANALY_SHOW_BYTES 16#define ANALY_EDIT_BYTES 32#define ANALY_TRANSLATE_SYMBOLS 64#define ANALY_COLLAPSE_XREFS 128/* queryConfig() constants */#define Q_DO_ANALYSIS 1#define Q_ENGAGE_CODE_ANALYSER 2#define Q_ENGAGE_DATA_ANALYSER 3/* interesting constants */#define INVALID_FILE_OFS ((FileOfs)-1)/* analyser system constants */#define MAX_OPS_PER_CONTINUE 10extern int global_analyser_address_string_format; #endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久久久久电影网 | 欧美a一区二区| 不卡一区在线观看| 精品1区2区在线观看| 偷拍亚洲欧洲综合| 欧美三级蜜桃2在线观看| 亚洲欧美日韩在线不卡| 97久久精品人人澡人人爽| 中文字幕一区二区三区四区不卡| 国产在线精品一区二区| 久久亚洲综合色一区二区三区| 青青草97国产精品免费观看| 555夜色666亚洲国产免| 欧美aa在线视频| 精品美女一区二区| 国产美女视频91| 亚洲欧洲美洲综合色网| 99精品热视频| 亚洲第一主播视频| 精品国精品国产| 成人av在线播放网站| 亚洲婷婷国产精品电影人久久| 91免费视频大全| 亚洲国产成人tv| 欧美一级午夜免费电影| 国产在线不卡视频| 亚洲欧美色一区| 日韩小视频在线观看专区| 国产一区不卡在线| 亚洲与欧洲av电影| 精品精品国产高清a毛片牛牛 | 一级做a爱片久久| 欧美高清在线一区| 色天使色偷偷av一区二区| 一区二区三区不卡在线观看 | 亚洲香肠在线观看| 欧美成人午夜电影| av亚洲精华国产精华| 亚州成人在线电影| 久久精品一区二区三区av| 欧美日韩一区三区| 久久er99精品| 亚洲免费伊人电影| 久久久国产一区二区三区四区小说 | 麻豆精品一区二区三区| 久久久久久**毛片大全| 欧美在线一区二区三区| 韩国v欧美v亚洲v日本v| 亚洲欧洲精品一区二区三区 | 日本二三区不卡| 韩国毛片一区二区三区| 依依成人综合视频| 亚洲欧洲精品成人久久奇米网| 欧美福利电影网| 成人avav影音| 国产精品99久久久久久久vr| 天堂一区二区在线免费观看| 中文字幕日韩一区二区| 久久久不卡网国产精品一区| 欧美一区二区在线免费观看| 在线观看亚洲精品视频| 99久久久无码国产精品| 国产麻豆一精品一av一免费| 蜜芽一区二区三区| 午夜久久电影网| 亚洲成人自拍偷拍| 亚洲欧美韩国综合色| 中文字幕五月欧美| 国产精品的网站| 亚洲欧美日韩国产一区二区三区 | 国模一区二区三区白浆| 国产98色在线|日韩| av中文字幕不卡| 欧美日韩免费在线视频| 欧美一区二区私人影院日本| 国产日韩精品一区二区三区在线| 国产精品久久久久久久久免费桃花 | 欧美在线观看视频一区二区三区| 欧美酷刑日本凌虐凌虐| 久久久久亚洲蜜桃| 国产人妖乱国产精品人妖| 久久久精品免费网站| 国产欧美一区二区精品性色 | 欧美a一区二区| 国产精品亚洲а∨天堂免在线| 国产黄人亚洲片| 色呦呦国产精品| 日韩一区二区三区视频| 久久久久久影视| 亚洲日本免费电影| 日本亚洲三级在线| 成人性生交大片免费看在线播放 | 国产精品一区一区| 欧美伊人久久大香线蕉综合69| 欧美日韩国产精选| 久久看人人爽人人| 亚洲一区二区在线视频| 久久精品国产一区二区三区免费看| 成人免费高清视频在线观看| 欧美日韩三级视频| 国产亚洲精久久久久久| 亚洲成av人**亚洲成av**| 懂色av一区二区三区免费观看| 欧美夫妻性生活| 亚洲二区在线观看| 成人丝袜18视频在线观看| 91精品国产色综合久久久蜜香臀| 亚洲欧美在线视频观看| 国内精品在线播放| 日韩欧美视频一区| 亚洲一区在线免费观看| 成人久久久精品乱码一区二区三区 | 首页欧美精品中文字幕| 91丨porny丨最新| 久久综合丝袜日本网| 日韩电影免费在线看| 欧美日韩亚洲综合在线| 亚洲少妇30p| 99r国产精品| 亚洲视频狠狠干| 91在线视频观看| 亚洲视频一区二区在线| 91首页免费视频| 一区二区三区在线免费播放| 91在线国内视频| 亚洲色图视频网| 一本一道久久a久久精品| 中文字幕一区二区三区视频| 丰满少妇久久久久久久| 国产女主播视频一区二区| 国产999精品久久久久久绿帽| 欧美国产日韩精品免费观看| 国产91精品一区二区麻豆网站| 精品少妇一区二区三区免费观看 | 在线国产亚洲欧美| 性做久久久久久| 日韩一区二区免费在线观看| 蜜臀国产一区二区三区在线播放 | 99精品欧美一区| 亚洲福利视频一区| 日韩精品一区国产麻豆| 日本网站在线观看一区二区三区 | 亚洲欧洲日韩综合一区二区| 91久久精品一区二区三区| 日韩电影免费在线看| 国产清纯白嫩初高生在线观看91| 99热99精品| 青青草伊人久久| 国产精品女人毛片| 欧美日韩国产综合一区二区三区| 精品亚洲aⅴ乱码一区二区三区| 国产视频亚洲色图| 欧美日韩成人高清| 成人黄色网址在线观看| 五月婷婷综合在线| 中文字幕第一页久久| 欧美日韩精品一区二区三区| 国产乱人伦偷精品视频免下载| 伊人性伊人情综合网| 精品不卡在线视频| 欧美亚洲综合在线| 成人伦理片在线| 韩国精品主播一区二区在线观看 | 久久夜色精品国产欧美乱极品| 99久久国产综合色|国产精品| 青青草91视频| 午夜精品久久久久久久| 国产精品久久久久久亚洲伦 | 日本乱人伦aⅴ精品| 成人做爰69片免费看网站| 久久99精品久久久久婷婷| 亚洲成人动漫精品| 亚洲大片免费看| 亚洲午夜激情网站| 亚洲另类中文字| 亚洲人吸女人奶水| 日韩毛片高清在线播放| 国产欧美一区二区三区沐欲| 欧美刺激脚交jootjob| 欧美zozozo| www久久精品| 精品久久久久香蕉网| 欧美一级二级三级蜜桃| 91精品国产福利| 欧美一区二区三区四区五区| 欧美精选一区二区| 91精品国产乱码| 欧美videofree性高清杂交| 日韩欧美你懂的| 精品少妇一区二区三区在线视频| 日韩午夜中文字幕| 亚洲精品在线三区| 中文久久乱码一区二区| 国产精品国产自产拍高清av王其| 精品视频一区 二区 三区| 在线成人免费视频| 欧美mv日韩mv| 欧美韩日一区二区三区| 中文天堂在线一区| 亚洲一区av在线|