2

ある特定の理由で、堅牢な node.js コード保護が必要であるとします。つまり、javascript ソース コードを使用した node.js 展開を、v8 アセンブラー言語を介してのみ完全に分析できるように強制し、ファイルを再構築することを非常に困難/ほとんど不可能にします。オリジナルのソースコード。

言い換えれば、仮に誰かが無許可の方法で node.js プログラムを手に入れた場合 (つまり、問題の node.js プログラムはサーバーにとどまり、クライアントに直接配布されないと仮定します。サーバーはクライアントの侵害などから保護されていますが、サーバーが 100% 信頼されているわけではないとしましょう。コードには V8 アセンブラーのみが含まれ、元の js ソース コードは含まれません。つまり、美化、縮小、暗号化、または「ソースはまだ文字列に隠されている」V8スナップショットのjsソースなどではなく、単にjsソースコードはまったくなく、「最適化されたアセンブラー」のみです。-そして、ソースコードがなくなり、このnode.jsインスタンスに含まれないように、ソースコード全体に対して行われます-暗号化も縮小もされません-そこにないだけです. この場合、該当する場合のパフォーマンスの低下は問題ではありません。ただし、ソース js は、ハードウェア固有の最適化された V8 アセンブリ全体に対する面倒な調査以外では回復できません。

最初に頭に浮かぶアイデアは、何らかの形で V8 に node.js ソース js コードのすべてを「ハードウェア固有」のアセンブラーに最適化するように強制することです (ただし、「ハードウェア」は何らかの種類のシン VM にあります)。 JIT が持ち歩いているソース コードを何らかの方法で削除し (可能であれば)、この最適化されたアセンブラだけに依存するようにします。次に、シン VM にはソース コードへの参照が含まれず、生成された V8 アセンブラーのみを使用してプログラムを実行し続けます。この場合、どうすればいいのかよくわかりません。

おそらく Linux で動作するものを好むでしょうが、Windows でのみ可能であれば、それも検討します。

4

2 に答える 2

2

これは、複数の場所でソース コードから関数を再コンパイルする機能に依存しているため、V8 内部で大幅な変更を加えなければ不可能です (例: 遅延コンパイル、Crankshft 最適化パイプライン、メジャー GC 中のコード フラッシュ)。また、V8 にはインライン キャッシュ以外にコードに関する型情報を収集する手段が他にないため、本番環境に似たデータでアプリケーションを実際に実行せずに最適化された優れたコードを生成することは不可能です。

于 2012-09-23T16:14:51.127 に答える
1

PHP には多くの難読化ツールがあります。すべての一般的な PHP 難読化ツールには、難読化解除機能があります。結果は、 Google クロージャーが提供するものよりも読みやすい形式になります。Google クロージャーを使用 できます。信頼できない場合は、クラウド ホスティングを使用しないでください。バイト コードを使用するほとんどのアプリは、非常に簡単に逆コンパイルできます。(ジャバ、アンドロイド、.NET)

要するに、難読化に時間を無駄にしないでください。多くの場合、逆コンパイルしてから難読化してすべての問題をデバッグする方が簡単です。Java と .NET で多くのアプリを難読化したからです。

于 2012-09-23T11:33:25.490 に答える