00001 #ifndef STRUCTS_H
00002 #define STRUCTS_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00016
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
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
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
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
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;
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
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