⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cclassmanage.h

📁 将exe等可执行文件转化成c程序的反编译程序,先到汇编再到c
💻 H
字号:
// Copyright(C) 1999-2005 LiuTaoTao,bookaa@rorsoft.com


#ifndef CClassManage_H
#define CClassManage_H

typedef DWORD ea_t;

//#include "../CXmlPrt/CXmlPrt.h"
#include "CFuncType.h"

enum enumClassMemberAccess
{
	nm_unknown	=	0,
	nm_private,
	nm_protected,
	nm_public,
	
	nm_substruc,
	nm_subunion,
	nm_sub_end,
};

struct st_Var_Declare
{	//	是对一个量的定义,包括数据类型和变量名
	//	可用于struct_struct中的item定义,和functoin parameter的定义等等
	VarTypeID	m_vartypeid;
	SIZEOF		m_size;
	DWORD		m_offset_in_struc;
	char		m_name[80];
	enumClassMemberAccess	m_access;	//	为class预留
};

//	----------------------------------------------------
//	class

class Class_st
{
public:
	BOOL	m_TclassFstruc;	//	TRUE means class, FALSE means struct
	char	m_name[80];		//	class名
	SIZEOF	m_size;			//	class的size,数据部分
	int		m_nDataItem;	//	数据量的个数
	st_Var_Declare* m_DataItems;	//	sizeof = m_nDataItem 的一个buffer
	BOOL	m_Fstruc_Tunion;	//TRUE = union

	ea_t	m_Vftbl;		//	虚表的地址,如果有的话
	int		m_nSubFuncs;		//	子函数的个数
	CFuncType**		m_SubFuncs;	//	各个子函数

public:
	Class_st();
	~Class_st();

	CFuncType* LookUp_SubFunc(PCSTR name);
	BOOL	is_GouZ(CFuncType* pft);        //是构造
	BOOL	is_GouX(CFuncType* pft);        //是构析
	BOOL	is_GouZX(CFuncType* pft);       //是构造或构析
	PCSTR	getclassitemname(DWORD off);
	st_Var_Declare* GetClassItem(DWORD off);
//	void	prtout(CXmlPrt* prt);
	void	set_subfuncs();
	BOOL	IfThisName(PCSTR name);
	PCSTR	getname();
};

typedef	CList<Class_st *, Class_st *> CLASS_LIST;

class CClassManage
{
	CLASS_LIST*	m_classlist;
public:

	CClassManage();
	~CClassManage();

	CFuncType* Get_SubFuncDefine_from_name(PCSTR classname, PCSTR funcname);
	void add_class(Class_st* pnew);
	Class_st* LoopUp_class_by_name(PCSTR name);
	
	VarTypeID if_StrucName(PCSTR &p);
	void	new_struc(Class_st* pnew);
};


extern	CClassManage* g_ClassManage;

#endif	//	CClassManage_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -