我要提问
ARTICLE DETAIL

资讯详情

前沿编程新知与开发实战干货的深度解读。

如何用 REA 完成 iOS 应用结构解剖:从 IPA 库存到 Mach-O 加载追踪的完整实战指南

如何用 REA 完成 iOS 应用结构解剖:从 IPA 库存到 Mach-O 加载追踪的完整实战指南 如何用 REA 完成 iOS 应用结构解剖从 IPA 库存到 Mach-O 加载追踪的完整实战指南【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea你手里只有一个 IPA 文件解开它得到的文件树回答不了三个问题内容是否被动过、每个文件属于哪个应用容器、随应用启动的组件里藏着什么。REAReverse engineer anything with agents面向 AI Agent 的逆向工程工具把这条链路走成三步inspect-artifact建立带哈希指纹的认证库存 →project-apple-application-graph把文件树投影成 bundlemacOS/iOS 上把可执行文件、资源、配置打包在一起的应用容器结构图谱 →trace-dylib-resolution模拟 dyldmacOS 动态链接加载器解析每条动态库加载。全程静态不运行目标应用的一行代码也不依赖 Apple 工具。本文按三步实操走完全流程每个结论都能回指到某条命令的输出字段。这条链路做什么以及它明确不做什么这条链路覆盖 Apple 产物的清点 → 结构 → 加载三阶段输出全是观察事实不解释语义。能力清单认证库存对 IPA、DMG、ZIP 或.app目录生成inventory_artifact证据记录含根哈希、每个组件的格式与可执行位结构投影识别每个应用根与嵌套 bundle报告布局layout、info_plist_path、可执行候选与签名路径角色归类按路径约定自动把*.appex、*.xpc、登录项、特权助手等分类成可读清单dyld 加载模拟用纯 TypeScript 解析 Mach-O / FAT 头与加载命令模拟executable_path、loader_path、rpath搜索链非 macOS 系统上也能跑。明确不做的事不解析 plist 字段或 CMS 签名语义也不声称观察到任何运行时调用数据缺失不藏掖DMG 只有根身份、没有子卷清单时投影标记为partial并写明 bundle 缺失状态未知加密归档成员列进unavailable_components覆盖度同样降级为partial。 动手前的术语对齐后文统一使用下列术语含义集中解释一次。术语中文含义在哪个环节会遇到IPAApple 应用分发封装格式本质是 ZIP步骤 1 的库存输入inventory_artifact带哈希清单的认证证据记录步骤 1 产出步骤 2 输入bundle应用容器含可执行文件、资源与配置步骤 2 投影的主对象layoutbundle 结构分类macos-deep/versioned-framework/shallow步骤 2 输出的bundles段process root进程根bundle 内每个可执行文件都是独立进程根拥有各自的executable_path步骤 3 追踪的起点dyldmacOS/iOS 动态链接加载器步骤 3 模拟的解析规则来源rpathMach-O 加载命令里的相对搜索路径条目步骤 3 候选路径finding追踪输出中的派生观察不是实测事实步骤 3 输出的findings段分工对照库存回答有什么投影回答在哪、扮演什么角色追踪回答每条加载最终命中哪个文件。三段各自独立结论互不替代。 主流程实操三步走完全程步骤 1建立认证库存目标把文件树变成一份带哈希指纹的事实清单。rea inspect-artifact MyApp.ipa --detail summary --evidence_output inventory.json --json输出关键字段root_sha256/root_format根文件的哈希指纹与格式nodes/occurrences每个组件的artifact_kind、artifact_format、可执行权限与哈希校验状态limitations无法核实的条目写在这里而不是被悄悄丢掉。提示这份清单只记录观察到的事实不解释任何 plist 或签名语义。后面每个结构结论都能回指到清单里某条具体路径与哈希。这步之后你手里多了一份inventory_artifactEvidence 记录可直接作为下一步输入。步骤 2把文件树投影成 bundle 结构图谱目标得到应用根识别、嵌套 bundle 解剖与角色归类。rea project-apple-application-graph {inventory_evidence:[inventory_artifact Evidence]}输出关键字段应用根IPA 里每个Payload/Name.app各是一个根.app目录本身就是根目录/ZIP/DMG 取每个最外层含Contents/的Name.appAPK、ASAR 等格式直接拒为输入错误bundles每个根及其嵌套 bundle逐个给出parent_path、layout、info_plist_path、executable_candidates、signing_paths角色字段login-item、xpc-service、app-extension、privileged_helpersContents/Library/LaunchServices/下的文件、launchd_plistsLaunchAgents为 agent 域、LaunchDaemons为 daemon 域platforms含Contents/的根记macos根目录有Info.plist的浅层根记ios。这步之后你手里多了一份这个应用还装了谁、它们是什么角色的清单——登录项与特权助手这类提权点高频藏身处直接可见。步骤 3追踪 Mach-O 动态库的加载命中目标静态回答每条 dylib 加载最终命中哪个文件。rea trace-dylib-resolution MyApp.app --json需要限定范围时追加--root Contents/MacOS/MyApp --architecture arm64。bundle 内每个可执行文件主程序、XPC 服务、扩展、登录项、助手都是独立进程根。输出关键字段每条依赖边列出所有尝试过的候选路径及结果resolved、absent、architecture-missing、outside-target、escapes-target等resolution.status这条边的四级终局判定判读见下一节findings派生观察列表如required-load-unresolved、earlier-rpath-candidate-absent。这步之后你手里多了一张每个可执行文件的静态加载解析图外加一份未决项清单可以拿去和反汇编引擎核对了。状态判定与判读规则每条依赖边的resolution.status只有四种取值状态含义resolved根内有一个镜像成功加载且更早的候选都可判定conditional根内镜像可能加载但更早的根外候选或未建模环境输入可能改变结果unresolved根内所有候选确定缺失或不可用undetermined根内无候选可解析且部分候选在根外或依赖运行环境判读规则resolved可直接引用它指向根内一个具体候选文件可回指到该边的候选路径列表conditional的边仍会被继续追踪其下方所有边带loader_conditional: true引用其结论时必须带仅当该条件镜像加载的前提。候选级结果如absent、architecture-missing描述的是单次搜索路径边的终局判定以resolution.status为准两者不要混用。findings是派生结论懒加载依赖未解析不算启动失败earlier-rpath-candidate-absent不能证明 dyld 会加载哪个镜像——签名相关的疑问交给inspect_signature。哪些结论要留一手边界与二次核实清单涉及语义的结论必须用专门工具复核一次不能直接引用投影输出应用声明了某权限 / URL Scheme /CFBundleExecutable——对 bundle 的info_plist_path跑rea inspect-plist path复核投影不读 plist签名包含某 entitlement / 证书声明——对executable_candidates使用inspect_signature投影不解析 CMS桥接假设JavaScript ↔ 原生配对序列化上限 2 MiB超出时bridge_candidate_coverage报告省略数量整体覆盖度降级为partial结论只覆盖已发出的部分AppleDouble 侧车文件._*、__MACOSX/是清单事实但自动排除在 bundle 角色与解剖组件之外别把它们当成独立组件DMG 子卷清单依赖原生 macOS 挂载适配器只有根身份时投影为partial清单里没有不等于不存在。边界提醒整套链路输出的是观察事实不是语义解释。任何应用声明了某权限签名包含某 entitlement的表述都必须回到inspect_plist/inspect_signature的结果上复核后才能写入结论。速查表命令 / 工具输入得到什么rea inspect-artifact产出inventory_artifactIPA / DMG / ZIP /.app目录带哈希指纹、格式与可执行位的证据记录rea project-apple-application-graphinventory_artifact证据应用根识别、bundles解剖、角色归类、桥接假设rea trace-dylib-resolution.app或 Mach-O 可执行文件每条边的候选路径、四级判定、findings清单rea inspect-plist/inspect_signatureinfo_plist_path/ 可执行候选plist 字段取值与代码签名声明语义细节与状态表以仓库内 Apple 应用分析文档 为准投影实现位于 AppleApplicationService.ts追踪在原生调查流程中的位置见 native-investigation.md。首次使用前按 安装文档 完成安装与 Provider 配置npx rea-agents setup。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表