Denuvo在行业内声名日渐下滑已是公认的事实,不少工作室只要采用了D加密技术,就常常会引发玩家的强烈反对。这套反篡改系统长期以来一直被诟病会严重影响游戏性能,而最新的一份分析报告则揭露了它具体是怎样“搞砸”一切的。
有消息称,Denuvo经重新编译后的代码里加入了各类防护手段,其核心目的是增加代码的理解难度。这类处理操作会频繁导致CPU缓存失效,还会抵消游戏原本的多数优化效果。此外,新添加的计时检测、硬件指纹识别以及完整性校验等机制,也让CPU的运行负担进一步加剧。
所有这些技术手段所付出的代价,便是我们在运行搭载Denuvo的游戏时,常常会遇到加载速度变慢、卡顿现象频繁出现以及帧率降低等问题。
油管频道Nathan Baggs针对Denuvo展开了分析,程序员@valigo也在X平台上对这些分析结果予以了印证。简单来说,Denuvo会将游戏里的部分代码嵌入到一个自定义的虚拟机中,原本已经完成编译的指令会被转换为该虚拟机适用的指令集。
Denuvo所采用的是一种基于栈结构的虚拟机技术,它如同一个软件层面的中间层,模拟CPU的功能,却强制要求指令必须经由栈系统来完成执行流程。在此过程里,它还会运用多种保护手段,使得相关代码的逆向工程分析变得更为困难。
在程序运行过程中,该虚拟机会借助JIT(即时编译)技术,将已经过翻译的指令重新编译为真实CPU能够执行的代码;不过在此过程中,会添加大量没有实际意义的跳转操作与混淆处理步骤,这就使得CPU的指令流水线和分支预测器不得不承受更重的负担。
原本经过精心优化的循环结构、内存访问模式以及指令序列,会被Denuvo的虚拟机以重排与封装的方式彻底打乱,不仅使原有的优化效果荡然无存,还会干扰CPU缓存的正常运作。
现代CPU对缓存和推测执行机制有着高度的依赖性,一旦代码被Denuvo以奇特的模式持续重建,缓存就会频繁出现失效的情况,性能也会因此大幅下降。