![]() |
|||
IDA Pro 5.6 feature list
HIGHLIGHTS
|
PROCESSOR MODULES ----------------- + 6812: added support for HCS12X XGATE coprocessor instructions (thanks to Alex Bratovic) + 6812: support for page registers PPAGE, RPAGE, EPAGE, GPAGE (thanks to Alex Bratovic) + ARM: added support for more switches + ARM: sequence ADR LR, retaddr ... MOV PC, Rx is recognized as a call + AVR: accept -DAVR_MCPU option to set preferred device + CLI (.NET): added CLI 2.0 instructions + M32R: added support for floating-point constants + M7700: better tracking of m and x processor bits + PC: added recognition of gcc64 variadic function prologs + PPC: conditional branch instructions with hints were not simplified. now we show + or - if the hint overrides default behavior + TMS320C55: added several more undocumented dual instructions + V850: new processor (with source code). Includes V850E1 variant. FILE FORMATS ------------ + file loaders can be written in any scripting language (Python, IDC, etc) + ELF,AVR: Can load ELF-32 for AVR CPU. + ELF: better handling of relocations and symbols in SuperH files + ELF: some imports were not renamed in Solaris 10 SPARC files (dlopen etc) + ELF: support for ARM TLS relocations + MACHO: information about dylibs (when available) is added to the imports list + MS DOS: added support for rebasing databases (thanks to Jeremy Cooper) KERNEL ------ + a local type can be mapped (redirected) to another local type. this feature can be used if a type was created twice + added FLIRT signatures for ICL v11.1 + updated Mac OS X type libraries (and added macosx64.til) + updated many Windows .ids files to the latest SDK and DDK + IDAPython is now available in 64-bit version of IDA IDC & SDK --------- + IDC: added comma operator + IDC: added hasattr(), setattr(), getattr(), delattr() function to work with IDC objects + IDC: added SetTargetAssembler() + IDC: added DecodeInstruction() + IDC: added support for 64-bit numbers (64-bit constants are declared with i64 suffix: 1234i64) + IDC: embedded zeroes are allowed in strings; simple Unicode strings can be created using L"string"; added strset() to create strings filled with the specified character + IDC: functions are first class citizens in IDC: they can be passed as arguments, pointers to functions are possible, etc. + IDC: renamed form() to sprintf() and removed the result length limit + SDK: added "const" keywords to many public arguments and structure fields (to suppress frequent compiler warnings) + SDK: added a new idc_value_t type: VT_STR2. It is similar to VT_STR but keeps its value in a qstring. This allows us to store strings with embedded zeroes + SDK: added appcall() to call functions from the debugged application + SDK: added debugger_t.update_call_stack() for debugger module specific stack tracing mechanisms + SDK: added functions to manipulate IDC classes and class methods + SDK: added get_strmem_by_name() + SDK: added PR_DEFSEG64 (if set, segments are 64-bit by default) + SDK: added set_chooser_attribute_cb(). It can be used to specify colors and font attributes for each chooser line (GUI). + SDK: added set_dock_pos() to control the docking position of forms + SDK: added support for custom fixup types + SDK: added til_symbol_t structure and choose_named_type2() function + SDK: added user2qstr() and qstr2user() functions + SDK: choose_ioport_device() can filter device names and display a shorter list + SDK: If choose_ioport_device() with a filter callback generates a list of only one entry, that entry is returned without showing the dialog + SDK: It is possible to create persistent forms (which are not closed when switching to and from debug mode) with the FORM_PERSIST flag and open_tform() + SDK: multiple external languages can be installed; IDC is installed as an external language too + SDK: redefined new/delete operators in pro.h so that all plugins use common memory allocation functions + SDK: the dbg_suspend_process event is generated after synchronizing IDA state with the process state USER INTERFACE -------------- + GUI: Added search facility to Notepad + GUI: Show function name in the stack trace window + GUI: Tab style can be configured in idagui.cfg + UI: "Add standard structure/enum" dialogs now show in which type library each symbol is defined + UI: fixups (relocations) are ignored while debugging since they are already applied by the system loader; this gives better disassembly + UI: hex dump and stack view scroll one line on mouse wheel turn + UI: show structure sizes in "Choose structure for offset" window DEBUGGER -------- + added ARM Linux debugger backend + added Linux x64 debugger backend + added Mac OS X 64-bit debugger backend + OSX: mac_server debug server support for OSX 10.6 (Snow Leopard) + BOCHS: Bochs debugger plugin SDK now allows users to execute their initialization code from ring0 + BOCHS: Bochs PE loader now supports DllMain() to run DLLs without a DLL loader program + debugger: debugger can now step through and over macro instructions. When stepping over, the whole macro is skipped; when single stepping, we still step one instruction at a time. + debugger: OSX: added support for hardware breakpoints + WINDBG: It is now possible to select which type of messages from the debugger engine to show in IDA log window BUGFIXES -------- BUGFIX: "edit, string, dos string" was creating a zero terminated string, not a dos string BUGFIX: 8051: IDA could crash if "8051 Cross-Assembler by MetaLink Corporation" was selected BUGFIX: address expression in the hint title could be incorrect for 16-bit programs BUGFIX: array index was always displayed in decimal in case of array of structures BUGFIX: big-endian SuperH ELF files could not be loaded BUGFIX: Breakpoints added inside bochs_startup() were not being triggered unless the debugger is suspended at least once. BUGFIX: build_funcarg_info(): retloc for EDX:EAX was incorrect for x86 BUGFIX: chooser was computing wrong width / heights in some cases (when themes are enabled), resulting is unnecessary scrollbars in e.g. cross references list BUGFIX: cli: defined but not disassembled bytes were not displayed in the listing BUGFIX: cli: some instructions could display garbage if token operand was not defined in the metadata BUGFIX: clp.dll could raise exceptions BUGFIX: debugger: DLL breakpoints didn't work if the DLL was unloaded and then loaded again BUGFIX: debugger: the run to command (F4) could fail if the application was rebased; the queued debugger commands were using wrong (non-rebased) addresses BUGFIX: division by zero when zooming in/out an empty graph view BUGFIX: Dump typeinfo to IDC was not restoring struct members comment properly BUGFIX: ELF/ARM: Thumb functions were not detected properly in some newer EABI files BUGFIX: ELF: handle the case when DYNAMIC segment is longer than the actual .dynamic section and no section table is present BUGFIX: ELF: some files with segments near the top of address space could not be loaded; if there is no space for externs after the highest segment, we try to find a hole somewhere else BUGFIX: even if the AF2_NORET flag was clear, IDA was still marking functions from noret.cfg as not returning BUGFIX: get_max_ascii_length() could fail because of a missing segment while the debugger is running because of stale segment information BUGFIX: get_nsec_stamp() was returning wrong values on long-running Windows systems BUGFIX: get_struc_id() could return bogus value if the name existed in database (e.g. as an enumeration) BUGFIX: GUI could crash in some cases BUGFIX: GUI: toolbars were not restored as part of the default desktop layout BUGFIX: IDA could crash if processor module returned bogus itype values BUGFIX: IDA could crash trying to display some insane ARM instructions BUGFIX: IDA could endlessly loop analyzing functions with erroneously detected >gt;2GB stack frame BUGFIX: IDA could interr because of failed attempt to switch to graph mode on a too complex function BUGFIX: idag would not change the current directory to the input file directory if the file was selected using the File,Open menu item BUGFIX: idaw could crash if a fixed plugin tried to add a menu item BUGFIX: if the input file was not readable, idag would exit silently BUGFIX: if the instant debugger failed to set a temporary breakpoint at the entry point, it would still resume the process BUGFIX: if the program got rebased because of a debugger event, the active breakpoints would not be moved to the new addresses BUGFIX: if was impossible to enter expressions in the IDC command line after installing an extlang, they would be interpreted by the extlang, not by IDC BUGFIX: in some cases, a form could have wrong menu items if activated from a closing form BUGFIX: in some cases, IDA could crash while switching desktops BUGFIX: it was impossible to add/edit hardware breakpoints without an active debugger if a remote host was specified BUGFIX: it was impossible to change the memory model from the user interface (Options, Compiler) BUGFIX: it was impossible to specify string parameters with the -D/-d command line options BUGFIX: it was impossible to use user-defined breakpoints in ntdll_LdrInit... functions on Windows 7 BUGFIX: it was not possible to create a 64-bit segment using the GUI in idag64 BUGFIX: Linux debugger was not using names from loaded modules BUGFIX: Linux debugger: sometimes debug server could exit with message "td_ta_set_event: generic error" BUGFIX: M32R: FPU instructions were decoded incorrectly BUGFIX: M7700: immediate operands were improperly converted into I/O register names BUGFIX: Notepad window cursor was being reset each time the notepad is docked or undocked BUGFIX: PDB: enum values -1, -2 etc were not converted properly when importing PDB types BUGFIX: PDB: IDA could crash when parsing PDBs using msdia71.dll (from VS2003) BUGFIX: PE: IDA could hang on some PE files with corrupted export table BUGFIX: PE: TLS directory was not handled if it had size of 0 (Windows loader ignores the size field). BUGFIX: rebasing the database could lead to the loss of the information about the first function of each segment, except the first segment provided that there are no gaps between segments BUGFIX: refreshing stack trace window could crash in some cases BUGFIX: resolving ordinal types would not return their names and this would lead to superfluous casts in the decompiler BUGFIX: SDK: get_next_module() was buggy BUGFIX: SDK: the width field of edge_info_t struct was ignored for custom graphs BUGFIX: single stepping would break even if an event unrelated to stepping occurred BUGFIX: some information about address 00000000 could be lost when upgrading database to 5.4+ format. BUGFIX: some tms320c64+ instructions were not recognized BUGFIX: the navigation bar was not using the full width of the window without having to undock, enlarge and redock it every time BUGFIX: The register window was not being restored properly all the time BUGFIX: the user could not edit the exception list before starting the instant debugger BUGFIX: TMS320C55: some instructions were disassembled incorrectly BUGFIX: UI: IDA sometimes displayed "Failed to set data for ''" message under Vista BUGFIX: UI: the current item indicator in choosers could disappear on resizing the window BUGFIX: under Linux/OSX, the ~/.idapro/ida.cfd file could get corrupted if multiple copies of IDA were run simultaneously BUGFIX: viewer_set_titlebar_height() was not refreshing the graph with the new titlebar height. now it happens automatically BUGFIX: Windbg and Bochs/diskimg loader were returning stale memory layout information in some cases BUGFIX: Windbg debugger module would report wrong number of loaded modules when attaching to kernel target BUGFIX: windbg/bochs CLI handlers could fail a legit command if the previous command failed. BUGFIX: Windbg: the ".hh" command was not workingCopyright 2009 Hex-Rays, 2009-12-17