winedump: Changed PE, NE, LE dumping so that they are consistent in terms of dump function signatures.
Avoid passing around the base of the module, but use instead the PRD function.
This commit is contained in:
parent
024237efaa
commit
afe309b7d9
|
@ -144,21 +144,21 @@ unsigned long Offset(const void* ptr)
|
||||||
return (const char *)ptr - (const char *)dump_base;
|
return (const char *)ptr - (const char *)dump_base;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_dump( enum FileSig sig, const void* pmt )
|
static void do_dump( enum FileSig sig )
|
||||||
{
|
{
|
||||||
if (sig == SIG_NE)
|
if (sig == SIG_NE)
|
||||||
{
|
{
|
||||||
ne_dump( dump_base, dump_total_len );
|
ne_dump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sig == SIG_LE)
|
if (sig == SIG_LE)
|
||||||
{
|
{
|
||||||
le_dump( dump_base, dump_total_len );
|
le_dump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pe_dump(pmt);
|
pe_dump();
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum FileSig check_headers(void)
|
static enum FileSig check_headers(void)
|
||||||
|
@ -264,10 +264,10 @@ int dump_analysis(const char *name, file_dumper fn, enum FileSig wanted_sig)
|
||||||
case SIG_NE:
|
case SIG_NE:
|
||||||
case SIG_LE:
|
case SIG_LE:
|
||||||
printf("Contents of \"%s\": %ld bytes\n\n", name, dump_total_len);
|
printf("Contents of \"%s\": %ld bytes\n\n", name, dump_total_len);
|
||||||
(*fn)(effective_sig, dump_base);
|
(*fn)(effective_sig);
|
||||||
break;
|
break;
|
||||||
case SIG_DBG:
|
case SIG_DBG:
|
||||||
dump_separate_dbg();
|
dbg_dump();
|
||||||
break;
|
break;
|
||||||
case SIG_DOS:
|
case SIG_DOS:
|
||||||
ret = 0; break;
|
ret = 0; break;
|
||||||
|
|
|
@ -225,7 +225,7 @@ static void dump_le_header( const IMAGE_VXD_HEADER *le )
|
||||||
le->e32_ddkver);
|
le->e32_ddkver);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_le_objects( const void *base, const IMAGE_VXD_HEADER *le )
|
static void dump_le_objects( const IMAGE_VXD_HEADER *le )
|
||||||
{
|
{
|
||||||
const struct o32_obj *pobj;
|
const struct o32_obj *pobj;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
@ -285,7 +285,7 @@ static void dump_le_objects( const void *base, const IMAGE_VXD_HEADER *le )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_le_names( const void *base, const IMAGE_VXD_HEADER *le )
|
static void dump_le_names( const IMAGE_VXD_HEADER *le )
|
||||||
{
|
{
|
||||||
const unsigned char *pstr = (const unsigned char *)le + le->e32_restab;
|
const unsigned char *pstr = (const unsigned char *)le + le->e32_restab;
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ static void dump_le_names( const void *base, const IMAGE_VXD_HEADER *le )
|
||||||
if (le->e32_cbnrestab)
|
if (le->e32_cbnrestab)
|
||||||
{
|
{
|
||||||
printf( "\nNon-resident name table:\n" );
|
printf( "\nNon-resident name table:\n" );
|
||||||
pstr = (const unsigned char *)base + le->e32_nrestab;
|
pstr = PRD(le->e32_nrestab, 0);
|
||||||
while (*pstr)
|
while (*pstr)
|
||||||
{
|
{
|
||||||
printf( " %4d: %*.*s\n", get_word(pstr + *pstr + 1), *pstr, *pstr,
|
printf( " %4d: %*.*s\n", get_word(pstr + *pstr + 1), *pstr, *pstr,
|
||||||
|
@ -309,49 +309,51 @@ static void dump_le_names( const void *base, const IMAGE_VXD_HEADER *le )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_le_resources( const void *base, const IMAGE_VXD_HEADER *le )
|
static void dump_le_resources( const IMAGE_VXD_HEADER *le )
|
||||||
{
|
{
|
||||||
printf( "\nResources:\n" );
|
printf( "\nResources:\n" );
|
||||||
printf( " Not Implemented\n" );
|
printf( " Not Implemented\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_le_modules( const void *base, const IMAGE_VXD_HEADER *le )
|
static void dump_le_modules( const IMAGE_VXD_HEADER *le )
|
||||||
{
|
{
|
||||||
printf( "\nImported modulename table:\n" );
|
printf( "\nImported modulename table:\n" );
|
||||||
printf( " Not Implemented\n" );
|
printf( " Not Implemented\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_le_entries( const void *base, const IMAGE_VXD_HEADER *le )
|
static void dump_le_entries( const IMAGE_VXD_HEADER *le )
|
||||||
{
|
{
|
||||||
printf( "\nEntry table:\n" );
|
printf( "\nEntry table:\n" );
|
||||||
printf( " Not Implemented\n" );
|
printf( " Not Implemented\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_le_fixups( const void *base, const IMAGE_VXD_HEADER *le )
|
static void dump_le_fixups( const IMAGE_VXD_HEADER *le )
|
||||||
{
|
{
|
||||||
printf( "\nFixup table:\n" );
|
printf( "\nFixup table:\n" );
|
||||||
printf( " Not Implemented\n" );
|
printf( " Not Implemented\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_le_VxD( const void *base, const IMAGE_VXD_HEADER *le )
|
static void dump_le_VxD( const IMAGE_VXD_HEADER *le )
|
||||||
{
|
{
|
||||||
printf( "\nVxD descriptor:\n" );
|
printf( "\nVxD descriptor:\n" );
|
||||||
printf( " Not Implemented\n" );
|
printf( " Not Implemented\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void le_dump( const void *exe, size_t exe_size )
|
void le_dump( void )
|
||||||
{
|
{
|
||||||
const IMAGE_DOS_HEADER *dos = exe;
|
const IMAGE_DOS_HEADER *dos;
|
||||||
const IMAGE_VXD_HEADER *le;
|
const IMAGE_VXD_HEADER *le;
|
||||||
|
|
||||||
le = (const IMAGE_VXD_HEADER*)((const char *)dos + dos->e_lfanew);
|
dos = PRD(0, sizeof(*dos));
|
||||||
|
if (!dos) return;
|
||||||
|
le = PRD(dos->e_lfanew, sizeof(*le));
|
||||||
|
|
||||||
dump_le_header( le );
|
dump_le_header( le );
|
||||||
dump_le_objects( exe, le );
|
dump_le_objects( le );
|
||||||
dump_le_resources( exe, le );
|
dump_le_resources( le );
|
||||||
dump_le_names( exe, le );
|
dump_le_names( le );
|
||||||
dump_le_entries( exe, le );
|
dump_le_entries( le );
|
||||||
dump_le_modules( exe, le );
|
dump_le_modules( le );
|
||||||
dump_le_fixups( exe, le );
|
dump_le_fixups( le );
|
||||||
dump_le_VxD( exe, le );
|
dump_le_VxD( le );
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,7 @@ static void dump_ne_header( const IMAGE_OS2_HEADER *ne )
|
||||||
printf( "Expected version: %d.%d\n", HIBYTE(ne->ne_expver), LOBYTE(ne->ne_expver) );
|
printf( "Expected version: %d.%d\n", HIBYTE(ne->ne_expver), LOBYTE(ne->ne_expver) );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_ne_names( const void *base, const IMAGE_OS2_HEADER *ne )
|
static void dump_ne_names( const IMAGE_OS2_HEADER *ne )
|
||||||
{
|
{
|
||||||
const unsigned char *pstr = (const unsigned char *)ne + ne->ne_restab;
|
const unsigned char *pstr = (const unsigned char *)ne + ne->ne_restab;
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ static void dump_ne_names( const void *base, const IMAGE_OS2_HEADER *ne )
|
||||||
if (ne->ne_cbnrestab)
|
if (ne->ne_cbnrestab)
|
||||||
{
|
{
|
||||||
printf( "\nNon-resident name table:\n" );
|
printf( "\nNon-resident name table:\n" );
|
||||||
pstr = (const unsigned char *)base + ne->ne_nrestab;
|
pstr = PRD(ne->ne_nrestab, 0);
|
||||||
while (*pstr)
|
while (*pstr)
|
||||||
{
|
{
|
||||||
printf( " %4d: %*.*s\n", get_word(pstr + *pstr + 1), *pstr, *pstr, pstr + 1 );
|
printf( " %4d: %*.*s\n", get_word(pstr + *pstr + 1), *pstr, *pstr, pstr + 1 );
|
||||||
|
@ -140,7 +140,7 @@ static const char *get_resource_type( WORD id )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_ne_resources( const void *base, const IMAGE_OS2_HEADER *ne )
|
static void dump_ne_resources( const IMAGE_OS2_HEADER *ne )
|
||||||
{
|
{
|
||||||
const NE_NAMEINFO *name;
|
const NE_NAMEINFO *name;
|
||||||
const void *res_ptr = (const char *)ne + ne->ne_rsrctab;
|
const void *res_ptr = (const char *)ne + ne->ne_rsrctab;
|
||||||
|
@ -161,14 +161,14 @@ static void dump_ne_resources( const void *base, const IMAGE_OS2_HEADER *ne )
|
||||||
else printf( " %.*s", *((const unsigned char *)res_ptr + info->type_id),
|
else printf( " %.*s", *((const unsigned char *)res_ptr + info->type_id),
|
||||||
(const char *)res_ptr + info->type_id + 1 );
|
(const char *)res_ptr + info->type_id + 1 );
|
||||||
printf(" flags %04x length %04x\n", name->flags, name->length << size_shift);
|
printf(" flags %04x length %04x\n", name->flags, name->length << size_shift);
|
||||||
dump_data( (const unsigned char *)base + (name->offset << size_shift),
|
dump_data( PRD(name->offset << size_shift, name->length << size_shift),
|
||||||
name->length << size_shift, " " );
|
name->length << size_shift, " " );
|
||||||
}
|
}
|
||||||
info = (const NE_TYPEINFO *)name;
|
info = (const NE_TYPEINFO *)name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *get_export_name( const void *base, const IMAGE_OS2_HEADER *ne, int ordinal )
|
static const char *get_export_name( const IMAGE_OS2_HEADER *ne, int ordinal )
|
||||||
{
|
{
|
||||||
static char name[256];
|
static char name[256];
|
||||||
const BYTE *pstr;
|
const BYTE *pstr;
|
||||||
|
@ -186,7 +186,7 @@ static const char *get_export_name( const void *base, const IMAGE_OS2_HEADER *ne
|
||||||
else /* non-resident names */
|
else /* non-resident names */
|
||||||
{
|
{
|
||||||
if (!ne->ne_cbnrestab) break;
|
if (!ne->ne_cbnrestab) break;
|
||||||
pstr = (const BYTE *)base + ne->ne_nrestab;
|
pstr = PRD(ne->ne_nrestab, 0);
|
||||||
}
|
}
|
||||||
while (*pstr)
|
while (*pstr)
|
||||||
{
|
{
|
||||||
|
@ -205,7 +205,7 @@ static const char *get_export_name( const void *base, const IMAGE_OS2_HEADER *ne
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_ne_exports( const void *base, const IMAGE_OS2_HEADER *ne )
|
static void dump_ne_exports( const IMAGE_OS2_HEADER *ne )
|
||||||
{
|
{
|
||||||
const BYTE *ptr = (const BYTE *)ne + ne->ne_enttab;
|
const BYTE *ptr = (const BYTE *)ne + ne->ne_enttab;
|
||||||
const BYTE *end = ptr + ne->ne_cbenttab;
|
const BYTE *end = ptr + ne->ne_cbenttab;
|
||||||
|
@ -229,7 +229,7 @@ static void dump_ne_exports( const void *base, const IMAGE_OS2_HEADER *ne )
|
||||||
{
|
{
|
||||||
printf( " %4d MOVABLE %d:%04x %s\n",
|
printf( " %4d MOVABLE %d:%04x %s\n",
|
||||||
ordinal + i, ptr[3], get_word(ptr + 4),
|
ordinal + i, ptr[3], get_word(ptr + 4),
|
||||||
get_export_name( base, ne, ordinal + i ) );
|
get_export_name( ne, ordinal + i ) );
|
||||||
ptr += 6;
|
ptr += 6;
|
||||||
}
|
}
|
||||||
ordinal += count;
|
ordinal += count;
|
||||||
|
@ -239,7 +239,7 @@ static void dump_ne_exports( const void *base, const IMAGE_OS2_HEADER *ne )
|
||||||
{
|
{
|
||||||
printf( " %4d CONST %04x %s\n",
|
printf( " %4d CONST %04x %s\n",
|
||||||
ordinal + i, get_word(ptr + 1),
|
ordinal + i, get_word(ptr + 1),
|
||||||
get_export_name( base, ne, ordinal + i ) );
|
get_export_name( ne, ordinal + i ) );
|
||||||
ptr += 3;
|
ptr += 3;
|
||||||
}
|
}
|
||||||
ordinal += count;
|
ordinal += count;
|
||||||
|
@ -249,7 +249,7 @@ static void dump_ne_exports( const void *base, const IMAGE_OS2_HEADER *ne )
|
||||||
{
|
{
|
||||||
printf( " %4d FIXED %d:%04x %s\n",
|
printf( " %4d FIXED %d:%04x %s\n",
|
||||||
ordinal + i, type, get_word(ptr + 1),
|
ordinal + i, type, get_word(ptr + 1),
|
||||||
get_export_name( base, ne, ordinal + i ) );
|
get_export_name( ne, ordinal + i ) );
|
||||||
ptr += 3;
|
ptr += 3;
|
||||||
}
|
}
|
||||||
ordinal += count;
|
ordinal += count;
|
||||||
|
@ -300,7 +300,7 @@ static const char *get_seg_flags( WORD flags )
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_relocations( const void *base, const IMAGE_OS2_HEADER *ne, WORD count,
|
static void dump_relocations( const IMAGE_OS2_HEADER *ne, WORD count,
|
||||||
const struct relocation_entry *rep )
|
const struct relocation_entry *rep )
|
||||||
{
|
{
|
||||||
const WORD *modref = (const WORD *)((const BYTE *)ne + ne->ne_modtab);
|
const WORD *modref = (const WORD *)((const BYTE *)ne + ne->ne_modtab);
|
||||||
|
@ -354,7 +354,7 @@ static void dump_relocations( const void *base, const IMAGE_OS2_HEADER *ne, WORD
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_ne_segment( const void *base, const IMAGE_OS2_HEADER *ne, int segnum )
|
static void dump_ne_segment( const IMAGE_OS2_HEADER *ne, int segnum )
|
||||||
{
|
{
|
||||||
const struct ne_segtable_entry *table = (const struct ne_segtable_entry *)((const BYTE *)ne + ne->ne_segtab);
|
const struct ne_segtable_entry *table = (const struct ne_segtable_entry *)((const BYTE *)ne + ne->ne_segtab);
|
||||||
const struct ne_segtable_entry *seg = table + segnum - 1;
|
const struct ne_segtable_entry *seg = table + segnum - 1;
|
||||||
|
@ -366,23 +366,27 @@ static void dump_ne_segment( const void *base, const IMAGE_OS2_HEADER *ne, int s
|
||||||
printf( " Alloc size: %08x\n", seg->min_alloc );
|
printf( " Alloc size: %08x\n", seg->min_alloc );
|
||||||
if (seg->seg_flags & NE_SEGFLAGS_RELOC_DATA)
|
if (seg->seg_flags & NE_SEGFLAGS_RELOC_DATA)
|
||||||
{
|
{
|
||||||
const BYTE *ptr = (const BYTE *)base + (seg->seg_data_offset << ne->ne_align) + seg->seg_data_length;
|
const BYTE *ptr = PRD((seg->seg_data_offset << ne->ne_align) + seg->seg_data_length, 0);
|
||||||
WORD count = get_word(ptr);
|
WORD count = get_word(ptr);
|
||||||
ptr += sizeof(WORD);
|
ptr += sizeof(WORD);
|
||||||
printf( " Relocations:\n" );
|
printf( " Relocations:\n" );
|
||||||
dump_relocations( base, ne, count, (const struct relocation_entry *)ptr );
|
dump_relocations( ne, count, (const struct relocation_entry *)ptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ne_dump( const void *exe, size_t exe_size )
|
void ne_dump( void )
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
const IMAGE_DOS_HEADER *dos = exe;
|
const IMAGE_DOS_HEADER *dos;
|
||||||
const IMAGE_OS2_HEADER *ne = (const IMAGE_OS2_HEADER *)((const char *)dos + dos->e_lfanew);
|
const IMAGE_OS2_HEADER *ne;
|
||||||
|
|
||||||
|
dos = PRD(0, sizeof(*dos));
|
||||||
|
if (!dos) return;
|
||||||
|
ne = PRD(dos->e_lfanew, sizeof(*ne));
|
||||||
|
|
||||||
dump_ne_header( ne );
|
dump_ne_header( ne );
|
||||||
dump_ne_names( exe, ne );
|
dump_ne_names( ne );
|
||||||
dump_ne_resources( exe, ne );
|
dump_ne_resources( ne );
|
||||||
dump_ne_exports( exe, ne );
|
dump_ne_exports( ne );
|
||||||
for (i = 1; i <= ne->ne_cseg; i++) dump_ne_segment( exe, ne, i );
|
for (i = 1; i <= ne->ne_cseg; i++) dump_ne_segment( ne, i );
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,18 +87,22 @@ static const void* RVA(unsigned long rva, unsigned long len)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const IMAGE_NT_HEADERS32 *get_nt_header( const void *pmt )
|
static const IMAGE_NT_HEADERS32 *get_nt_header( void )
|
||||||
{
|
{
|
||||||
const IMAGE_DOS_HEADER *dos = pmt;
|
const IMAGE_DOS_HEADER *dos;
|
||||||
return (const IMAGE_NT_HEADERS32 *)((const BYTE *)dos + dos->e_lfanew);
|
dos = PRD(0, sizeof(*dos));
|
||||||
|
if (!dos) return NULL;
|
||||||
|
return PRD(dos->e_lfanew, sizeof(IMAGE_NT_HEADERS32));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_fake_dll( const void *base )
|
static int is_fake_dll( void )
|
||||||
{
|
{
|
||||||
static const char fakedll_signature[] = "Wine placeholder DLL";
|
static const char fakedll_signature[] = "Wine placeholder DLL";
|
||||||
const IMAGE_DOS_HEADER *dos = base;
|
const IMAGE_DOS_HEADER *dos;
|
||||||
|
|
||||||
if (dos->e_lfanew >= sizeof(*dos) + sizeof(fakedll_signature) &&
|
dos = PRD(0, sizeof(*dos) + sizeof(fakedll_signature));
|
||||||
|
|
||||||
|
if (dos && dos->e_lfanew >= sizeof(*dos) + sizeof(fakedll_signature) &&
|
||||||
!memcmp( dos + 1, fakedll_signature, sizeof(fakedll_signature) )) return TRUE;
|
!memcmp( dos + 1, fakedll_signature, sizeof(fakedll_signature) )) return TRUE;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -781,7 +785,7 @@ static void dump_dir_tls(void)
|
||||||
printf(" }\n\n");
|
printf(" }\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void dump_separate_dbg(void)
|
void dbg_dump(void)
|
||||||
{
|
{
|
||||||
const IMAGE_SEPARATE_DEBUG_HEADER* separateDebugHead;
|
const IMAGE_SEPARATE_DEBUG_HEADER* separateDebugHead;
|
||||||
unsigned nb_dbg;
|
unsigned nb_dbg;
|
||||||
|
@ -1108,12 +1112,12 @@ static void dump_debug(void)
|
||||||
dump_stabs(stabs, szstabs, stabstr, szstr);
|
dump_stabs(stabs, szstabs, stabstr, szstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pe_dump(const void* pmt)
|
void pe_dump(void)
|
||||||
{
|
{
|
||||||
int all = (globals.dumpsect != NULL) && strcmp(globals.dumpsect, "ALL") == 0;
|
int all = (globals.dumpsect != NULL) && strcmp(globals.dumpsect, "ALL") == 0;
|
||||||
|
|
||||||
PE_nt_headers = get_nt_header(pmt);
|
PE_nt_headers = get_nt_header();
|
||||||
if (is_fake_dll(pmt)) printf( "*** This is a Wine fake DLL ***\n\n" );
|
if (is_fake_dll()) printf( "*** This is a Wine fake DLL ***\n\n" );
|
||||||
|
|
||||||
if (globals.do_dumpheader)
|
if (globals.do_dumpheader)
|
||||||
{
|
{
|
||||||
|
@ -1188,7 +1192,7 @@ static void dll_close (void)
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void do_grab_sym( enum FileSig sig, const void* pmt )
|
static void do_grab_sym( enum FileSig sig )
|
||||||
{
|
{
|
||||||
const IMAGE_EXPORT_DIRECTORY*exportDir;
|
const IMAGE_EXPORT_DIRECTORY*exportDir;
|
||||||
unsigned i, j;
|
unsigned i, j;
|
||||||
|
@ -1198,7 +1202,7 @@ static void do_grab_sym( enum FileSig sig, const void* pmt )
|
||||||
const char* ptr;
|
const char* ptr;
|
||||||
DWORD* map;
|
DWORD* map;
|
||||||
|
|
||||||
PE_nt_headers = get_nt_header(pmt);
|
PE_nt_headers = get_nt_header();
|
||||||
if (!(exportDir = get_dir(IMAGE_FILE_EXPORT_DIRECTORY))) return;
|
if (!(exportDir = get_dir(IMAGE_FILE_EXPORT_DIRECTORY))) return;
|
||||||
|
|
||||||
pName = RVA(exportDir->AddressOfNames, exportDir->NumberOfNames * sizeof(DWORD));
|
pName = RVA(exportDir->AddressOfNames, exportDir->NumberOfNames * sizeof(DWORD));
|
||||||
|
|
|
@ -21,5 +21,4 @@
|
||||||
extern void dump_codeview(unsigned long ptr, unsigned long len);
|
extern void dump_codeview(unsigned long ptr, unsigned long len);
|
||||||
extern void dump_coff(unsigned long coffbase, unsigned long len, const void* sect_map);
|
extern void dump_coff(unsigned long coffbase, unsigned long len, const void* sect_map);
|
||||||
extern void dump_frame_pointer_omission(unsigned long base, unsigned long len);
|
extern void dump_frame_pointer_omission(unsigned long base, unsigned long len);
|
||||||
extern void dump_separate_dbg(void);
|
|
||||||
extern void pe_dump(const void*);
|
|
||||||
|
|
|
@ -229,7 +229,7 @@ enum FileSig {SIG_UNKNOWN, SIG_DOS, SIG_PE, SIG_DBG, SIG_NE, SIG_LE, SIG_MDMP, S
|
||||||
const void* PRD(unsigned long prd, unsigned long len);
|
const void* PRD(unsigned long prd, unsigned long len);
|
||||||
unsigned long Offset(const void* ptr);
|
unsigned long Offset(const void* ptr);
|
||||||
|
|
||||||
typedef void (*file_dumper)(enum FileSig, const void*);
|
typedef void (*file_dumper)(enum FileSig sig);
|
||||||
int dump_analysis(const char*, file_dumper, enum FileSig);
|
int dump_analysis(const char*, file_dumper, enum FileSig);
|
||||||
|
|
||||||
void dump_data( const unsigned char *ptr, unsigned int size, const char *prefix );
|
void dump_data( const unsigned char *ptr, unsigned int size, const char *prefix );
|
||||||
|
@ -237,10 +237,12 @@ const char* get_time_str( unsigned long );
|
||||||
unsigned int strlenW( const unsigned short *str );
|
unsigned int strlenW( const unsigned short *str );
|
||||||
void dump_unicode_str( const unsigned short *str, int len );
|
void dump_unicode_str( const unsigned short *str, int len );
|
||||||
|
|
||||||
void ne_dump( const void *exe, size_t exe_size );
|
void ne_dump( void );
|
||||||
void le_dump( const void *exe, size_t exe_size );
|
void le_dump( void );
|
||||||
void mdmp_dump( void );
|
void mdmp_dump( void );
|
||||||
void lib_dump( const char *lib_base, unsigned long lib_size );
|
void lib_dump( const char *lib_base, unsigned long lib_size );
|
||||||
|
void dbg_dump( void );
|
||||||
|
void pe_dump( void );
|
||||||
|
|
||||||
void dump_stabs(const void* pv_stabs, unsigned szstabs, const char* stabstr, unsigned szstr);
|
void dump_stabs(const void* pv_stabs, unsigned szstabs, const char* stabstr, unsigned szstr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue