更正:iphone6,这里的 6 是代号,你实际上分析的是 iPhone5s 中的 iBoot。
环境:
macOS:v10.13.1
IDA:v7.0
Firmware:iOS-v11.0-15A372-iPhone6,1
iBoot:iBoot.iphone6.RELEASE.bin
步骤:
1. 将 iBoot.iphone6.RELEASE.bin 拖到 IDA64(就是图标上有 64 的那个) 中。
2. 将 “Processor type”改成“ARM Little-endian [ARM]”,点击“OK”。
3. IDA 会询问“Do you want to change the processor type to ARM?”,点击 “YES”。
4. 接着,IDA 会弹出“Disassembly memory organization”,不需要修改,点击“OK”。
5. 接着,IDA 会弹出“Do you want to disassemble it as 64-bit code?”,点击“YES”。
6. 这样,iBoot 以 Data 的形式被加载到 0 地址,现在我们需要做 Rebase。
7. 在 “ROM:0000000000000000” 处,按 “c” 键,将代码数据转换为代码。
8. 可以看到:“ROM:0000000000000008 LDR X1, =0x830000000”,这样确定基址为 0x830000000。
9. 改基址,Edit -> Segments -> Rebase program...,在弹出的对话框中将基址改为:0x830000000。
10. 接下来要让 IDA 重新分析 iBoot。
11. 全选:Edit -> Select all。
12. 按 “c”,将数据转换成代码。
13. 接着,IDA 会弹出一个对话框,选择“Analyze”。
14. IDA 又会弹出一个对话框让你确认,选择 “YES”。
15. Done,最终的效果如下图: