如何把来路可疑的 iOS 安装包变成一份可审计清单【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea做 iOS 应用逆向不一定从反汇编开始。REAReverse engineer anything with agents是一款面向 AI Agent 的开源逆向工具它不运行应用就能静态核验 IPAiOS 应用安装包的结构逐文件建立哈希清单、一条命令投影 bundle 结构、再继续追到 Mach-OApple 系统的原生可执行文件格式二进制的动态库加载逻辑。全程不需要运行应用也不需要越狱。️ 解包之后你拿到什么一棵文件树和三个答不出的问题把 IPA 解开你得到一棵文件树Payload里一个.app目录里面是Info.plist、Frameworks、资源文件。但树本身答不出三个问题这个包动过没有事后如何证明某个文件属于哪个.app有哪些嵌套的 Framework、XPC 服务、登录项会跟着应用一起启动没有基线时这个文件看着正常只能算猜测。REA 的路径是反着走的先清点再出图最后逐层放大加载逻辑。三件事全是静态完成。 逆向的第一份成果一份已认证的库存清单对 IPA、DMGmacOS 磁盘镜像或 ZIP 运行 REA 的制品检查得到一条inventory_artifact证据记录。它和 unzip 的输出不一样不是路径列表而是逐条事实根文件的哈希指纹与格式root_sha256、root_format每个组件的格式、架构、可执行位与内容状态每个逻辑出现occurrence各自的声明大小与哈希校验状态limitations字段如实记录无法核实的内容而不是静默略过。它像一张仓库盘点单每件货物都有编号、有指纹、有签收状态。这里有个容易忽略的点清单本身就是逆向的第一份成果。你还没看一行反汇编目标已经从不敢碰的目录变成可以争辩的一组事实——后面所有结论都要能回溯到清单里的某一条编号。实现入口在 src/application/apple/语义与状态表见 docs/apple-application-analysis.md。️ 一条命令出一张图bundle 结构投影把清单证据交给投影命令对每个 IPA / DMG /.app做无执行投影精确路径、内容哈希、检测到的格式、bundle 解剖以及基于路径推断的 JavaScript ↔ 原生配对假设。命令只有一个参数inventory_evidence含义是基于哪条已认证证据做投影rea project-apple-application-graph {inventory_evidence:[inventory_artifact Evidence]}先看这个包有几个应用根库存形态REA 如何认定应用根IPAPayload下每个Name.app本身是.app的目录该目录自身含应用的目录 / ZIP / DMG每个最外层、后跟Contents/的Name.app怎么读 bundle 的角色bundles列出每个应用根下的全部嵌套 bundle逐个报告info_plist_path、executable_candidates可执行候选和signing_paths签名路径。布局分三类macos-deep含Contents/可执行文件在Contents/MacOS/、versioned-framework含Versions/按每个真实版本目录分析、shallow两者皆无典型 iOS 应用形态凭Info.plist判定为ios平台。角色判定全部基于路径惯例*.appex是应用扩展、*.xpc是 XPC 服务、*.systemextension是系统扩展Contents/Library/LoginItems/与Contents/Library/LaunchServices/则分别是登录项和特权助手的位置。这是找隐藏启动点最省力的线索。另外._*与__MACOSX/这类 AppleDouble 侧车文件会被记为库存事实但排除在角色判定之外。 继续追每条 dylib 加载落到哪个文件清单回答有什么这一步回答每个 Mach-O 的 dylib动态库加载命令到底命中哪个文件。rea trace-dylib-resolution MyApp.app --json rea trace-dylib-resolution MyApp.app --root Contents/MacOS/MyApp --architecture arm64解析是纯 TypeScript 读 Mach-O / FAT 头与加载命令完成的不依赖 Apple 工具、不执行二进制在非 macOS 系统上也能跑。--root收窄到指定可执行文件——bundle 里每个可执行文件主程序、XPC 服务、扩展、登录项、助手都是独立进程根各有各的executable_path--architecture固定架构。解析模拟的是 dyld动态链接器的搜索链executable_path指向进程自身目录loader_path指向持有该命令的镜像所在目录rpath逐级上溯到进程根逐个尝试。符号链接会跟随..逃逸标记为escapes-target架构降级也按 dyld 规则处理x86_64h进程可加载x86_64。每条依赖边列出所有试过的候选路径及其结果最终给出四级判定判定含义resolved根内命中且没有更早的候选不可判定conditional根内命中但更早的根外候选如/usr/lib/swift若在运行系统存在则优先unresolved根内所有候选明确缺失或不可用undetermined根内无候选可解析部分依赖运行环境想看实际汇编、核对预测的加载顺序可接 Hopper 等反汇编引擎继续验证这一步在原生调查流程中的位置见 docs/native-investigation.md。⚠️ 没做什么静态清单的边界REA 的克制是有意的理解边界比背参数更有用不解析 plist 语义。要看CFBundleExecutable、URL Scheme、权限描述对投影报出的info_plist_path用inspect_plist签名声明对可执行候选用inspect_signature核查。候选截断是透明的。桥接假设最多序列化 2 MiB超出时结果带bridge_candidate_coverage报告省略数量覆盖度降级为partial。部分覆盖不等于缺失。DMG 只有根身份而无子清单时投影标为partial并明确说明缺失未知。能力边界说明静态核验不运行应用、不需越狱Mach-O 解析在非 macOS 上也可用不包含plist / CMS 语义解析、观察到的运行期调用、语言元数据解码输入限制APK、ASAR 等格式被拒绝为输入错误DMG 子卷清单依赖原生 macOS 挂载适配器读到这里你获得的判断力是拿到任何 iOS 安装包先产出一份可验篡改、可定归属、可查启动点的哈希清单再逐条核对每个动态库加载的落点每一步结论都能回溯到证据。首次使用请先完成安装与 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),仅供参考