如何完整解析 iOS 应用结构与动态库加载链路【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea交付物常常只有一个 IPAApple 应用分发封装格式里面有什么、哪些组件会随应用启动、每条动态库加载最终命中哪个文件REA 是一款面向 AI Agent 的逆向工程工具能把 IPA 库存、bundle 结构投影、Mach-O 动态库加载追踪三段链路全程静态跑通不运行目标应用的一行代码。核心概念解包 IPA 后你拿到的文件树只记录路径不记录完整性所以 REA 的设计是证据先行先对 IPA、DMG、ZIP 或.app目录做库存操作产出一条带哈希指纹的inventory_artifact证据记录再把这条证据投影成应用结构图。因为投影是无执行的静态解析不触碰 plist 与签名语义所以每个结论都能回指到清单里某条具体的 SHA-256 哈希也不会产生运行应用的副作用。加载链路部分则回答dylib 依赖最终命中哪个文件。REA 用纯 TypeScript 解析 Mach-O 与 FAT 头及加载命令静态模拟 dyldmacOS 动态链接加载器的搜索规则executable_path、loader_path、rpath搜索链、符号链接跟随、分级架构兼容。因为不依赖 Apple 工具、不执行任何代码所以 Linux 上也能跑。实现位于 AppleApplicationService.ts工具契约定义在 applicationToolContracts.ts。工作流三步按执行顺序推进前一步的输出是后一步的输入。1. 清单构建rea inspect-artifact MyApp.ipa --json这条命令为 IPA 内每个组件建立格式、架构、可执行位与内容状态的记录。输出里最该看两个字段root_sha256是根文件指纹用来确认分析对象版本limitations列出无法核实的条目未被静默丢弃。2. 结构投影rea project-apple-application-graph {inventory_evidence:[inventory_artifact Evidence]}把上一步的证据回传文件树变成带精确路径、内容哈希与 bundle 解剖信息的结构图。最该看bundles部分每个应用根与嵌套组件的info_plist_path、executable_candidates、signing_paths三件套。应用根按规则识别IPA 中每个Payload/Name.app各是一个根含应用的目录、ZIP、DMG 取每个最外层Name.app。3. 加载链路追踪rea trace-dylib-resolution MyApp.app --json这条命令为每条依赖边列出所有尝试过的候选路径及其结果。bundle 内每个可执行文件——主程序、XPC 服务、扩展、登录项、助手——都是独立进程根拥有各自的executable_path你直接读哪条候选是缺失的即可。输出解读下面两张表分别回答布局如何识别与加载状态如何读。layout 取值识别规则典型形态macos-deep含Contents/macOS 应用可执行文件在Contents/MacOS/versioned-framework含Versions/framework按真实版本目录分析shallow均不含典型 iOS 应用凭Info.plist判ios嵌套组件还会按路径惯例自动归类角色*.appex是应用扩展*.xpc是 XPC 服务*.framework是框架*.systemextension是系统扩展Contents/Library/LoginItems/是登录项Contents/Library/LaunchServices/是特权助手。因为登录项和特权助手是提权入口的高频藏身处所以排查应用还悄悄装了什么时优先看这两类角色。加载状态含义resolved根内有一个镜像成功加载conditional根内可解析但更早的根外候选可能优先unresolved根内所有候选确定缺失或不可用undetermined候选位于根外或依赖运行环境无法定论候选路径级别的结论还包括absent不存在、architecture-missing缺对应架构、escapes-target越出分析根等它们只描述单个搜索路径最终判定看边的resolution.status。边界与核实⚠️ 这套链路输出的是观察事实不是语义解释涉及声明性内容的结论必须二次核实。投影不读 plist 语义。CFBundleExecutable、URL Scheme、权限描述等字段要对 bundle 的info_plist_path用inspect_plist复核签名声明用inspect_signature核查可执行候选。其余已知边界AppleDouble 侧车文件._*、__MACOSX/是清单事实但自动排除在 bundle 角色与解剖组件之外桥接假设最多序列化 2 MiB超出时覆盖度降级为partial省略数量记在bridge_candidate_coverageDMG 子卷清单依赖 macOS 原生挂载适配器若只有 DMG 根身份投影标记partial且缺失状态未知APK、ASAR 等其他格式会被直接拒为输入错误。速查表命令 / 工具输入产出rea inspect-artifactIPA / DMG / ZIP /.app目录带哈希指纹的库存证据rea project-apple-application-graphinventory_artifact证据应用根、bundle 解剖、桥接假设rea trace-dylib-resolution.app或 Mach-O 可执行dyld 解析图与未决发现inspect_plist/inspect_signatureinfo_plist_path/ 可执行候选plist 取值与签名声明完整字段语义与状态表见 docs/apple-application-analysis.md首次使用请先阅读 docs/installation.md 完成安装与 Provider 配置。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考