桌面安装目录
桌面安装目录¶
当安装目录是目标且其运行时未知时,使用 inspect_desktop_application。它会读取目录条目、选定的头部和有界元数据,然后报告运行时候选、支持文件、组件路径标记和具体的后续操作。无需原生提供程序或活动的二进制会话。它不会运行应用程序、解压归档、跟随子符号链接、联系服务或更改目标文件。
MCP¶
默认的 detail: "summary" 会在会话中保留完整的源证据,并返回带有代表性支持路径、计数、覆盖范围、局限性和分组后续探测的候选。normalized_result.parent_evidence_id 标识完整记录。不支持证据保留的服务器会在读取目标之前拒绝摘要传递;选择 detail: "complete" 可以在行内接收所有保留的事实。
在单个请求中读取确切文件:
{
"source": {
"kind": "retained-evidence",
"evidence_id": "ev_<parent-sha256>"
},
"view": {
"kind": "desktop-application",
"collection": "files",
"paths": ["Game_Data/Managed/Assembly-CSharp.dll", "GameAssembly.dll"],
"fields": ["path", "read_status", "ranges", "facts", "issues"],
"offset": 0,
"limit": 16
}
}
集合有 files、omissions、candidates、components 和 next_probes。files 和 omissions 接受精确的 paths 以及批量的 file_ids / omission_ids。files 还接受 has_issues: true 以直接选择探测诊断,或 false 以选择没有报告问题的行。此过滤器使用已保留的问题事实;它不会重新读取目标,也不会推断未检查的文件是健康的。当两者都提供时,所有过滤器都会生效;空选择不返回任何行。省略记录保留观察到的路径、种类和稳定的 omission_id;不会读取其有效负载,其他特殊条目元数据仍不可用。candidates 接受精确的 families。省略的选择器匹配所有保留的行;空选择器不匹配任何行。
每个集合都支持 fields、offset 和 limit;其稳定的行 ID 始终包含在内。选择改变的是传递,而不是源检查。分页保留源覆盖范围和父证据链接。分页耗尽并不能在部分源中确定不存在。完整证据仍可通过 get_evidence 和证据包导出访问。
摘要的 probe_issues 统计具有已报告问题的文件及其保留的问题条目。它最多预览两个这样的文件,包括稳定的 file_id、读取状态和第一个问题。路径/原因预览每个最多使用 256 个 UTF-16 单元,且不会拆分代理对;text_truncated 标记被缩短的文本,preview_truncated 标记额外的文件。这些是显示前缀;完整的调用方路径和所有原因仍保留在证据中。计数描述的是保留的观察结果,而源覆盖范围仍标识部分检查。
使用 inspect_analysis_view,设置 collection: "files", has_issues: true 和 fields: ["path", "read_status", "issues"] 以获取确切原因,并使用常规分页和父链接。它与精确路径和批量文件 ID 取交集。
ASAR 清单探测首先使用 open_binary 选择其精确路径;然后对该活动目标调用 inspect_artifact。目录检查本身不会选择或替换会话目标。JavaScript 应用程序工作流直接接受其自身选择的路径。
CLI¶
一次性 CLI 默认返回完整证据。要获得紧凑输出,请显式将其保留在包中:
rea inspect-desktop-application /artifacts/MyApplication \
--detail summary --evidence_output /reports/application.evidence.json --json
这将返回 summary 证据和 evidence_bundle 发布回执。现有输出文件永远不会被覆盖。摘要传递需要 --evidence_output,并在分析前检查。inspect-evidence-bundle 选择已保存的记录;精确的已保存记录也可用于 inspect-analysis-view。--detail complete 以行内方式返回源证据,并可选择写入相同的包。导出只写入调用方选择的输出文件。
事实与不确定性¶
| 运行时类别 | 使用的证据 |
|---|---|
| .NET | PE 可选头声明了非空的 CLI 目录。 |
| Unity Mono | *_Data/Managed 或 Contents/Resources/Data/Managed 下的托管程序集具有精确的 UnityEngine 程序集引用。 |
| Unity IL2CPP | 可识别的 IL2CPP 元数据魔数(完整时含原始版本)与按惯例命名的原生 GameAssembly.dll、GameAssembly.so、GameAssembly.dylib 或 libil2cpp.so 镜像共存。构建对应关系仍未知。 |
| Godot | 文件开头的 GDPC 头,或经验证的可在文件末尾偏移处存在的可执行文件尾部。 |
| GameMaker | 有界的 FORM 容器以 GEN8 块开头。扫描会针对该头部探测常规的 data.win、game.unx 和 game.ios 数据文件。 |
| Unreal | Content/Paks 路径约定或 IoStore TOC 签名;仅凭任意的 .pak 文件名不足以判定。 |
| Electron | resources/app.asar 或 resources/default_app.asar 路径约定;归档文件的有效性未经验证。 |
当存在四字节元数据魔数(magic)但版本字节不完整时,该事实保留 raw_version: null;它不提供 IL2CPP 元数据检查探针。带有受支持的原始版本 24、27、29、31 或 39 的完整魔数/版本前缀,会为其已接受的文件路径提供 inspect_il2cpp_metadata 后续操作,即使未找到原生库时也是如此。该探针并不确立完整的元数据有效性,也不确立与原生二进制的对应关系;版本 24 的检查仍仅适用于受支持的标头布局。参见 IL2CPP 元数据。
候选结果由这些事实推导或推断而来,并不证明加载或执行的发生。BepInEx、MelonLoader、Easy Anti-Cheat 和 BattlEye 标签仅标识路径约定;运行时的存在情况仍然未知。不提供任何绕过手段。
file_id 包含已接受的根命名空间、记录的路径以及可用的文件系统标识。调用方选择的根路径与已接受的规范路径/根标识均被保留;local_path 标识每个观察到的文件,供后续操作使用。选定的根可以是符号链接;子符号链接不会被跟踪。确切的元数据整数仍保留为十进制字符串。读取范围包含偏移量、字节数和 SHA-256 摘要;类型化事实暴露 CLI RVA、元数据/包版本和程序集令牌。遍历无法提供的目录和符号链接标识保持为 null。
目录的 snapshot_sha256 对保留的路径、省略类型、可用元数据和范围摘要作出承诺,这些内容通过已接受的根、条目和省略标识组合而成。调用方上限、覆盖计数器、诊断措辞和解释性事实仍保留在证据(Evidence)中,位于源标识之外。在不同宽松限制下得到的相同观察结果共享同一快照摘要;证据 ID 仍保留请求参数和报告的覆盖范围。不同的保留条目或读取范围会改变源快照。省略记录共享条目和表示预算,并可通过其视图独立获取。它不是所有文件内容的摘要。 这些是顺序性的稳定条目观察结果,而非原子化的目录快照。未读取的字节仍然未知。
资源限制与复用¶
默认检查 20,000 个条目,探针读取总量为 8 MiB。调用方最多可选择 100,000 个条目和 64 MiB。另有 32 MiB 的保守表示预算,用于在增长前约束保留的路径和事实。限制和失败的探针会产生部分覆盖。遍历和读取是串行的。每个读取器一次只受理一项检查;重叠的请求会收到可重试的容量拒绝,而不会取消已接受的调用方。
Unity 引用解码在遇到每个 Data/Managed 目录中的见证后停止;其他程序集的引用仍未检查,但其标头仍会被校验。AssemblyRef 事实仅解码名称和令牌;它们不会解码或哈希无关的 key/culture/hash 载荷,也不会确立运行时绑定。包内容、加密数据、元数据/地址对应关系以及嵌入节中且无尾部的 PCK 属于独立的能力范畴。
文件系统结果不会在调用之间缓存。保留的视图复用经过验证的不可变元数据,而不会重新扫描文件或保留另一份清单。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea