上下文绑定保护
提高将孤立发现转化为有用理解所需的工作量。
依赖关系也是保护的一部分#
当解码器、分派器与调用解析器共享动态上下文时,它们能形成更有意义的保护。选定的字符串和数值使用方可依赖方法状态及实际控制流状态。单独调用解码器时,便缺少合法执行路径提供的部分上下文。
分析任务从定位一个函数,扩展为还原其结果成立所需的条件。这正是跨层绑定的架构目的。下图展示部分关系;具体方法采用哪些绑定,取决于其适用性和保护策略。
选择节点,查看其作用及关联层。
方法级保护区分受保护值的使用上下文,为关联转换提供共同边界,而非孤立处理每个常量。
启用控制流绑定时,实际分派状态参与受保护值的使用。定位归档中的解码器,只是还原合法路径上下文的一部分。
共享状态连接所选的数值、控制流和引用保护。还原某一层可能需要理解另一层建立的条件,使分析单元超出单个表达式。
适用的内部调用可携带方法上下文。外部描述符、库接口及 JVM 槽位限制约束跨边界传递,兼容性是设计的一部分。
字符串和数值使用方可依赖方法及控制流状态。面向使用方的转换还能融合数值与其用途,减少适用区域中明显的先恢复后使用边界。
应用必须保留预期行为。修改上下文、检查失败、处理器可见状态及合法执行路径的测试,用于检查保护在使用点的交互。
间接引用解析可在链接后保留来源和密钥检查。已链接目标与允许调用该目标的条件,仍是不同的关注点。
所选层的关系示意,并非完整运行轨迹。
执行路径参与保护#
启用相应层时,绑定使用分派器的实际状态。目标完成链接后,引用解析仍可保留对来源上下文和密钥的检查。因此,一次成功解析并不意味着受控快速路径已成为无约束调用。
针对性测试组合字符串保护、数值保护、分派状态与间接调用,也包含虚拟化解析器配置,并覆盖接近 JVM 槽位限制的宽方法签名。这能检查单独测试各转换时可能遗漏的层间兼容性问题。
在使用点执行检查#
入口检查确认初始上下文,后续使用方仍需获得预期状态。针对性回归场景包含入口认证后的状态修改及哈希碰撞,而不是把摘要相同直接视为完整值相同的充分证据。
跨方法传递上下文#
方法状态可沿适用的内部调用关系传递。库契约、入口点、继承组与函数式接口决定了边界。隐藏参数不能破坏外部代码依赖的方法描述符。引擎在更深入转换内部关系的同时,通过兼容性策略保留这些契约。