Guest User

IDA 9.0 beta 2 changelog (with spaces and indents)

a guest
Aug 15th, 2024
848
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.06 KB | None | 0 0
  1.  
  2. Issues fixed in IDA 9.0 beta 2
  3.  
  4. IDA Home: cloud decompilers unusable
  5. Replaced every reference to ida.key into ida.hexlic
  6. IDA Linux installer creates a weird directory in the installers's directory
  7. IDA Home: missing IDA Pyton module "ida_mergemod"
  8. missing style dylib on macOS
  9. decompilers: crash on navigation into non-decompilable function
  10. asmtil: interr 918 + crash on filtering a large list of types
  11. idapython: idc.get_ordinal_qty() not usable
  12. added wasm loader and processor module
  13.  
  14. Known issues for IDA 9.0 beta 1
  15.  
  16. IDA Teams server (vault) not yet available
  17. IDA floating license server (licsrv) not yet available
  18. Dialogs text in Linux installer not readable on Ubuntu with dark theme active
  19. Linux installer creates empty directory named `***unknown variable uninstallerdirectory***`
  20. iOS18 DSC objc analysis lacking out-of-box (__OBJC_RO has to be loaded manually for now)
  21. IDA can crash on x64 macOS at file load time
  22.  
  23. Headless processing with IDAlib
  24.  
  25. With IDAlib, both the C++ and Python APIs can be used from outside IDA to form standalone applications. The resulting program or script doesn't have to be loaded inside IDA, but rather IDA engine is invoked from inside your application.
  26.  
  27. This makes developing against the IDA API much easier - if configured correctly, you get auto-completion and debugging in your favorite C++/Python IDE
  28.  
  29. NO RCP or IPC to an external IDA process means you get native speed of execution
  30.  
  31. WASM Disassembler and File Format Loader
  32.  
  33. With many apps shifting to client-side browser applications we saw the need of a new disassembler for Web Assembly (WASM).
  34.  
  35. WASM code is embedded into its own binary file format. Hence we also ship a file loader that decodes the WASM file format
  36.  
  37. nanoMIPS Disassembler and Decompiler + md1rom Loader
  38.  
  39. Both the MIPS disassembler and decompiler got added support for nanoMIPS instructions. The nanoMIPS support is included in the classic MIPS (HEXMIPS) decompiler, so there is no need to purchase an extra license.
  40.  
  41. Firmware compiled for nanoMIPS often ships in md1rom format, which is why we added an md1rom file loader to IDA (which includes parsing and applying of debug symbols, if available)
  42.  
  43. New RISC-V Decompiler and Disassembler Extensions
  44.  
  45. New decompilers targeting 32- and 64-bit RISC-V code (HEXRV and HEXRV64) are now available.
  46.  
  47. We extended the RISC-V processor module to support T-Head extension instructions (used in Xuantie and Allwinner processors)
  48.  
  49. C++ Exceptions Support in the Decompiler
  50.  
  51. The decompiler can now emit try / catch blocks. As the first step, we implemented support for the C++ exception scheme in binaries compiled for x64 using Microsoft VC++
  52.  
  53. IDAPython Improvements
  54.  
  55. Most IDAPython APIs now have type annotations, making the API less obstructive to use.
  56.  
  57. Python virtual environments are now supported - simply point $PATH to the directory containing the interpreter inside the virtual environment (done automatically by the activation script).
  58.  
  59. Objects returned in the Python API are properly zero-initialized.
  60.  
  61. Auto-completion in IDA's CLI now disregards __magic_methods__ and auto-generated SWIG methods, which reduces noise and helps finding a particular function easier.
  62.  
  63. FLIRT Updates
  64.  
  65. We massively updated, modernized and extended the number of FLIRT signatures available for use with IDA. As of this release, we provide (and plan to maintain) signatures for the following operating systems, languages, architectures, and software packages:
  66.  
  67. Golang:
  68.  
  69. Versions: stable versions from 1.10.0 to 1.22.5 and unstable version 1.23.0-rc1/1.23.0-rc2
  70.  
  71. Windows: x86, x64, arm, arm64
  72.  
  73. Linux: i386, amd64, arm, arm64
  74.  
  75. Darwin: amd64, arm64
  76.  
  77. C/C++
  78.  
  79. Windows (MSVC):
  80.  
  81. Architectures: arm, arm64, i386, amd64
  82.  
  83. Packages: ATL, CTL, MFC, Windows SDK 10, Windows SDK 11
  84.  
  85. Linux:
  86.  
  87. Distribution: Ubuntu & Debian
  88.  
  89. Architectures: i386, amd64, arm64, armhf, armel, arm, s390x, mips64el, mipsel, mips, ppc64el
  90.  
  91. Packages: libc6, libselinux1, libpcre2, libidn2, libssl, zlib1g, lib32z1, libunistring, libcurl4-gnutls, libcurl4-nss, libcurl4-openssl, libnghttp2, libidn2, librtmp, libssh, libssh-gcrypt, libpsl, libldap, libzstd, libbrotli, libgnutls28, nettle, libgmp, comerr, libsasl2, libbrotli, libtasn1-6, libkeyutils, libffi, uuid, libprotobuf, heimdal-multidev, musl, libplib, libsdl1.2-bundle (libsdl-console, libsdl-sge, libsdl1.2, libsdl-ocaml, libsdl-image1.2, libsdl-kitchensink, libsdl-mixer1.2, libsdl-net1.2, libsdl-sound1.2, libsdl-ttf2.0, libsdl1.2-compat, libsdl-gfx1.2, libsdl-pango), libsdl2-bundle (libsdl2, libsdl2-gfx, libsdl2-image, libsdl2-mixer, libsdl2-net, libsdl2-ttf)
  92.  
  93. The extra signatures are initially available as separate download
  94.  
  95. Metadata Descriptors for Plugins
  96.  
  97. ida-plugin.json now offers a standardized entrypoint for plugins. This enables plugin authors to follow their own plugin directory structure, all they need to do is point IDA to the main plugin entry point. To maintain backward compatibility, IDA will keep loading plugins in the pre-9.0 way for a couple of releases.
  98.  
  99.  
  100.  
  101. With the following directory structure:
  102.  
  103. plugins
  104. └── ida_greeter
  105. ├── ida-plugin.json
  106. └── main.py
  107.  
  108. A possible ida-plugin.json could look as follows:
  109.  
  110. {
  111. "plugin" :
  112. {
  113. "name" : "greeter",
  114. "entryPoint" : "main.py"
  115. }
  116. }
  117.  
  118. No more IDA32
  119.  
  120. We deprecated IDA32 a few versions ago. With IDA 9.0, we’re unifying the IDA binaries targeting 32 or 64 bit code into just one IDA64 binary. This means:
  121.  
  122. Number of installed files is cut in half
  123.  
  124. Easier life for native plugin maintainers since only one version (__EA64__) needs to be maintained.
  125.  
  126. Conversion of IDB files to I64 file format is transparently and automatically performed by IDA64.
  127.  
  128. UI Improvements
  129.  
  130. The legacy Enums and Structures views are removed entirely and replaced by Local Types. This also means that struct.hpp and enum.hpp and their counterparts ida_struct and ida_enum disappear from the API. Replacement functionality for both headers/modules is now located (mostly) in typeinf.hpp / ida_typeinf. A porting guide will be available for the release.
  131.  
  132. The function prototype editor (aka y shortcut on a function name) now can toggle between the classic free-text one-line editor and a new multi-line editor featuring the usual shortcuts and controls. By the same time, we added basic support for UI-based editing of argument locations, to make prototype syntax less of a hassle to remember.
  133.  
  134. It is now possible to specify fixed size for structures and to enable field packing easily
  135.  
  136. A refreshed set of shortcuts which better matches the modern OS conventions can now be selected instead of the traditional shortcuts
  137.  
  138. Full list of changes and new features
  139. Processor modules
  140.  
  141. ARM: improve detection of targets of indirect jump instructions
  142. ARM: improved prolog analysis to recognize and mark calls to chkstk_darwin
  143. AVR: update missing bit definitions for ATmega640
  144. MIPS: support for NanoMIPS instruction set
  145. RISCV: added support for legacy instruction sfence.vm
  146. RISCV: added support for T-Head custom instructions
  147. wasm: new processor module (Web Assembly)
  148.  
  149. File formats
  150.  
  151. ELF: added support for nanoMIPS
  152. ELF: ARM64: added support for R_AARCH64_P32_TLS_TPREL relocation type, used by ILP32
  153. md1img: loader for Mediatek modem firmware images (nanoMIPS and MIPS16e2)
  154. MACHO: support __chain_starts format 5 (DYLD_CHAINED_PTR_32_FIRMWARE)
  155.  
  156. FLIRT / TILS / IDS
  157.  
  158. FLAIR: PCF: added support for ARM64 COFF files
  159. pelf: proper handling of ELF32 for AArch64 (ILP32)
  160.  
  161. Standard plugins
  162.  
  163. eh_parse: skip leading and trailing zero entries in x64 .pdata for PE files (real binaries have them); improve recognition of exception dispatcher functions in debug builds
  164. eh_parse: x64 exception handlers are standalone functions and not function chunks
  165. eh34: new plugin to handle c++ exceptions for the binaries built by msvc x64
  166. pdb: added an option to only load names (useful with large PDBs when you don't need types)
  167.  
  168. Kernel/Misc
  169.  
  170. goodname.cfg: improve simplification of MSVC STL classes
  171. kernel: support for ida-plugin.json
  172. kernel: improved strlit detection (short ones were converted to data items)
  173. noret.cfg: added terminate, std_terminate to the list of non-returning functions
  174. installer: macOS: install all contents into a single .app bundle
  175. licensing: replaced FlexNet licensing server by custom Hex-Rays licensing server (floating licenses only)
  176.  
  177. Scripting & SDK
  178.  
  179. IDAPython: added find_binary and find_string
  180. IDAPython: added detection of virtual environments (venv)
  181. IDAPython: Added more pointer wrappers for integer types defined in pro.h
  182. IDAPython: idapyswitch can now be used with read-only IDA installations
  183. IDAPython: Removed __magic_methods__ from CLI auto completion
  184. IDAPython: zero-initialize C++ objects exposed in the Python API
  185. IDAPython: loader_input_t.read() should return an empty bytes object upon read error, not None
  186. SDK: Add Visual Studio templates for plugins and loaders
  187. SDK: added FUNC_UNWIND/FUNC_CATCH function flags to mark exception handlers, they will be ignored in decompilation
  188. SDK: added pipe_process() to launch a process and establish a 2-way communication with it
  189. SDK: added qlist::splice()
  190. SDK: moved node_ordering_t to gdl.hpp
  191. SDK: published basic undo interface (create undo point, undo, redo)
  192. SDK: renamed abstract_graph_t -> drawable_graph_t; mutable_graph_t -> interactive_graph_t
  193.  
  194. UI
  195.  
  196. UI: added an option to retain structure size (Fixed size structs)
  197. UI: Added "pack fields" checkbox to control gaps between fields for structs
  198. UI: command palette: fix wrong reports about "command failed"
  199. UI: hadle export/import of Local types to IDC is in a more flexible way. User is able to select the different policies, for example: load the types and skip the equal.
  200. UI: if IDA already has a file open, "Open" opens a file in a new IDA instance
  201. UI: it is now possible to inspect the contents of base type libraries, by double-clicking on them in the "Type libraries" view
  202. UI: new shortcut set better aligned with modern OS conventions
  203. UI: got rid of "Structs" and "Enums" widgets
  204. UI: new shortcuts: Alt- (and CMD-) to jump to a window
  205.  
  206. Decompilers
  207.  
  208. decompiler: riscv: added RV32 and RV64 decompilers
  209. decompiler: added try/catch ctree statement
  210. decompiler: improved detection of variadic arg types
  211. decompiler: introduced a new event: hxe_inlining_func
  212. decompiler: published a few graph algorthims (pre/port ordering and dominator calculation)
  213. decompiler: published the control_graph_t class; made it possible for third-party plugins to perform structural analysis
  214. decompiler: arm: added support for VSEL insn (ARMv8-M)
  215. decompiler: impoved structure copy recognition
  216. decompiler: improved cfunc_t cache by introducing "saved_to_idb"; otherwise we were saving all decompiled functions upon each "save_database", again and again
  217. decompiler: improved constant representation in comparisons with binary operators
  218. decompiler: improved hexrays history to support c++ exception handlers
  219. decompiler: improved the error message about the missing license: tell the user what license is missing
  220. decompiler: mips: added support for movtz and movtn (MIPS16e2)
  221.  
  222. Bugfixes
  223.  
  224. BUGFIX: ARM: analysis speed could be slow on large 32-bit firmware binaries
  225. BUGFIX: ARM: fixed endless loop which could happen when analysing function chunk before main function entry
  226. BUGFIX: ARM: stop decoding undefined MOV Wx, #imm variants (imm not fitting in 32 bits)
  227. BUGFIX: cvt64: converting an old .idb to .i64 would fail if its path contained a space
  228. BUGFIX: debugger: win32_remote.exe was unnecessarily requiring an API instroduced in Windows Vista and would not run on XP anymore
  229. BUGFIX: decompiler: expressions with variable sized structures could be mishandled
  230. BUGFIX: decompiler: IDA could complain "Could not find a matching license for product" when multiple decompilers were installed
  231. BUGFIX: decompiler: internal errors triggered by UI-related code (e.g. generaing tooltips) could result in "Unknown C++ exception" fatal error
  232. BUGFIX: decompiler: pressing F5 was not refreshing the pseudocode window in some cases; we were discarding the decompilation result
  233. BUGFIX: decompiler: value range optimization could lead to code being wrongly removed
  234. BUGFIX: DSCU: a GAP spanning multiple subcache files would fail to load
  235. BUGFIX: kernel: IDA on Linux had an unnecessary hard dependency on libsecret and would refuse to run without it.
  236. BUGFIX: navigating to a global name which matched a known type name would fail
  237. BUGFIX: objc: NS*Block reference detection error would end up creating incoherent block structures over unrelated data
  238. BUGFIX: PC: alloca_probe / chkstk_ms does not modify rsp or rax in x64 code, unlike x86
  239. BUGFIX: PC: REX prefix could be incorrectly applied to 32-bit instructions
  240. BUGFIX: PC: vmovw instruction was decoded as if using 16-bit registers (it actually uses 32-bit ones)
  241. BUGFIX: PDB: inporting types from some large PDBs would fail with "the maximum recursion level was reached"
  242. BUGFIX: RISCV: fence.i instruction was not decoded
  243. BUGFIX: SDK: fixed a debug/opt build incompatibility in reg_finder_t (std::map member)
  244. BUGFIX: SDK: set_all_bits() and clear_all_bits() would behave wrong on bitmaps with size not a multiple of 8
  245. BUGFIX: sometimes information about newly created range-like entities (segments/functions/...) could be lost during UNDO
  246. BUGFIX: tinfo: xrefs to a deleted enum were not removed
  247. BUGFIX: UI: large amounts of lines in the "Output" window could cause slowdowns
  248. BUGFIX: UI: when using COLOR_INV color code (e.g. in a custom viewer), IDA would use default color for the text instead of the previous background color
  249.  
  250.  
Advertisement
Add Comment
Please, Sign In to add comment