reverse-cli-anything
开源 · 逆向工程 · Agent 工具

托管软件:事务与通知#

English · 工程手册

类型和调用链分析适用于各类托管目标。编辑、界面和持久化章节仅在请求操作具备相应语义时适用。服务、库或批处理操作应恢复初始化、接收对象、输入、结果和清理方式,无须创建目标本来不使用的编辑器或事务。

从有价值的类型进入业务操作#

检查真实程序集与运行时,包括 ReadyToRun 和原生伴随模块。托管解析器可能识别程序集却无法处理大型元数据;保留部分输出,针对候选类型、调用方和事务类定向反编译。

未混淆序列化器、服务或只读自动化组件可作为所需业务接收对象的入口。查明方法是静态调用、需要新建并初始化实例,还是必须使用现有服务或会话对象。实时编辑时再沿归属关系追踪活动文档;独立反序列化出的对象不一定就是前台显示的对象。

记录程序集哈希、metadata token/签名、所属类型和绑定规则;混淆名称与 token 只适用于一个构建。条件允许时,启动端和进程内桥接都核对程序集身份。

通过业务事务编辑#

直接赋值可能绕过撤销、脏状态、依赖对象更新或通知。寻找正常写入路径:

  1. 读取现有对象及本操作影响的状态。
  2. 使用原生构造器或 builder,按正确文档归属创建替换内容。
  3. 构造原生编辑/命令对象。
  4. 通过 editor/workspace 的事务 API 提交。
  5. 回读对象及历史,观察关联状态和通知。

查明正常操作会更新哪些依赖对象、索引和派生值,复用其更新范围。对于复合操作,确定应用将修改合并为一次撤销还是保留多个撤销边界。

视图和缓存可能分别订阅模型事件。状态变化未传达到消费者时,追踪订阅关系和通知载荷;验证操作及其支持的撤销、重做路径所需通知。

保持对象图的归属#

复杂操作可能构造一组有归属关系的对象。恢复构造器、工厂方法、引用类型和安装事务,保留稳定 ID 及所有权边界,提交前校验被引用对象。仅序列化可能遗漏运行时注册和反向关联。

如果操作定义了可执行行为,在应用的执行环境中验证所需分支,同时检查无效引用、不支持的表达式和成功执行。生成行为应能追溯到来源对象。

桥接与 UI 线程#

选用适合运行时的窄启动或附加机制,经活动应用调度器执行。正式桥接限制为明确业务操作与本地传输,探索反射仍属于研究工具。

保留回调/任务直到终态完成。退出前保存需按正常保存路径先提交挂起的外层编辑。关联导出完成,独立读取生成器成功结果,不能只检查文件存在。

持久化证明#

保存、切换其他文档和重开后核对相同稳定 ID。任务要求时退出进程后重新启动并读取同一对象,确认仍可继续编辑。同进程与冷启动结果分别记录,避免缓存掩盖未持久化。

分别检查序列化结构与可观察行为,采用适合输出格式的读取器或运行时,并保留来源对象引用,使结果能追溯到原生可编辑状态。

在 GitHub 查看本页源文档