mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-10 19:41:37 -07:00
export virtual ranges for data directories
This commit is contained in:
committed by
Ryan Fleury
parent
f37f94a2b9
commit
c55c60549e
+18
@@ -495,6 +495,7 @@ pe_bin_info_from_data(Arena *arena, String8 data)
|
||||
U64 file_section_align = 0;
|
||||
Rng1U64 data_dir_range = {0};
|
||||
Rng1U64 *data_dir_franges = 0;
|
||||
Rng1U64 *data_dir_vranges = 0;
|
||||
if(valid && optional_size > 0)
|
||||
{
|
||||
// rjf: read magic number
|
||||
@@ -566,6 +567,22 @@ pe_bin_info_from_data(Arena *arena, String8 data)
|
||||
}
|
||||
}
|
||||
|
||||
// export virtual directory ranges
|
||||
data_dir_vranges = push_array(arena, Rng1U64, data_dir_count);
|
||||
for(U32 dir_idx = 0; dir_idx < data_dir_count; dir_idx += 1)
|
||||
{
|
||||
U64 dir_offset = optional_range.min + reported_data_dir_offset + sizeof(PE_DataDirectory)*dir_idx;
|
||||
PE_DataDirectory dir = {0};
|
||||
if(str8_deserial_read_struct(data, dir_offset, &dir) == sizeof(dir))
|
||||
{
|
||||
data_dir_vranges[dir_idx] = r1u64(dir.virt_off, dir.virt_off+dir.virt_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert(!"unable to read data directory");
|
||||
}
|
||||
}
|
||||
|
||||
// export directory range
|
||||
data_dir_range = rng_1u64(optional_range.min + reported_data_dir_offset, optional_range.min + reported_data_dir_offset + data_dir_count * sizeof(PE_DataDirectory));
|
||||
}
|
||||
@@ -625,6 +642,7 @@ pe_bin_info_from_data(Arena *arena, String8 data)
|
||||
info.string_table_range = rng_1u64(string_table_off, data.size);
|
||||
info.data_dir_range = data_dir_range;
|
||||
info.data_dir_franges = data_dir_franges;
|
||||
info.data_dir_vranges = data_dir_vranges;
|
||||
info.data_dir_count = data_dir_count;
|
||||
info.tls_header = tls_header;
|
||||
}
|
||||
|
||||
@@ -1008,6 +1008,7 @@ struct PE_BinInfo
|
||||
Rng1U64 string_table_range;
|
||||
Rng1U64 data_dir_range;
|
||||
Rng1U64 *data_dir_franges;
|
||||
Rng1U64 *data_dir_vranges;
|
||||
U32 data_dir_count;
|
||||
PE_TLSHeader64 tls_header;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user