2011-12-15 1 views
0

私は自分のゲームやアプリケーションでいくつかのシェーダを持っていますが、私は現在、シェーダを取得してテキストをStringBuilderに一度に1文字ずつ入れるJavaクラスを生成する単純なプログラムを使用しています。誰かがリバースエンジニアをしたら何かを見つける。シェーダアセットを隠すためにどのようなテクニックが利用できますか?

それは間違っていると感じますが、すぐに視界から外れるという仕事をしていますが、とても安全であるという錯覚はありません。

私はプレコンパイルに関する質問を見ましたが、答えはありません。それ以外に何ができますか?

答えて

1

Shadersが通常非常に小さなプログラムであるという事実を考慮して、今まで私が見てきた最良の解決策は、あなたが言ったようにコードに埋め込むことです。

これは非常に安全です。

誰かがシェーダを取りたいと思っている場合、GPUからダンプすることでそれを行いますが、明らかにそれははるかに複雑ですが、リバースエンジニアリングについて話しています。

暗号化はオプションですが、シェーダのローカルストレージだけを保護しますが、復号化の直後にプログラムのメモリをダンプできます。

シェイダーを一般的にプレコンパイルするのは便利ではありません.GPUSとドライバの実装が幅広いところで作業しているプラ​​ットフォームを考えると、さらに真実です。

プレコンパイルされたシェーダに関する他の質問に戻ると、OpenGLゴールドブック(OpenGL ES 2.0プログラミングガイド)の350ページに非常に良い説明があります。

デバイスベンダーは、バイナリシェーダを好みの方法で自由に保存することができます。

私はそれが役に立ちましたと思います。

BLOCKQUOTE

0

1つのオプションは、ファイルを暗号化することです。 Cipherクラスをご覧ください。

+1

のOPソリューションも暗号どちらを使用すると、コンパイラに送るように組み立てたり、暗号化されていないテキストが表示され、中に実行時の復号化を行うためにどのようなOpenGL API /コール・インスペクターとして「問題」を解決しますシェイダーは低いfpsパーティーのように聞こえる。 – krs

+0

@krsそれは簡単に傍受されるかもしれないが、私はそれを考えなかったという点について興味深い点です。しかし、ランタイムのデシジョンは、低いfpsにならないように、アプリの開始時に一度だけ行う必要があります。 – weston

関連する問題