5

難読化に関連する2つの質問:

1)MSILターゲットフォームからF#を元のフォームまたはそれに近いものに分解できるツールはありますか?これは隠すことによるセキュリティの試みではありませんが、一部のソースコードを「盗難」から保護したいと思います。

2)いくつかのF#コンパイラ出力を簡単に見てみましたが、おそらくC#がMSIL中間表現に近いため、C#コンパイル済みコードを逆アセンブルした場合に得られるものと比較してかなりぎこちないように見えます。私がC#コンパイラから見た唯一の部分的に壊れたコードはイテレータです(そしておそらくC#5.0の時点では非同期です)。

これまでのところ、F#でコンパイルされたコードはかなり「難読化」されているという印象がありますが、それは本当ですか?(これはやや主観的な質問だと思います。)

4

2 に答える 2

8
  1. 私はこのようなことを聞​​いたことがありません。ただし、このようなツールは比較的近い将来に登場する可能性が高いと思います。
  2. F#コンパイラによって生成されたアセンブリ(つまり、MSILおよび関連するメタデータ)は、決して難読化されていません。ただし、生成されるコードの一部は、C#またはVB.NETコンパイラによって生成されるコードとは大きく異なるため、リバースエンジニアリングは簡単ではありません(そのためのツールが利用できないためです)。もちろん、@ Craig Stuntzが言ったように、これは経験豊富で意欲的な攻撃者に対する多くの保護を提供しません。

あなたが本当にパラノイアであるならば、あなたはそれらを出荷する前にあなたのコンパイルされたアセンブリで難読化ツールを使うことを検討するかもしれません。2010年後半からF#で{SmartAssembly}を使用しているので、F#で動作することがわかっています。別のツールを使用する場合は、購入する前に、かなり複雑なF#アセンブリに対してテストしてください。難読化ツールを探していたとき、それらの多くはF#アセンブリでは正しく(またはまったく)機能しませんでした。

詳細を読みたい場合は、F#アセンブリの難読化について少し前にメモを書きました。F#アセンブリで.NET難読化ツールを使用した経験はありますか?

于 2013-01-02T20:56:21.320 に答える
1

F#は.NET言語の一部であるため、逆コンパイルできます。お金や0xd4dのdnSpyを使いたい場合は、RedGateのReflectorを見ることができます(もちろん、非常によく知られている難読化解除ツールDe4Dotと同じ開発者です)。逆コンパイルされたコードはハードコードされたコードに非常に近く、ロジックは同じであり、ソースコードをコピーして貼り付けることができます。

F#アプリケーションを保護したい場合は、難読化ツールの使用を検討してください。現在、ほとんどすべてがDe4Dotによって処理されているため、賢明に選択するのは困難です。.NETGuardは非常に強力ですが、F#アプリケーションを処理でき、ネイティブ出力を生成できます。 &それはいくつかの強力な一定の保護を持っており、De4Dotはそれを処理できません。

于 2016-03-19T13:37:17.107 に答える