29 #ifndef __UPX_LEFILE_H 30 #define __UPX_LEFILE_H 1 46 virtual bool readFileHeader();
50 enum { FIXUP_EXTRA = 3 };
52 __packed_struct(le_header_t)
57 LE32 exe_format_level;
69 LE32 memory_page_size;
70 LE32 bytes_on_last_page;
77 LE32 object_table_offset;
78 LE32 object_table_entries;
79 LE32 object_pagemap_offset;
80 LE32 object_iterate_data_map_offset;
83 LE32 resource_entries;
84 LE32 resident_names_offset;
85 LE32 entry_table_offset;
88 LE32 module_directives_entries;
89 LE32 fixup_page_table_offset;
90 LE32 fixup_record_table_offset;
92 LE32 imported_modules_name_table_offset;
93 LE32 imported_modules_count;
94 LE32 imported_procedures_name_table_offset;
97 LE32 data_pages_offset;
99 LE32 non_resident_name_table_offset;
100 LE32 non_resident_name_table_length;
103 LE32 automatic_data_object;
107 LE32 debug_info_offset;
108 LE32 debug_info_length;
110 LE32 preload_instance_pages;
111 LE32 demand_instance_pages;
112 LE32 extra_heap_alloc;
120 __packed_struct_end()
122 __packed_struct(le_object_table_entry_t)
129 __packed_struct_end()
131 __packed_struct(le_pagemap_entry_t)
136 __packed_struct_end()
138 virtual void readObjectTable();
139 virtual void writeObjectTable();
143 virtual void readFixupPageTable();
144 virtual void writeFixupPageTable();
148 virtual void readPageMap();
149 virtual void writePageMap();
150 virtual void encodePageMap(){opm_entries = ipm_entries; ipm_entries = NULL;}
151 virtual void decodePageMap(){encodePageMap();}
153 virtual void readResidentNames();
154 virtual void writeResidentNames();
155 virtual void encodeResidentNames(){ores_names = ires_names; ires_names = NULL;}
156 virtual void decodeResidentNames(){encodeResidentNames();}
158 virtual void readNonResidentNames();
159 virtual void writeNonResidentNames();
160 virtual void encodeNonResidentNames(){ononres_names = inonres_names; inonres_names = NULL;}
161 virtual void decodeNonResidentNames(){encodeNonResidentNames();}
163 virtual void readEntryTable();
164 virtual void writeEntryTable();
168 virtual void readFixups();
169 virtual void writeFixups();
173 virtual void readImage();
174 virtual void writeImage();
178 void countFixups(
unsigned *)
const;
179 unsigned getImageSize()
const;
189 le_object_table_entry_t *iobject_table;
190 le_object_table_entry_t *oobject_table;
191 unsigned *ifpage_table;
192 unsigned *ofpage_table;
193 le_pagemap_entry_t *ipm_entries;
194 le_pagemap_entry_t *opm_entries;
195 upx_byte *ires_names;
196 upx_byte *ores_names;
199 upx_byte *inonres_names;
200 upx_byte *ononres_names;
206 unsigned soobject_table;
207 unsigned sofpage_table;
208 unsigned sopm_entries;
209 unsigned sores_names;
211 unsigned sononres_names;