如何用 REA 完成 iOS 应用结构解剖:从哈希清单到 dylib 加载核验的完整实战
发布时间:2026/11/4 2:11:45 锦皓数字建站

如何用 REA 完成 iOS 应用结构解剖从哈希清单到 dylib 加载核验的完整实战【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea你拿到一个待审核的第三方 IPAApple 应用分发包格式要求在目标应用不启动的前提下回答三个问题包内到底装了什么组件、哪些会随主程序一起拉起、每条动态库加载最终命中哪个文件。REAReverse engineer anything with agents面向 AI Agent 的逆向工程工具把这条 iOS 应用结构解剖链路拆成四份静态证据产物全程不运行目标二进制。四份证据产物总览整条链路只产出四类记录各自独立、可回溯、可单独复核产物生成入口回答的问题哈希指纹清单inventory_artifact库存操作每个组件内容是否校验过、什么格式、有无可执行位bundle 结构图谱project-apple-application-graph应用根在哪、嵌套了哪些 bundle、各自扮演什么角色dylib 加载解析图trace-dylib-resolution每条动态库加载落到磁盘上哪个文件、结果如何字段与签名复核记录inspect_plist/inspect_signatureplist 字段真实取值、签名声明内容提示四份产物都只记录观察事实——路径、哈希、状态。语义解释不在其中任何结论都要能回指到某条具体记录。下文按怎么生成、怎么读、怎么核对逐一展开从结构图谱开始。把文件树投影成 bundle 结构图谱输入是库存操作产出的inventory_artifact证据本文第三道工序两者生成上互相咬合。投影命令读取证据 ID输出无执行execution-free的 bundleApple 平台应用容器把可执行文件、资源、配置打包在一起结构图谱rea project-apple-application-graph {inventory_evidence:[inventory_artifact Evidence]}输出里的bundles数组覆盖全部应用根及其名下嵌套 bundle每条给出三个锚点plist 位置info_plist_path、可执行候选executable_candidates、签名文件signing_paths。应用根的识别规则IPA 取每个Payload/Name.app.app目录就是被库存的目录本身目录、ZIP 或 DMG 里含应用时每个顶层.app其后紧跟Contents子目录算一个根。DMG 的清单路径分三段镜像文件、卷、.app例如My.dmg/MyVol/MyApp.app。若清单只有 DMG 自身的根身份而没有子卷内容结果标记partial并明说是否存在 bundle 未知。APK、ASAR 这类非 Apple 格式不被接受命令直接报输入错误。布局分三种macos-deep是标准 macOS 布局可执行文件放在Contents/下的Contents/MacOS/versioned-framework含Versions/目录每个真实版本子目录单独分析shallow两者都没有——根上有Info.plist即判定为ios平台应用。嵌套组件按路径惯例自动归类不必逐目录翻路径特征报告的角色排查价值*.appexapp-extension随主程序拉起的扩展进程*.xpcxpc-service跨进程通信服务XPCApple 平台 IPC 机制*.systemextensionsystem-extension系统级扩展组件Contents/Library/LoginItems/*.applogin-item开机自启的高频藏身处Contents/Library/LaunchServices/privileged_helpers特权助手SMJobBlessmacOS 提权机制注册位置*.dext、*.plugin、*.qlgeneratordriver-extension/plug-in驱动、插件等辅助组件边界提醒投影不读取 plist 语义。CFBundleExecutable、URL Scheme、权限描述等字段取值不在此步产出必须另行用inspect_plist读取。这一步还有三处限制需要明说._*与__MACOSX/这类 AppleDouble 元数据侧车文件会被记录为事实但不计入 bundle 角色与解剖组件基于路径推断的 JavaScript/原生配对假设结果序列化上限 2 MiB超出时bridge_candidate_coverage记录总对数、输出数与省略数整体覆盖度降为partial目录型库存只要目录名以.app结尾就按独立根处理而 DMG 子卷清单依赖原生 macOS 挂载适配器非 macOS 主机上拿不到子卷。追踪 dylib 加载命中路径结构图谱只回答有什么。每条 dylib 加载最终命中磁盘上哪个文件、顺序如何需要按 dyld系统动态库加载器的搜索规则做模拟。实现在 TypeScript 里解析 Mach-OApple 平台原生二进制格式与 FAT多架构容器头、加载命令不依赖 Apple 工具链Linux、Windows 上同样可跑。rea trace-dylib-resolution MyApp.app --json指定单个进程根与架构时加参数rea trace-dylib-resolution MyApp.app --root Contents/MacOS/MyApp --architecture arm64 --json同一个.app内主程序、XPC 服务、扩展、登录项、助手工具每个可执行文件各自构成进程根executable_path按该可执行文件所在目录单独计算。loader_path就地展开rpath链从加载者逐级向上游查找符号链接在根内跟随架构匹配允许兼容如x86_64h进程使用x86_64镜像。每条依赖的报告按顺序列出尝试过的搜索候选并给出每个候选的结果absent、architecture-missing、escapes-target等整条依赖的最终状态分四级状态判定口径resolved根内镜像确认可加载且没有更早的候选无法判定conditional根内镜像能解析但更早的根外搜索位置或未建模的环境输入可能改变最终加载的镜像unresolved根内所有候选均确定缺失或不可用undetermined根内没有候选可解析且部分候选位于根外或依赖运行环境verify:macos-bundle会把解析器输出与otool -l逐条比对并用DYLD_PRINT_LIBRARIES对照 dyld 实际加载的镜像来核对预测的加载顺序。想交叉核对时也可以直接用 Hopper 反汇编引擎打开目标读汇编。这一步在原生调查流程中的位置见 docs/native-investigation.md。边界提醒加载图是静态模型不观察目标设备的主机 CPU也证明不了设备会执行哪个切片conditional边上的发现只在该镜像确实加载时成立。生成哈希指纹清单这是前两份产物的地基。对 IPA、DMG磁盘镜像、ZIP 或.app目录执行一次库存操作得到inventory_artifact证据记录字段分四组root_sha256/root_format根文件的 SHA-256 摘要与容器格式如ipa、dmgnodes逐组件记录格式、架构、可执行位、内容状态occurrences逐出现条目报告逻辑路径、声明大小、哈希校验状态如verifiedlimitations核实不了的条目会显式列在这里清单不悄悄丢弃任何内容。某文件字节读不出来时如加密的归档成员它带着原始路径、加密标志与空内容身份进入unavailable_components整体覆盖度随之降为partial。因为这份记录只登记观察到的事实所以后续所有结论都必须能回指到某条具体哈希。复核 plist 字段与签名声明前三份产物都建立在路径 哈希之上。凡涉及字段取值或签名声明都要用专门工具补一轮核实。字段取值对 bundle 的info_plist_path执行rea inspect-plist pathCFBundleExecutable、标识符、SMPrivilegedExecutables、URL Scheme、权限描述文本都从这里读出。签名声明则用inspect_signature逐条核对executable_candidates。注意加载图给出的发现如earlier-rpath-candidate-absent只是指出更早的搜索位置可能存在兼容镜像不构成 dyld 将加载哪个镜像的证据签名元数据仍走inspect_signature。全局边界四份产物都是观察记录。落笔写应用声明了某权限签名含某项权限声明时出处必须是inspect_plist/inspect_signature的结果而不是投影输出。投影是执行无不读 plist、不解析签名、不主张观察到运行时调用框架提示只匹配完整路径段React.framework、Flutter.framework等属于库存派生的提示不是观察到的加载。首次使用先按 docs/installation.md 完成安装与 Provider 配置完整语义与状态表在 docs/apple-application-analysis.md。步骤产物核对方式库存inventory_artifact证据occurrences哈希状态对照limitations条目结构投影bundle 结构图谱bundles 角色用inspect_plist反查info_plist_path加载追踪dylib 解析图依赖边 四级状态verify:macos-bundle对照otool -l与实测加载字段复核plist 取值与签名声明记录回扫正文中每条语义结论逐一确认【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。