
从一份 IPA 到可验证的证据链REA 的 iOS 应用结构解剖流水线【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/reaREA 是面向 AI Agent 的逆向工程工具iOS 应用结构解剖链路基于单个 IPA 文件即可完成 IPA 逆向取证先生成带哈希指纹的认证清单再投影 bundle 结构图谱最后做 Mach-O 动态库加载的静态追踪全程不运行目标应用的一行代码。工具定位静态 IPA 逆向的四级流水线REAReverse engineer anything with agents的 iOS 应用结构解剖采用每一级输出作为下一级输入的四级流水线全部环节均为静态分析库存Inventory——遍历 IPA 内部全部文件记录哈希指纹与格式产出inventory_artifact证据投影Projection——把文件树投影为 bundle 结构图谱给出每个嵌套组件的布局、角色与解剖信息追踪Tracking——模拟 dyldApple 动态链接器解析规则算出每条动态库加载实际命中的文件核实Verify——用专门工具复核 plist 字段与签名声明。整条流水线不执行目标应用动态库追踪基于纯 TypeScript 解析 Mach-O 头因此可在 Linux 与 CI 环境运行。生成哈希认证清单解包后的 IPA 文件树只有路径信息哪些文件被改动过、各自属于哪个应用容器单靠目录结构回答不了。所以 IPA 逆向的第一步是生成一份带哈希指纹的 IPA 认证清单。对 IPA、DMG、ZIP 或.app目录执行库存操作后REA 产出一条inventory_artifact证据记录关键字段如下root_sha256/root_format根文件的哈希指纹与格式ipa、dmg等nodes各组件的格式、架构、可执行位与内容状态occurrences每条出现的逻辑路径、声明大小与哈希校验状态如verifiedlimitations无法核实的条目写入该字段而不是被悄悄丢掉。这份清单只记录观察到的事实不解释 plist 或签名语义——后续每个结构结论都能回指到其中某条具体的哈希。投影 bundle 结构图谱这一环节即 bundle 结构投影bundle 是 Apple 平台上把可执行文件、资源与配置打包在一起的应用容器把清单交给投影命令文件树变为带精确路径、内容哈希、检测格式、bundle 解剖信息以及基于路径的桥接假设JavaScript ↔ 原生配对的应用结构图。rea project-apple-application-graph {inventory_evidence:[inventory_artifact Evidence]}实现位于 src/application/apple/AppleApplicationService.ts工具契约见 src/contracts/applicationToolContracts.ts。投影过程无执行每个 bundle 均报告info_plist_path、executable_candidates、signing_paths等字段。APK、ASAR 等其他格式会被直接拒为输入错误。应用根识别规则分三类IPA每个Payload/Name.app各是一个应用根.app目录被库存的目录本身即应用根含应用的目录 / ZIP / DMG每个最外层Name.app后接Contents/。DMG 的清单路径形如image.dmg/Volume/Name.app若只有 DMG 根身份、没有子卷清单投影标记为partial并注明缺失状态未知。布局分三种含Contents/的根归为macos-deep可执行文件在Contents/MacOS/含Versions/的归为versioned-framework按每个真实Versions/version/目录分析两者皆无的归为shallow典型 iOS 应用形态凭Info.plist判定为ios平台。 角色归类找出隐藏启动项与提权入口随应用启动的组件与提权点无需逐目录翻查REA 按路径惯例自动把嵌套组件归类为角色列表app-extension 与登录项排查直接查表即可。路径模式判定角色Contents/Library/LaunchServices/特权助手privileged helperContents/Library/LoginItems/登录项login-item*.appex应用扩展app-extension*.xpcXPC 服务*.frameworkframework*.systemextension系统扩展system-extension登录项与特权助手是权限提升点的高频藏身处排查这个应用还悄悄装了什么时优先核对这两类角色应用扩展、XPC 服务与系统扩展三类角色则用于枚举包内随应用启动的全部原生组件。追踪 dylib 加载命中路径清单回答有什么而每条 dylib 加载最终命中哪个文件靠模拟 dyld 解析规则完成即 dylib 加载分析rea trace-dylib-resolution MyApp.app --json该环节用纯 TypeScript 解析 Mach-O / FAT 头与加载命令不依赖 Apple 工具非 macOS 系统也能运行。模拟的搜索链覆盖executable_path、loader_path、rpath跟随符号链接并做分级架构兼容x86_64h进程可加载x86_64。bundle 内每个可执行文件主程序、XPC 服务、扩展、登录项、助手都是独立进程根各拥有自己的executable_path。每条依赖边会列出全部尝试过的候选路径及结果resolved/absent/architecture-missing/escapes-target等并给出四级判定resolution.status判定含义resolved根内有一个镜像成功加载conditional根内可命中文件但若运行系统上存在更早搜索的根外候选则其优先unresolved根内候选确定全部缺失或不可用undetermined存在根外或依赖运行环境的候选无法定论对 IPA 内的原生二进制可进一步用 Hopper 等反汇编引擎查看实际汇编核对清单预测的加载顺序trace_dylib_resolution在原生调查流程中的位置见 docs/native-investigation.md。证据边界涉及 plist 与签名的结论要二次核实上文结构结论全部基于路径 哈希凡涉及 plist 字段或签名声明须用专门工具复核投影不读 plist 语义。CFBundleExecutable、URL Scheme、权限描述要对 bundle 的info_plist_path使用inspect_plist读取签名声明用inspect_signature核查可执行候选。AppleDouble 侧车文件._*、__MACOSX/会被识别为清单事实但自动排除在 bundle 角色与解剖组件之外。候选截断是透明的桥接假设最多序列化 2 MiB超出时结果携带bridge_candidate_coverage报告省略数量覆盖度降级为partial。目录型库存即使名为.app也视为独立根DMG 子卷清单依赖原生 macOS 挂载适配器。这条链路输出的是观察事实不是语义解释——应用声明了某权限签名包含某 entitlement这类表述必须回到inspect_plist/inspect_signature的结果上复核。 命令速查命令 / 工具输入输出库存操作产出inventory_artifactIPA / DMG / ZIP /.app目录含哈希指纹、格式与可执行位的证据记录rea project-apple-application-graphinventory_artifact证据应用根识别、bundles解剖与桥接假设rea trace-dylib-resolution.app或 Mach-O 可执行文件每条依赖边的 dyld 解析图与未决项inspect_plist/inspect_signatureinfo_plist_path/ 可执行候选plist 字段取值与签名声明完整的语义与状态表见 docs/apple-application-analysis.md首次使用前的安装与 Provider 配置见 docs/installation.md。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考