尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
编译后的界面如何变成可追溯的连接图:REA Interface Builder 解码器完整拆解
编译后的界面如何变成可追溯的连接图REA Interface Builder 解码器完整拆解【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/reaREAReverse Engineer Anything提供了一组 Interface Builder 解码器能把 macOS / iOS 应用包.app里编译后的storyboard与.nib 归档静态还原为视图层级、outlet出口、**action动作**与segue跳转的连接图。全程不执行任何代码、不依赖 Apple 官方工具如 ibtool、不加载任何 UI 类甚至可以在 Linux 上运行。输入只有一个.app包路径输出是一张只读 JSON 图每个节点与边都携带归档路径和 SHA-256可逐条追溯。为什么编译后的界面变成了二进制流你在 Xcode 里拖控件画界面但编译产物并不是可读的 XML而是 Apple 的私有序列化格式源文件编译产物格式特点Main.storyboardMain.storyboardc/objects.nib二进制 plistbplist00Settings.xibSettings.nibNIBArchive 二进制流这两种文件都是对象表 编号互引的结构控件、视图控制器、连接各是一个条目条目之间用数字编号互相指向。没有解码器十六进制编辑器里看到的只有乱码。这个解码器做的事就是把这份乱码翻译回你能读的界面结构——只靠读字节完成不运行应用里的一行代码。一条命令完成解码安装 REA 后npx rea-agents setup注册到你的 Agent或直接使用 CLI对任意.app包运行rea decode-interface-builder MyApp.app对应 MCP 工具名为decode_interface_builder。命令带三个限流参数--max-documents最多 64 个归档、--max-objects最多 2 万个图对象、--max-connections最多 4 万条连接默认值即上限。命令定义见 artifactCommands.ts分析入口是 InterfaceBuilderAnalysis.ts 的analyzeInterfaceBuilderBundle它遍历包内所有.nib与storyboardc/objects.nib按文件头NIBArchive/bplist00自动分派解码路径。从二进制流到连接图的三步第一步头判定与四表解析。NibArchive.ts 的decodeNibArchive校验NIBArchive魔数与格式版本依次读出对象表、键表、值表、类表。对象间的引用以$nib_object_ref编号原样保留不展开、不实例化任何 UI 类。第二步引用展开与循环保护。归档里天然存在循环引用视图 ↔ 父视图盲目内联展开会无限递归。REA 的策略是引用最多解析为字符串或桩节点层级遍历subviews/contentView/childViewControllers见 NibViewHierarchy.ts限制深度 32 层、每个对象只访问一次。同时把NSClassSwapper/UIClassSwapper解析为真实类名你在输出里看到的是实际类而不是交换器占位符。第三步统一图投影。interfaceBuilderGraph.ts 的buildInterfaceBuilderAnalysis把每个文档投影为节点 边根节点是scene或storyboard对象节点自动分类为view_controller、view、control、constraint、layout_guide等边分四种关系——contains层级包含、outlet_to出口指向、target_action动作目标、segue_to场景跳转。它同时识别 AppKit 的NSNibOutletConnector与 UIKit 的UIRuntime*Connection两套连接对象命名约定后者还会还原出ui_event_mask触摸、长按等事件类型。输出字段该看哪里结果是只读 JSON 图重点看四处documents每个.nib一条含document_kindnib或storyboard_scene、object_count、connection_count、hierarchy_complete层级是否完整graph.nodes / graph.edges每个 outlet 从哪个视图控制器连到哪个控件每个 action 的 selector 名与目标——目标为nil时即 First Responder。无法解析的边会被标记resolution: unresolved并附原因而不是静默丢弃graph.coverageobjects / connections / hierarchy / classes 四个维度的complete或partial状态附omitted计数与原因告诉你结果里缺了什么、为什么缺limitations明确的证据边界声明例如selector 只是 Interface Builder 层面的观察不证明二进制中存在对应实现。完整场景的测试样例可参考 MacFixture.storyboard一个按钮同时带 outlet 与 action 的用例。它能做什么不能做什么适用iOS / macOS 应用的界面结构取证、控件与 outlet 命名习惯审计、segue 跳转路径梳理⚠️边界不解约束的运行时求解、不推断像素几何、不识别未收录的私有归档字段归档输入总量限 32 MiB、解码表示限 256 MiB超限归档会被记录为 omitted 而非报错延伸Apple 应用分析总览 docs/apple-application-analysis.md端到端验证脚本 interface-builder.mjs归档解析测试 interfaceBuilderUIKitKeyedArchive.test.ts掌握decode-interface-builder你就不必再对着十六进制编辑器猜界面——storyboard 里的每个控件、每条出口、每个按钮背后的 selector都会摊在一张可追溯、且明确标注自身证据边界的图上。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

基于AI API网关的多模型统一接入实践:从Codex到企业级调度

基于AI API网关的多模型统一接入实践:从Codex到企业级调度

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/15 11:15:41
2026西安本地GEO优化选型指南:TaoToken视角下哪家服务商效果好、值得选、怎么避坑

2026西安本地GEO优化选型指南:TaoToken视角下哪家服务商效果好、值得选、怎么避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/15 11:15:41
Qt集成VLC库:libvlc播放器开发从基础到避坑实战

Qt集成VLC库:libvlc播放器开发从基础到避坑实战

简介:基于Qt框架与VLC库打造的播放器DEMO源码,适合有一定C基础、想深入掌握Qt GUI编程与libvlc集成的开发者。项目演示了从界面构建到媒体播放的完整流程,包括按钮事件绑定、进度条同步、音量控制及后台播放线程设计,帮助理解事件…

📅 2026/10/15 11:15:41
MORE NEWS

更多资讯

📰

零基础网页开发教程:用HTML和CSS创建第一个简单网页

1. 零基础教学的第一步:只选HTML和CSS,不碰框架带过很多轮零基础学员之后,我最大的体会是:教“创建简单网页”不需要一次塞太多东西,真正要把顺序排对。很多人一上来就想做那些会动、会跳、能登录的网站,结…

📰

一级域名与二级域名区别详解:从解析到SSL证书的实用指南

在中文互联网环境里,域名是每个站长迟早要面对的基础问题,但“一级域名”和“二级域名”这两个词,恰恰是新手最容易绕晕的地方。我见过不少人在做解析、配证书、申请接入备案时,因为层级理解出错,白白浪费一整天等生效…

📰

C#背单词源代码项目实战:控制台、JSON与艾宾浩斯复习

简介:面向C#初学者的背单词应用源代码,演示如何利用TextReader/StreamReader读取txt单词库,将英文单词与中文释义逐行解析,并通过正序、倒序、随机三种模式展示,支持自定义刷新速度,适合课程设计、课后练习…

📰

Rust GUI框架Iced的Size结构体设计与布局优化

1. 项目背景与核心价值在UI开发领域,控件尺寸计算是个看似简单实则暗藏玄机的基础问题。Iced作为Rust生态中快速崛起的GUI框架,其core库中的Size结构体承载着整个布局系统的基石作用。最近在优化一个跨平台应用的布局性能时,我深入研究了size…

📰

开源安全工具选型与落地:中小团队安全观测能力建设实战

很久没写安全工具选型这类文章了。最近有个做运维的朋友跟我吐槽,说他们公司安全设备买了不少,商业盒子堆满了机柜,结果真正出事了还是靠手工翻日志,采购单越来越长,安全感却没跟着涨。这事其实特别典型。我过去几年帮…

📰

SpringBoot+Vue全栈拍卖系统开发实战与优化

1. 项目概述:全栈拍卖系统开发实战 去年为某艺术品交易平台开发在线拍卖系统时,我采用SpringBootVue的技术方案,仅用6周就完成了从需求分析到生产部署的全流程。这个架构组合在中小型交易系统中展现出惊人的效率——后端API平均响应时间控制在…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬