macOS安装ida的一系列问题

IDA pro 9.0泄漏之后,本一直没有去关注,因为我有Ghidra
但是奈何最近要跟踪一个大工程,用Ghidra分析的速度实在是头大的很,于是下载ida开始折腾。

首先crack之后,patch替换了文件,运行会crash,需要给patch后的文件签名

sudo codesign --force --deep --sign - /Applications/IDA\ Professional\ 9.0.app/Contents/MacOS/libida.dylib
sudo codesign --force --deep --sign - /Applications/IDA\ Professional\ 9.0.app/Contents/MacOS/libida64.dylib

再运行,运行报错"Oops! internal error 30016 occurred."

这个问题来自于arm_mac_user64.dylib,这是一个本地debugger插件,如果不需要的话删掉它无影响:

rm /Applications/IDA\ Professional\ 9.0.app/Contents/MacOS/plugins/arm_mac_user64.dylib

再次运行,运行成功

但是,思来想去得把arm_mac_user64.dylib的问题解决啊,于是在互联网上狗刨,终于刨到了这篇文章

由于错误都一样,直接搜索立即数30016,找到了两处:



通过反编译代码对比得知应该是要修改第二处的代码

本来以为问题轻轻松松解决,但是,文中的指令nop nop指令反编译之后结构变得完全看不懂了。于是乎,开始魔改

这里我选择对0x232ac开始的指令进行修改,cmp使用的是w8w8的值我管不着,但x19程序前面都用了,总不可能还等于0吧。于是乎

原始的:
1F 01 00 71 2D 01 00 54
修改为:
7F 02 00 F1 20 01 00 54
即:
cmp w8, #0
b.le #0x28
修改为:
cmp x19, #0
b.eq #0x28

再次运行,查看debugger
image

这么修改不知道会不会存在什么问题,水平有限,只能先这样用着:-)
结尾提供我修改好的,担心我乱改了的朋友可以用对比工具进行对比。这里,我没有对该文件进行签名,下载替换之后需要运行

sudo codesign --force --deep --sign - /Applications/IDA\ Professional\ 9.0.app/Contents/MacOS/plugins/arm_mac_user64.dylib

arm_mac_user64.dylib (237.6 KB)

又发现存在"Oops! internal error 30777 occurred."
盲猜又是哪个插件导致的,看了一些插件找到swift64.dylib.


反编译得到

跟到LABEL_55
image
30016类似,不知为何要(tinfo_size & 1) == 0,与30016做类似处理,应该就OK了