
IDA PRO 7.5版現(xiàn)已發(fā)布!
今天我們很榮幸地宣布發(fā)布IDA PRO 7.5版!加入我們,發(fā)現(xiàn)您的IDA Pro的許多新的功能和改進(jìn)!
亮點(diǎn)介紹
- 文件夾視圖
在許多IDA標(biāo)準(zhǔn)視圖中都有樹形的文件夾視圖。您可以創(chuàng)建文件夾并在它們之間移動(dòng)項(xiàng)目。首先,以下視圖包含:
功能和名稱

導(dǎo)入

結(jié)構(gòu)

枚舉類型

本地類型

對(duì)于結(jié)構(gòu)和枚舉,樹面板默認(rèn)顯示,對(duì)于其他視圖,可以通過(guò)“顯示文件夾”上下文菜單項(xiàng)啟用。
用戶可以創(chuàng)建、重命名和刪除文件夾,并在文件夾之間移動(dòng)項(xiàng)目。這將有助于在處理大型二進(jìn)制文件時(shí)組織信息。
- MIPS反編譯器
一個(gè)新的反編譯器已經(jīng)添加到我們的陣容。IDA支持的任何32位MIPS二進(jìn)制文件都可以反編譯,包括壓縮編碼。透明且完美地處理可惡的延遲槽。
以下是一些截圖:
Big-endian MIPS32代碼

Little-endian MIPS32碼

MIPS16e代碼

microMIPS代碼

- 用于MIPS和PPC的Lumina:
Lumina函數(shù)現(xiàn)在可用于MIPS和PPC二進(jìn)制文件。
- iOS/macOS改進(jìn)
我們已經(jīng)添加了帶有大多數(shù)主要API的類型庫(kù),以及來(lái)自macOS和iPhone SDK的附加框架。當(dāng)與反編譯器配合使用時(shí),它們特別有用。
初始可用類型庫(kù)列表

使用CoreFoundation API的x86_64用戶模式代碼示例

使用IOKit類的ARM64內(nèi)核代碼示例

此外,我們改進(jìn)了對(duì)KTRW調(diào)試器的支持。斷點(diǎn)和監(jiān)視點(diǎn)使用相同的Corellium-ARM64配置進(jìn)行開(kāi)箱即用。
在反編譯器方面,我們?cè)黾恿藢?duì)Atomic ARM64指令的支持,如CAS(compare and swap)、LDADD(atomic add)等。它們從stdatomic.h轉(zhuǎn)換為相應(yīng)的C11函數(shù),因此在處理為arm64e編譯的代碼時(shí),應(yīng)該看到更少的_asm{}塊。
ARM Atomic

其他選定項(xiàng)目
PC:采用Intel CET(控制流強(qiáng)制技術(shù))的ELF二進(jìn)制文件正變得非常常見(jiàn),因?yàn)槟J(rèn)情況下,Debian會(huì)啟用此編譯器選項(xiàng),其次是Fedora和其他Linux發(fā)行版。我們現(xiàn)在支持這種開(kāi)箱即用的二進(jìn)制文件,包括在反編譯程序中。我們還增加了對(duì)最近添加到英特爾和AMD處理器的幾個(gè)新指令的支持。
Intel CET

ARM:最近針對(duì)32位ARM代碼的編譯器傾向于使用MOVW和MOVT指令對(duì)來(lái)加載32位常量和地址,而不是像過(guò)去那樣使用常量池。雖然IDA在將這些對(duì)放在一起時(shí)已經(jīng)處理了它們,但是高級(jí)優(yōu)化可以將這些對(duì)分開(kāi),從而防止IDA將它們組合起來(lái),發(fā)現(xiàn)完整的值并向目標(biāo)添加交叉引用。我們已經(jīng)改進(jìn)了我們的啟發(fā)式方法來(lái)處理這種分散的對(duì),并添加了一個(gè)選項(xiàng),這樣分析就可以根據(jù)具體的二進(jìn)制文件進(jìn)行調(diào)整,或多或少地具有攻擊性。
ARM MOVT

ARM MOVT
ARM MOVT

完整變更列表:
處理器模塊:
- ARC:增加了對(duì)ARCv2 EM指令集的支持
- ARM:增加了一個(gè)選項(xiàng),用于控制檢測(cè)由分散的MOVW+MOVT指令對(duì)加載的32位常量
- ARM:通過(guò)延遲的prolog設(shè)置改進(jìn)功能檢測(cè)
- MIPS:增加了對(duì)multi-GOT二進(jìn)制文件的支持($gp在二進(jìn)制文件的不同部分可以有不同的值)
- V850/RH850:不為PIC調(diào)用創(chuàng)建函數(shù)(到下一個(gè)地址)
- PPC:從e200核(NXP MPC57xx,ST SPC58xx)添加了許多新指令:
- 緩存旁路存儲(chǔ)(lbdcbx lhdcbx lwdcbx lwdcbx stbdcbx sthdcbx stwdcbx dsncb)
- e200z490(AIOP)說(shuō)明(e_lqw e_stqw e_ldwcb e_ldbrw e_byterevw等)
- MPU指令(mpure、mpuwe、mpusync)
- PC:增加了對(duì)prolog分析中endbr指令的支持
- PC:增加了WAITPKG指令的解碼(TPAUSE、UMONITOR和UMWAIT)
- PC:增加了TSX指令的解碼(XRESLDTRK和XSUSLDTRK)
- PC:增加指令的解碼,CLDEMOTE、ENCLV、SERIALIZE
- PC:增加直接存儲(chǔ)指令的解碼(MOVDIRI和MOVDIR64B)
- PC:增加了MCOMMIT和RDPRU指令的解碼(AMD Zen2)
文件格式:
- AMIGA:為AMIGA hunk文件加載程序?qū)崿F(xiàn)重新調(diào)整(由Vladimir Kononovich提供)
- ELF:忽略內(nèi)部編譯器符號(hào)gcc2_compiled
- ELF: pc: 處理用英特爾CET支持編譯的二進(jìn)制文件中的PLT存根(-fcf protection)
- ELF:接受在文件末尾運(yùn)行PT_LOAD的文件
- ELF: MIPS:實(shí)現(xiàn)的重新定位R_MIPS_GOT_PAGE, R_MIPS_GOT_OFST
- ELF: MIPS:添加對(duì)MIPS64復(fù)雜重定位的支持
- MACHO:允許用戶配置為新MACHO文件加載的類型庫(kù)。
- TDS:增加了對(duì)與exe文件連接的TDS文件的支持
安裝程序:
- 默認(rèn)為Python3;將Python3.8.2與Windows安裝程序捆綁在一起
調(diào)試器:
- 調(diào)試器:增加了對(duì)Bochs 2.6.10的支持
- 調(diào)試器:增加了對(duì)Zilog Z80處理器的調(diào)試支持
- 調(diào)試器:gdb:改進(jìn)多線程程序的調(diào)試
- 調(diào)試器:ios:將iPhone SE 2添加到已知設(shè)備列表/li>
- 調(diào)試器:PIN:支持使用PIN 3.13構(gòu)建pintool
- 調(diào)試器:xnu:改進(jìn)的ktrw支持。斷點(diǎn)/監(jiān)視點(diǎn)/寄存器現(xiàn)在可以使用“Corellium-ARM64”配置在ktrw中按預(yù)期工作。不需要其他手動(dòng)設(shè)置。
Kernel / Misc.:
- demangler:為VC++和GCC添加c++20 spaceship和co-await運(yùn)算符
- 內(nèi)核:將std::_Xlength_error()添加到不返回函數(shù)的列表中
- Lumina: Lumina功能可用于MIPS和PPC二進(jìn)制文件
FLIRT / TILS / IDS:
- TIL:引入了新的macosx類型庫(kù),直接從MacOSX.sdk/iPhoneOS.sdk(包括所有Objective-C和C++ Frameworks)。
- TIL:為XNU內(nèi)核和KEXT二進(jìn)制文件引入了新的類型庫(kù),直接從XNU源代碼構(gòu)建。
- FLIRT:為vc1424添加MFC簽名(Visual Studio 2019.4)
- FLIRT:為vc1425添加MFC簽名(Visual Studio 2019.5)
- FLIRT:ICL:為icl200 (Intel C++ 20.0)添加簽名
- FLIRT:ICL:為icl201 (Intel C++ 20.1)添加簽名
- FLIRT:VC:為vc1424添加簽名(Visual Studio 2019.4)
- FLIRT:VC:為vc1425添加簽名(Visual Studio 2019.5)
用戶界面:
- UI:許多IDA視圖現(xiàn)在提供了另一種類似樹的文件夾視圖
- UI:添加操作以搜索寄存器定義或寄存器使用(Shift+Alt+Up、Shift+Alt+Down)
- UI:現(xiàn)在可以從“函數(shù)調(diào)用”小部件添加、刪除、啟用和禁用斷點(diǎn)
- UI:“Breakpoints”選擇器現(xiàn)在也在列中報(bào)告狀態(tài)(啟用/禁用/未解析),而不是僅通過(guò)圖標(biāo)。
- UI:在會(huì)話中,IDA默認(rèn)情況下會(huì)記住并恢復(fù)對(duì)話框的位置和大?。赏ㄟ^(guò)RESTORE_DIALOGS_GEOMETRIES配置)
- UI:debugger:當(dāng)前線程現(xiàn)在以粗體顯示
- UI:debugger:在關(guān)于連接失敗的錯(cuò)誤消息中包括主機(jī)名和端口號(hào)
- UI:取消了同步類似視圖的限制(例如,現(xiàn)在可以同步2個(gè)idaviews)
- UI:顯示加載過(guò)程中加載的文件的文件名
- UI:“create struct from data”:在結(jié)構(gòu)內(nèi)部使用時(shí),忽略“field_xxx”等偽字段名
- UI:添加了get_synced_group(),以檢索有關(guān)同步的小部件的信息。