Main Page   File List   Globals  

structs.h

Go to the documentation of this file.
00001 #ifndef STRUCTS_H
00002 #define STRUCTS_H
00003 
00004 /**********************************************
00005  *          the Beos Reversing Engine         * 
00006  *                  by Zadig                  *
00007  *                                            *
00008  * This file contains all Structures used     *
00009  * in the project.                            *
00010  **********************************************/
00011 
00016 /*enums*/
00017 typedef enum
00018 {
00019   OBJ_TYPE_UNKNOWN,        
00020   OBJ_TYPE_STRING,         
00021   OBJ_TYPE_OBJECT,         
00022   OBJ_TYPE_MESSAGE,        
00023   OBJ_TYPE_PARAM,          
00024   OBJ_TYPE_CLASS,          
00025   OBJ_TYPE_FUNCTION,       
00026   OBJ_TYPE_INSTRUCTION,    
00027   OBJ_TYPE_REFERENCE,      
00028   OBJ_TYPE_VAR_REFERENCE,  
00029   OBJ_TYPE_MAX
00030 } RE_ObjectType;
00031 
00032 /* possible result types for an asm instruction */
00033 typedef enum
00034 {
00035   RESULT_TYPE_INVALID,        
00036   RESULT_TYPE_DIRECT_VALUE,   
00037   RESULT_TYPE_INDIRECT_VALUE, 
00038   RESULT_TYPE_LOCAL,          
00039   RESULT_TYPE_GLOBAL,         
00040   RESULT_TYPE_PARAM,          
00041   RESULT_TYPE_MESSAGE,        
00042   RESULT_TYPE_JUMP,           
00043   RESULT_TYPE_MAX
00044 } RE_ResultType;
00045 
00046 typedef enum
00047 {
00048   REG_EAX,   
00049   REG_EBX,   
00050   REG_ECX,   
00051   REG_EDX,   
00052   REG_EBP,   
00053   REG_ESP,   
00054   REG_EDI,   
00055   REG_ESI,   
00056   REG_MAX   
00057 } RE_Registers;
00058 
00059 typedef enum
00060 {
00061   DIRECT_REF,  
00062   INDIRECT_REF 
00063 } RE_RefType;
00064 
00065 typedef enum
00066 {
00067   MAP_STRINGS, 
00068   MAP_SYMBOLS, 
00069   MAP_DYNSYM,  
00070   MAP_REFS,    
00071   MAP_JUMPS,   
00072   MAP_MESSAGES,
00073   MAP_PARAMS,  
00074   MAP_MAX 
00075 } RE_mappings;
00076 /*end defines for structs*/
00077 
00078 typedef struct _Reference Reference;   
00079 struct _Reference
00080 {
00081   uint32       addr; 
00082   RE_RefType   type; 
00083   Reference* next;
00084 } ;
00085 
00086 typedef struct
00087 {
00088   Reference *list_Ref;  
00089 } LIST_Reference;
00090 
00091 /* chainlist struct used for all symbols */
00092 typedef struct _Mapping Mapping; 
00093 struct _Mapping
00094 {
00095   uint32          addr;                   
00096   uint8           label[STRING_MAX_SIZE]; 
00097   RE_ObjectType   type;                   
00098   LIST_Reference  references;             
00099   uint8           isPrinted;              
00100   Mapping         *next;                  
00101   Mapping         *prev;                  
00102 } ;
00103 
00104 typedef struct
00105 {
00106   Mapping *list_Map;    
00107   Mapping *tail;        
00108 } LIST_Mapping;
00109 
00110 typedef struct
00111 {
00112   uint8  name[STRING_MAX_SIZE];
00113   uint32 addr;
00114   uint32 size;
00115 } Section;
00116 
00117 typedef struct
00118 { 
00119   uint8         name[REG_MAX_SIZE];
00120   uint32        value;
00121   RE_ResultType type;
00122   uint8         isValid;
00123 } Register;
00124 
00125 typedef struct
00126 {
00127   Register registers[REG_MAX];
00128   uint32   addr;
00129   uint8    free;
00130 } RegisterContextBase;
00131 
00132 typedef struct
00133 {
00134   RegisterContextBase context[MAX_REG_CNTX];
00135   uint32              nextCntx;
00136 } RegisterContext;
00137 
00138 typedef struct
00139 {
00140   uint32 addr;
00141   uint32 value;
00142 } PLT_Jump;
00143 
00144 /* parameters structs */
00145 typedef struct
00146 {
00147   uint8 name[STRING_MAX_SIZE];
00148   uint8 offset;
00149 } Parameter;
00150 
00151 typedef struct
00152 {
00153   uint8     isValid;
00154   uint8     functionIsC;   /* function is C or C++ */
00155   uint8     functionHasMessage;  
00156   uint8     nbParams;
00157   Parameter param[MAX_PARAMS];
00158 } Function_Params;
00159 
00160 typedef struct
00161 {
00162    uint8    name[STRING_MAX_SIZE];
00163    uint32   size;
00164 } Parameter_Size;
00165 
00166 /* global struct */
00167 typedef struct
00168 {
00169   uint32  cep;
00170   uint8   exe_FileName[STRING_MAX_SIZE];
00171   uint8   dest_FileName[STRING_MAX_SIZE];
00172   uint8   asm_SrcFileName[STRING_MAX_SIZE];
00173   uint8   objdump_FileName[STRING_MAX_SIZE];
00174   Section sections[MAX_SECTIONS];
00175   uint8   splitOutput;
00176   uint8   printPlt;
00177 } Settings ;
00178 
00179 
00180 #endif

Generated at Thu Oct 4 21:55:48 2001 for RevEng, The Reversing Engine by doxygen1.2.10 written by Dimitri van Heesch, © 1997-2001