mirror of
https://github.com/idapython/src
synced 2026-06-08 14:47:00 +00:00
84 lines
3.3 KiB
Python
84 lines
3.3 KiB
Python
"""
|
|
summary: Print basic information about the currently loaded IDB.
|
|
|
|
description:
|
|
In this script we display some basic information about the
|
|
current IDB:
|
|
* the compiler name and the size of some datatypes
|
|
* Other general IDB information including: application bitness,
|
|
file type, various address ranges, main address and start
|
|
addresses if exist.
|
|
For this we use some of the inf_get_xxx functions from the
|
|
ida_ida module.
|
|
"""
|
|
import ida_ida
|
|
import ida_kernwin
|
|
import ida_typeinf
|
|
import ida_idaapi
|
|
|
|
ft_dict = {
|
|
ida_ida.f_EXE_old: 'MS DOS EXE File',
|
|
ida_ida.f_COM_old: 'MS DOS COM File',
|
|
ida_ida.f_BIN: 'Binary File',
|
|
ida_ida.f_DRV: 'MS DOS Driver',
|
|
ida_ida.f_WIN: 'New Executable (NE)',
|
|
ida_ida.f_HEX: 'Intel Hex Object File',
|
|
ida_ida.f_MEX: 'MOS Technology Hex Object File',
|
|
ida_ida.f_LX: 'Linear Executable (LX)',
|
|
ida_ida.f_LE: 'Linear Executable (LE)',
|
|
ida_ida.f_NLM: 'Netware Loadable Module (NLM)',
|
|
ida_ida.f_COFF: 'Common Object File Format (COFF)',
|
|
ida_ida.f_PE: 'Portable Executable (PE)',
|
|
ida_ida.f_OMF: 'Object Module Format',
|
|
ida_ida.f_SREC: 'Motorola SREC (S-record)',
|
|
ida_ida.f_ZIP: 'ZIP file (this file is never loaded to IDA database)',
|
|
ida_ida.f_OMFLIB: 'Library of OMF Modules',
|
|
ida_ida.f_AR: 'ar library',
|
|
ida_ida.f_LOADER: 'file is loaded using LOADER DLL',
|
|
ida_ida.f_ELF: 'Executable and Linkable Format (ELF)',
|
|
ida_ida.f_W32RUN: 'Watcom DOS32 Extender (W32RUN)',
|
|
ida_ida.f_AOUT: 'Linux a.out (AOUT)',
|
|
ida_ida.f_PRC: 'PalmPilot program file',
|
|
ida_ida.f_EXE: 'MS DOS EXE File',
|
|
ida_ida.f_COM: 'MS DOS COM File',
|
|
ida_ida.f_AIXAR: 'AIX ar library',
|
|
ida_ida.f_MACHO: 'Mac OS X Mach-O',
|
|
ida_ida.f_PSXOBJ: 'Sony Playstation PSX object file',
|
|
ida_ida.f_MD1IMG: 'Mediatek Firmware Image'
|
|
}
|
|
|
|
def main():
|
|
print('\nCompiler info:')
|
|
cc = ida_ida.compiler_info_t()
|
|
ida_ida.inf_get_cc(cc)
|
|
print(f'\tCompilateur: {ida_typeinf.get_compiler_name(cc.id)}')
|
|
print(f'\t\tByte size: {ida_ida.inf_get_cc_size_b()}')
|
|
print(f'\t\tShort size: {ida_ida.inf_get_cc_size_s()}')
|
|
print(f'\t\tEnum size: {ida_ida.inf_get_cc_size_e()}')
|
|
print(f'\t\tInteger size: {ida_ida.inf_get_cc_size_i()}')
|
|
print(f'\t\tLong size: {ida_ida.inf_get_cc_size_l()}')
|
|
print(f'\t\tLong double size: {ida_ida.inf_get_cc_size_ldbl()}')
|
|
print(f'\t\tLong long size: {ida_ida.inf_get_cc_size_ll()}')
|
|
|
|
print('\nGeneral IDB information:')
|
|
print(f'\tApplication bitness: {ida_ida.inf_get_app_bitness()}-bit')
|
|
if ida_ida.inf_is_kernel_mode():
|
|
land = 'Kernel'
|
|
else:
|
|
land = 'User'
|
|
print(f'\tExecution mode: {land}')
|
|
print(f'\tFile type: {ft_dict[ida_ida.inf_get_filetype()]}')
|
|
main_ea = ida_ida.inf_get_main()
|
|
if not main_ea == ida_idaapi.BADADDR:
|
|
print(f'\tMain entry point: {main_ea:x}')
|
|
start_ea = ida_ida.inf_get_start_ea()
|
|
if not start_ea == ida_idaapi.BADADDR:
|
|
print(f'Start entry: {start_ea:x}')
|
|
print(f'\tMinimum effective address: {ida_ida.inf_get_min_ea():x}')
|
|
print(f'\tMaximum effective address: {ida_ida.inf_get_max_ea():x}')
|
|
print(f'\tPrivate range start: {ida_ida.inf_get_privrange_start_ea():x}')
|
|
print(f'\tPrivate range end: {ida_ida.inf_get_privrange_end_ea():x}')
|
|
|
|
|
|
ida_kernwin.msg_clear()
|
|
main() |