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

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

?? exerep.h

?? win32 exe程序反匯編
?? H
字號:
/*		fichier exeRep.h : fichier header
 *
 *	descr : classe qui represente un executable binaire et gere la memoire associee
 *
 *	projet : PEDasm
 *	
 *	rq:
 *	Ce programme est libre de droits. Il peut etre distribue et/ou modifie
 *  selon les termes de la licence 'GNU General Public License version 2'.
 *	
 *	Ce programme est distribue sans aucunes garanties, y compris d'utilite 
 *	ni de risques encouru, quelle que soit son utilisation.
 *
 *	lire le fichier licence.txt fourni ou bien ecrire a :
 *	the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *	pour recevoir une copie de la licence.
 *
 *	Copyright (C) 1997 - 1998 Nicolas Witczak <witczak@geocities.com>
 */

#ifndef EXE_REP_H
	#define EXE_REP_H

#include <cstdlib>
#include <cstdio>
#include <vector>
#include <set>
#include <map>
#include <string>
#undef va_end
#include "Symbol.h"



class CExeRep ;


///////////////////////////////////////////////////////////////
// struct dll_fun represente 1 fct d'une dll 
//: assocition nom , ordinal , existence du nom
struct dll_fun 
{
	const char*	m_pszName ;
	const char*	m_pszDllName ;
	int 	m_iOrdinal ;
	bool	m_bHasName ;

// fct GetName :retourne le vrai nom ou un nom decore
	const char* GetName()
	{
		static char_buff	m_psztmp ;
		if( m_bHasName )
			return m_pszName ;
		else
			sprintf( m_psztmp , "%s_ord%i"
				, GetBaseName(m_pszDllName) , m_iOrdinal ); 
		return m_psztmp ;
	};
};


///////////////////////////////////////////////////////////////
/** class CSection : represente une section
 */
class CSection
{
public:
// init
	/** ctor : attache une section a sa zone memoire
	 * param : idSection : index de section 
	 */
	CSection( int idSection ) ;

// attributs
	/** index de la section */
	int						m_idSection ;

	/** ptr sur notre header , appartient a la classe CExeRep */
	IMAGE_SECTION_HEADER*	m_pHeader ;

	/** donnes de la partie initialisee de cette section , appartient a la classe CExeRep */
	BYTE*					m_pRawData ;

	/** image directory si il y a lieu */
	IMAGE_DATA_DIRECTORY*	m_pImageDir ;

// information
	/** size , init_size : retourne taille  */
	unsigned int size()	;	
	unsigned int init_size();
	
	/** begin end : retourne ptr memoire relle de la section ,fin ,fin initialisee */
	BYTE* begin()	;	
	BYTE* end();		
	BYTE* init_end();	

	/** va_begin va_end va_initend : retourne debut fin, fin initialisee en adr virt de la section */
	unsigned int va_begin()	;
	unsigned int va_end();	
	unsigned int va_init_end();

	/** retourne les flags de section*/
	DWORD GetFlags();

	/** IsCode : indique si c'est une section code */
	bool IsCode(); 
	
	/** IsCode : indique si c'est une section de donnee ordinaire */	
	bool IsData();
};

//////////////////////////////////////////////////////////////////
/** class CExeRep
 *	descr : representation d'un fichier binaire 
 *	en cours de desassemblage : classe singleton
 */
class CExeRep
{
public:
// donnees fichiers
	/** path de l'exe */
	string							m_strPath ;

	/** nom sans extension */
	string							m_strBaseName ;

	/** fichier de sortie du .asm */
	string							m_strOutput ;

	/** header dos*/
	_IMAGE_DOS_HEADER*				m_pDosHeader ;

// gestion du bloc de memoire brut
	/** bloc de memoire contenant tt les sections du prg */
	BYTE*							m_pRawData ;

	/** offset V.A -> ptr memoire */
	unsigned int					m_vaOffset ;

// donnees image PE	decortiquees
	/** signature */
	DWORD							m_dwNTSign ;
	
	/** header NT */
	_IMAGE_FILE_HEADER*				m_pNTHeader ;
	IMAGE_OPTIONAL_HEADER*			m_pNTOptHeader ;
	
	/** headers des sections */
	vector< IMAGE_SECTION_HEADER* >	m_arSectHeader ;
	
	/** liste des sections  */
	vector< CSection* >				m_arRawSections ;
	
	/** type liste de symbols */
	typedef	set< CSymbol* , symb_less >	CSymbolColl ;
	typedef CSymbolColl::iterator		symb_iterator ;

	/**liste des symbols  */
	CSymbolColl						m_arSymbols ;

	/**liste des symbols inutilises */
	CSymbolColl						m_arUnusedSymbols ;

	/** table de relocation 
	 *	si l'adresse est ds du code -> rep symbol donnee
	 *	si l'adresse est ds des donnees -> rep symbol type pointeur
	 */
	CSymbolColl						 m_arRelocSymbols;

	/** liste des dll importees
	 *	nom dll -> ( ordinal -> nom fonction )
	 */
	typedef vector< dll_fun >									dllname_coll ;
	typedef dllname_coll::iterator								dllfun_iterator ;
	typedef map< const char* , dllname_coll , psz_less_nocase >	dll_coll ;
	typedef dll_coll::iterator									dll_iterator ;

	dll_coll		m_arDll ;

public:
// parametrage
	/** m_bRawData : var de config : rajoute les donnees dans le source desassemble */
	bool			m_bRawData;

	/** m_bLineNum : ajoute les numero de ligne dans le source desassemble */
	bool			m_bLineNum  ;

	/** m_iPassNum : specifie le nombre de passes a effectuer sur le binaire */
	int				m_iPassNum ;

// fonctions d'aide

// initialisation , destruction
	CExeRep();	
	~CExeRep();
	
	/** genere les noms de fichiers */
	void SetFileName( const char* pszFileIn , const char* pszFileOut );

// etapes de traitement
	/** fct ProcessExe : point d'entree: traite l'executable et produit les sources 
	 *		si pszFileOut : nom de sortie par defaut
	 */
	void ProcessExe( const char* pszFileIn , const char* pszFileOut = 0 ) ;

	/**fct LoadBin : charge un binaire et remplit les donnees brutes 
	 *	retourne : etat de success
	 */
	bool LoadBin( const char* pszName ) ;
	
	/** fct ScanConfFile : analyse le fichier passe en entree et rajoute les
	 *	symbols correspondants dans la table des symbols
	 *	format du fichier de config
	 *		0xadresse  [ data | funct | ptr ] opt nom
	 */
	bool ScanConfFile( FILE* pFile ) ;

	/** fct AddDirEntrySymb :marque comme symbols non utiles les zones 
	 *		de directory entry inclu dans les differentes sections
	 */
	void AddDirEntrySymb() ;

	/** AddDllSymb : importe les symboles fct dll d'import
	 */
	void AddDllSymb();

	/** AddExportSymb : ajoute les symboles exportes ds le binaire 
	 *	sert principalement pour les dll
	 */
	void AddExportSymb();

	/** AddRelocSymb : importe les symboles trouves dans la table de relocation
	 *		genere un fichier include des references externes
	 */
	void AddRelocSymb();


	/** AddEntryPoint : ajoute le point d'entree du binaire	
	 */
	void AddEntryPoint();

// fonctions d'aides
	
	/** fct IsExeBin : retourne true si c'est un exe 0 si c'est une dll */
	bool IsExeBin();

	/** fct HasReloc : retourne true si le binaire a une table de relocation */
	bool HasReloc();

	/** GetSectFromVA : retourne la section qui contient l'adresse abs 
	 *		passee en parametre ou 0 si non trouve
	 */
	CSection* GetSectFromVA( unsigned int uAdresse );
	
	/** fct de conversion ptr <-> va <-> rva
	 */
	BYTE* CExeRep::rva2ptr( unsigned int uRVA )	
	{	return  m_pRawData + uRVA ; }

	BYTE* CExeRep::va2ptr( unsigned int uVA )
	{	return reinterpret_cast< BYTE* >( uVA + m_vaOffset ) ; }

	unsigned int CExeRep::ptr2va( BYTE* p ) 
	{	return reinterpret_cast< unsigned int >(p - m_vaOffset); }

	unsigned int CExeRep::ptr2rva( BYTE* p ) 
	{	return ( unsigned int )(p - m_pRawData ) ; }

	unsigned int CExeRep::rva2va( unsigned int uRVA ) 
	{	return uRVA + m_pNTOptHeader->ImageBase ; }

// gestion des dll d'import

	/** fct LoadimpDll : charge les symbol (nom ordinal) d'une dll
	 */
	bool LoadImpDll(const char* pszName );

	/** fct GetNameFromOrd : retourne le nom d'une dll a partir d'un ordinal 
	 *	PARAM : pszDllName : nom de la dll
	 *			int		   : ordinal  
	 *			sortie pbNoName : false -> indique qu'un nom n'a pas ete trouve
	 *	RETOUR : une chaine temporaire sur le nom de dll ou un nom genere si le nom
	 *	n'est pas exporte , retourne 0 en cas d'echec
	 */
	const char* GetNameFromOrd( const char* pszDllName ,int iOrdinal,bool* pbHasName );
	
	/**	fct GetOrdFromName : retourne l'ordinal a partir du nom de fct ds une dll
	 *	ou -1 en cas d'echec
	 */
	int GetOrdFromName( const char* pszDllName , const char* pszFunName );

// interface
	/** GetSymbol : retourn un pointeur sur 1 symbol ou 0 si aucuns symbols 
	 *	param uVA : adresse absolue 
	 */
	CSymbol* GetSymbol( unsigned int uVA );

	/** FindSymbol : cherche le prochain symbol satisfaisant au mask
	 *		donne par ordre d'adresse croissant a partir de l'adresse uVA incluse
	 * retourne 0 si non trouve
	 *	rq : DEPRECIE
	 */
	CSymbol* FindSymbol( unsigned int uVA , unsigned int uMask );

	/** FindSymbol : cherche le 1er symbol disponible
	 *		donne par ordre d'adresse croissant a partir de l'adresse uVA incluse
	 * retourne 0 si non trouve
	 */
	CSymbol* FindSymbol( unsigned int uVA );

	/** AddSymbol : appele par le desassembleur pour rajouter ou preciser 
	 *	un symbol 
	 *	param uVA : adresse de location du symbol
	 *		pRefPoint : adresse mem ou a ete reference le symbol	 
	 *		bTrust : niveau de confiance (ne requiert pas la table de reloc )
	 *		SymbolCat : type reconnu
	 */
	void AddSymbol( unsigned int uVA,unsigned int uRefVA, bool bTrust , unsigned int SymbolCat   );

	/** GetSymbName : retourne le nom d'un symbol a partir de 
	 * l'adresse virtuelle uVA ou la valeur si non trouve
	 *	PARAM : uVA	  : valeur a traduire
	 *			refVA : adresse ou a ete trouve ce symbol
	 *			bTrust : niveau de confiance (ne requiert pas la table de reloc )
	 *			uflags   : format d'affichage
	 */
	const char* GetSymbName( unsigned int uVA , unsigned int refVA , bool bTrust , unsigned int uflags ) ;

	/** GetValue : retourne la valeur chaine d'une cte
	 *		param uVal : valeur a traiter 		
	 *		iflags : spec de formatage
	 */
	const char* GetValue( unsigned int uVal , int uflags ) ;	

//	fonction de sorties fichier
	/** genere le commentaire header du fichier asm principale */
	void OutputMainHeader( FILE* pFile );

	/** genere le commentaire du header de section pSection
	 *	sortie sur le stream pFile
	 */
	void OutputSectionHeader( CSection* pSection , FILE* pFile );

};

/** format d'affichage de valeurs */
const unsigned int cteFmtInteger	= 1 ; // format decimal, hexa sinon
const unsigned int cteFmtSign		= 2 ; // format nbr signe avec sign
const unsigned int cteDecorate		= 4 ; // decore avec ( [] ou offset si besoin ) , pas de decoration sinon
const unsigned int cteDecOffset		= 8 ; // decore avec offset si ==1 , [] sinon

/** format de sortie de desassemblage */
const int cteMASM		= 0 ;
const int cteListing	= 1 ;
const int cteInlineC	= 2 ;

//////////////////////////////////////////////////////////////////
// fonctions globales

/** acces au singleton exe */
extern CExeRep	m_theExe ;
inline CExeRep* GetExe()
{	return &m_theExe ;	}

/** GetImageSize : retourne la taille d'un binaire en mem vive */
unsigned int GetImageSize( const char* pszStr );

/** indique si un ensemble d'instructions est disponible*/
bool IsBank( const char* pszBankName ) ;
	
/** si bLoad == true : marque comme candidat le groupe de modele d'instructions , 
 * l'enleve sinon 
 */
void LoadBank( const char* pszBankName , bool bLoad ) ;

/** Genere la liste des modeles d'instruction utilisees durant la decompilation */
void InitBanks() ;


#endif //EXE_REP_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级免费观看| 在线观看日韩国产| 久久久久久久久久久久久久久99 | 欧美视频精品在线| 一区二区三区色| 欧美日韩国产经典色站一区二区三区 | 国产精品18久久久久| 欧美激情综合网| 99久精品国产| 偷拍自拍另类欧美| 日韩免费高清视频| 成人黄色av电影| 亚洲一级二级三级| 日韩欧美一级特黄在线播放| 国产精品一区三区| 一区二区三区在线不卡| 欧美一级午夜免费电影| 盗摄精品av一区二区三区| 91网页版在线| 91超碰这里只有精品国产| 麻豆精品在线播放| 日韩精品电影一区亚洲| 亚洲一二三四久久| 日韩精品最新网址| 亚洲国产精品ⅴa在线观看| 亚洲国产精品久久久久秋霞影院 | 日韩一区二区三区视频在线观看| 一区二区三区在线观看国产| 91精品国产综合久久久久 | 一本到三区不卡视频| 国产福利91精品一区| 亚洲乱码中文字幕| 在线一区二区三区四区五区| 99精品热视频| 亚洲美女精品一区| 成人精品免费看| 国产成人午夜精品影院观看视频 | 日本欧美一区二区三区乱码| 婷婷开心激情综合| 91亚洲午夜精品久久久久久| 9人人澡人人爽人人精品| 九九在线精品视频| 狠狠色综合播放一区二区| 国产一区福利在线| 在线综合视频播放| 日韩中文字幕一区二区三区| 日韩欧美国产1| 日本一区二区久久| 高清成人在线观看| 成熟亚洲日本毛茸茸凸凹| 国产欧美日韩视频一区二区| 亚洲精品国产视频| 欧美人伦禁忌dvd放荡欲情| 亚洲在线观看免费视频| 欧美性大战xxxxx久久久| 黄网站免费久久| 国产欧美日韩精品一区| 欧美私人免费视频| 色天天综合色天天久久| 蜜臀久久99精品久久久画质超高清| 麻豆精品一区二区综合av| 在线综合+亚洲+欧美中文字幕| 老司机精品视频在线| 综合av第一页| 精品日韩99亚洲| 亚洲国产电影在线观看| 88在线观看91蜜桃国自产| 国产精品一二三四区| 欧美日韩国产电影| 日韩欧美三级在线| 91影院在线免费观看| 久久国产麻豆精品| 精品欧美一区二区在线观看| 成人91在线观看| 欧美日韩国产一区二区三区地区| 国产成人综合亚洲91猫咪| 美女视频黄免费的久久| √…a在线天堂一区| 亚洲一区在线观看免费观看电影高清| 欧美亚洲一区三区| 26uuu久久天堂性欧美| 粉嫩av一区二区三区粉嫩| 99riav一区二区三区| 91成人国产精品| 风间由美性色一区二区三区| 欧美亚洲图片小说| 国内精品国产三级国产a久久| 一区二区三国产精华液| 91精品国产91久久久久久最新毛片 | 久久久久久久综合| 欧美三级午夜理伦三级中视频| 欧洲av一区二区嗯嗯嗯啊| 国产精品自拍一区| 色爱区综合激月婷婷| 国产91丝袜在线播放0| 久久久久国产精品麻豆ai换脸| 精品国产91乱码一区二区三区| 一本到不卡免费一区二区| 国产精品对白交换视频| 日韩欧美电影在线| 国产精品久久综合| 日本久久一区二区三区| 色中色一区二区| 亚洲精品欧美专区| 欧美肥妇bbw| 国产高清成人在线| 亚洲夂夂婷婷色拍ww47| 韩国视频一区二区| 欧美猛男超大videosgay| 91传媒视频在线播放| 国产一区二区视频在线播放| 亚洲国产精品自拍| 五月婷婷综合激情| 91精品久久久久久蜜臀| 风间由美一区二区三区在线观看| 中文字幕乱码久久午夜不卡| 色偷偷久久一区二区三区| 91麻豆国产在线观看| 免费三级欧美电影| 亚洲欧洲成人精品av97| 美日韩一区二区| 成人h版在线观看| 男男成人高潮片免费网站| 中文字幕一区日韩精品欧美| 精品一区二区三区av| 国产精品1区2区| 成人国产一区二区三区精品| 欧美草草影院在线视频| 欧美日韩一区三区| 在线观看亚洲成人| 丁香啪啪综合成人亚洲小说 | 99久久99精品久久久久久| 欧美精品一区二区在线观看| 成人一区二区三区| 日韩有码一区二区三区| 欧美四级电影在线观看| 26uuu国产电影一区二区| 91久久一区二区| 国产乱妇无码大片在线观看| 欧美日韩国产综合久久 | 成人免费视频视频在线观看免费| 91黄色免费看| 99免费精品在线观看| 欧美高清视频在线高清观看mv色露露十八| 一区二区三区在线影院| 欧美日韩一区精品| 91啪九色porn原创视频在线观看| 欧美另类z0zxhd电影| 波多野结衣欧美| av一区二区三区黑人| 日韩一区二区电影在线| 综合久久久久久| www.欧美亚洲| 亚洲电影一区二区| 亚洲综合色网站| 9色porny自拍视频一区二区| 成人精品国产一区二区4080| 免费看欧美女人艹b| 亚洲欧美另类综合偷拍| 91福利视频网站| 91黄色免费观看| 亚洲午夜电影在线| 日韩经典一区二区| 欧美日韩一区高清| 亚洲va国产va欧美va观看| 最新成人av在线| 成人av综合在线| 欧美激情综合五月色丁香| 精品国产一区二区三区久久久蜜月| 亚洲一区中文在线| 亚洲欧洲日韩综合一区二区| 欧美精品丝袜中出| 99麻豆久久久国产精品免费| 亚洲午夜电影在线| 日韩理论在线观看| 日韩理论片一区二区| 91免费版在线| 蜜桃传媒麻豆第一区在线观看| 中文字幕一区二区不卡| 中文字幕在线不卡| 国产一区二区三区日韩| 亚洲精品美腿丝袜| 9人人澡人人爽人人精品| |精品福利一区二区三区| 国产精品一区专区| 国产精品久久久久影院| 成人做爰69片免费看网站| 久久av资源站| 免费高清视频精品| 国产精品卡一卡二| 欧美精品一区二区三区在线播放| 欧美日韩亚洲综合| 欧美日韩国产三级| 美女在线视频一区| 国产91丝袜在线观看| 亚洲三级在线观看| 欧美精品一区二| 国产天堂亚洲国产碰碰| 国产亚洲综合在线| 性做久久久久久免费观看|