上手体验 IDA 9.5 beta
利刃信安
2026年10月4日 04:00
北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
以下文章来源于非尝咸鱼贩
,作者0xcc
非尝咸鱼贩
.
临渊羡鱼,不如在家咸鱼
IDA%20前两天发了%20IDA%209.5%20的%20beta,今天周末顺手试用一下。
https://hex-rays.com/blog/ida-9.5-beta-is-available
https://docs.hex-rays.com/release-notes/9\_5beta
具体更新日志内容可以用%20AI%20查看总结原文。下面是一些上手体验。
扩展菜单终于提升了优先级,被单独拿出来放到顶层了。
在更新日志里也提到了%20Assist%20和官方%20MCP,还需要单独安装一下才会启用。
在%20IDA%209.4%20的更新当中加入了对%20iOS%20dyld\_shared\_cache%20的界面优化,专门在界面右侧提供了一个文件树结构来动态加载所需的模块列表。
这个%20UI%20和工作流的设计目前被应用到了%20kernelcache%20和%20DriverKit%20的分析上。
驱动按照树形结构整理好,双击载入模块。
9.4%20和以下版本中%20kernelcache%20并不区分具体模块:
9.5%20则干净了很多
在%20macOS%20/%20iOS%2027%20发布之前就有人注意到新的系统中,可执行文件的切片(Macho%20Slice)多了一个新的%20CPU%20类型:arm64e.x1。
不久前发布的%20iPhone%2018%20所使用的%20A20%20芯片和%20M6%20Mac%20都采用了用上了%20Armv9%20扩展指令集。其中一个对普通用户不起眼,但对内存安全有影响的特性就是对%20FEAT\_CPA(Checked%20Pointer%20Arithmetic,检查指针算术)的支持。
如下是来自%20A20%20内核的一段代码:
请注意这个 ADDPT 指令。在%20IDA%209.4%20和以下版本中不被支持:
在%20ARMv9%20架构中,FEAT\_CPA(Checked%20Pointer%20Arithmetic,检查指针算术)可以让开发者不必修改%20C%20代码,而仅在工具链中针对新架构启用编译选项获得更强的保护。ADDPT 和 SUBPT 指令可以在指针运算时检查整数溢出和越界访问,结合目前已有的%20PAC(控制流完整性保护)和%20MTE(内存标签扩展)等特性,协同提升内存安全性。
关于如何在编译器中启用%20FEAT\_CPA,可以参考%20Apple%20官方文档:
https://developer.apple.com/documentation/security/preparing-your-app-to-work-with-pointer-authentication?language=objc
除了%20FEAT\_CPA%20之外,Armv9%20还引入了%20FEAT\_PAuth\_LR(Pointer%20Authentication%20for%20Return%20Address,返回地址保护),是对%20PAC%20的进一步增强。
篇幅所限就不详细展开说,可以阅读这篇文章:
Strengthen%20return%20address%20protection%20using%20ARM64e.x1%20with%20PAuth\_LR%20https://blakecrosley.com/blog/arm64e-x1-checked-pointer-arithmetic
IDA%20Pro%20其实很早之前就支持%20smali%20了,这个时候才加上%20Java%20伪代码反编译。晚到总比不到好。
说到官方的%20IDA%20MCP%20就顺便扯几句没营养的。
以前头痛欲裂看几天都未必搞得定的二进制,ai%20几下子就蹬完了,谁不爱呢。今年的%20Flare-On%20挑战赛已经没有人味儿了,一个多小时%20ai%20全部解完。不过具体到用什么方案就百花齐放了。在%20vibe%20产品太多,用户反而不够用的今天,这个选题快被社区玩出花了。软件真正实现了“用完即走”,想要什么功能花点%20token%20直接现写。
以前社区比较有影响力的两个项目:
- mrexodia/ida-pro-mcp
- blacktop/ida-mcp-rs
社区版的%20ida-pro-mcp%20主要以%20Python%20实现,在%20MCP%20协议上暴露了许多工具,如 decompile、disasm、xrefs_to、list_funcs、rename、set_comments、set_type。%20Rust%20版的路线也差不多,目前默认暴露%2075%20个工具,并允许按类别裁剪。在此之上,为了覆盖工具没有实现的功能,他们都提供了直接执行%20IDAPython%20代码的接口。
值得注意的是新的这个%20IDA%20官方版的重要维护人就是%20mrexodia。
这个官方的插件则只暴露 open_database、execute_python、reference、list_databases、 save_database、close_database 六个工具;反编译、找交叉引用、筛字符串乃至修改数据库,都让模型临时写%20Python%20完成。reference 则提供了查文档的能力。
确实由于模型能力的进化,很多曾经需要封装的技能,模型早就背得滚瓜烂熟了,直接生成动态脚本比封装工具更灵活。
在没有官方工具的时候我体验了以上两个社区的工具,最后还是决定重新%20vibe%20一个。
Rust%20版是纯%20headless,可以同时管理多个数据库实例。而很多时候我的工作流是顺手在%20IDA%20界面里打开一个数据库,然后想起来要用%20AI%20干点什么。这样只能打开两份数据库副本。
而那个%20Python%20社区版%20MCP%20塞了一堆没什么用的工具,甚至还有什么文件%20hash%20计算。这个需求一行%20bash%20就搞定了,还放%20MCP%20里占用上下文。而且我很不喜欢这个每开一个%20idb%20就要多启动一个%20http%20端口的设计。
我自己的设计路线就略有不同。一个%20python%20的%20cli%20暴力接口给%20harness,同时提供一个%20daemon%20模式作为消息路由。在%20IDA%20里则是主流的%20python%20插件形式,但是不直接启动%20MCP%20服务,而是通过%20Unix%20socket%20反向连接到%20daemon%20服务上。
如果%20cli%20还想在%20headless%20模式下打开新的%20idb,就走%20IDA%20Domain%20API。
这样活动的%20IDA%20图形界面还是可以随时上去人工查看状态,虽然可能会被模型的请求打断。倒是解决了端口满天飞和%20headless%20模式查看不了任何信息的问题。
但是既然都说到%20AI%20反编译了,可以更大胆点。
现在模型的能力强的令人咋舌,以至于反编译的质量稍微差点也不怎么影响出活。哪怕是没有反编译器的情况下,模型现在%20objdump%20用得飞起,直接看反汇编,只是这样比较费%20token%20和时间罢了。
由于我自用的场景基本上就局限在%20ARM%20指令集,所以用一堆开源库糊一个完全不依赖%20IDA%20的反编译器也很快。
除了传统的%20capstone%20搭配%20loader%20出汇编代码,还可以看看这个基于%20ghidra%20移植而来的反编译引擎%20kuna:
https://github.com/noelo-Lab/kuna
这甚至解决了一个%20IDA%20的短板。比如反编译超大的二进制文件,dyld\_shared\_cache%20(现在其实还好)或者%20AppStore%20里解密出来的%20ipa,载入一次就要很久。
而一般的%20app%20如果没有专门针对瘦身过,是会携带很多运行时信息,对%20llm%20很友好。IDA%20刚载入数据库会消耗很长时间,但如果只是写一个工具仅仅提供指到哪里反编译哪里,相当于跳过全局分析。加上%20ARM%20指令有一个特点就是对齐,这上面可以加速的技巧就太多了。
牺牲准确性和反编译效果,那边自动分析还没跑完,已经出活了。
今天的自吹就到这
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论