opengl - 是否有任何图形 API 实现着色器混淆?

标签 opengl graphics obfuscation vulkan

假设一家公司在他们的应用程序中实现了一种新颖的着色器,并且他们想让它难以被窃取。但是,OpenGL 着色器以明文形式发送到 GPU,Vulkan 很容易接受 decompileable bytecode。 .是否有任何图形 API 具有非零级别的着色器混淆?

最佳答案

Does any graphics API have a non-zero level of shader obfuscation?

没有。这没有任何意义。着色器并不像成熟的应用程序那么复杂。着色器可能达到的复杂性有相当严格的限制以允许保持交互性。任何类型的混淆层,在深处,都只是一个奇怪的指令集,可以使用优化编译器/转译器轻松地去混淆。

一般规则是:如果它可以执行并产生可读的结果*,则可以对其进行去混淆处理。就这么简单。

此外,熟练的图形黑客将能够查看最终渲染和/或中间结果(可以使用 renderdoc 等工具轻松获得)并从中找出着色器的要点。哎呀,90% 的图形编码都包含这种视觉输出调试,当您试图弄清楚为什么以及如何您的着色器不符合您的要求时,以及您在屏幕上看到的困惑是如何首先发生的。因此,任何有经验的图形黑客都已经掌握了通过“查看”着色器进行逆向工程所需的大部分技能。


* 如果不是“可读结果”的约束,那么 Homomorphic Encryption可能允许真正的代码混淆。但是您通常希望着色器的输出可供人类阅读。

关于opengl - 是否有任何图形 API 实现着色器混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39311606/

相关文章:

opengl - 在 OpenGL 中结合顶点数组和纹理

opengl - 如何强制 GLSL 分支?

c++ - 渐进细化光能传递算法

math - 将四元数从右手坐标系转换为左手坐标系

javascript - D3 圆弧的一侧

c++ - 有关保护 DLL 代码的任何提示?

.net - 使用 Eazfuscator.NET 混淆已发布的应用程序?

ant - 将yGuard Ant任务转换为Gradle

opengl - glBufferStorage 和 glBufferData 有什么区别?

Java,根据自己的功能快速图像变形