2016-05-11 10 views
-2

私は自分のWebサイトから取得したソースをこのソースから動的にコンパイルしたフォームから取得しています。私のexeは保護されており、C#にはありますが、メモリダンパーを使用すると、私の動的にコンパイルされたフォームのソースコードを簡単に取得できます。どのような方法でそれを保護するには?動的にコンパイルされたコードを保護するにはどうすればいいですか

P.S. これは重複したスレッドではありません。私は良いプロテクターを持っていますし、私のメインプログラムは保護されていますので、dotPeekを使って、動的にコンパイルされたフォームソースコードを取得してメインプログラムでコンパイルできます。私はフォームソースを難読化できますか?それとも別の方法がありますか?

enter image description here

これは私が私のフォーム

using System; 
using System.CodeDom.Compiler; 
using System.IO; 
using Microsoft.CSharp; 

namespace myForm 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (var foo = new CSharpCodeProvider()) 
      { 
       var parameters = new CompilerParameters 
       { 
        GenerateInMemory = true, 
        GenerateExecutable = false 
       }; 

       parameters.ReferencedAssemblies.Add("System.dll"); 
       parameters.ReferencedAssemblies.Add("System.Core.dll"); 
       parameters.ReferencedAssemblies.Add("System.Drawing.dll"); 
       parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll"); 

       var source = File.ReadAllText("form.txt"); 
       CompilerResults results = foo.CompileAssemblyFromSource(parameters, source); 
       Type type = results.CompiledAssembly.GetType("radarHack.mainForm"); 
      } 
     } 
    } 
} 
+2

あなたはできません:http://stackoverflow.com/questions/506282/protect-net-code-from-reverse-engineering – Xiaoy312

+0

私はそれを知っていますが、私は良いプロテクターを発見しました。それは私のメインプログラムとうまく動作し、それを壊すことは本当に難しいですが、私はtxtから得る私の動的にコンパイルされたコードを保護しません。私の問題 – SLI

+0

は、テキストを暗号化して読み込み時に復号化するのですが、復号化コードは正しい位置に置かなければならないことに気がつきます。保護を入れても、それをリバースエンジニアリングしようとします「プロテクター」がどれほど優れているかということです。あなたが使用しているプロテクターとは何ですか? – t0mm13b

答えて

0

知らんなぜ君たちマイナス私の質問をコンパイルする方法です。私は方法を発見しました。私はソースコードでDLLを作成し、それを保護します。そして今、私はAssembly.Loadでそれを使うことができます。

それはより良い保護されています
Assembly assembly = Assembly.Load(File.ReadAllBytes(Environment.CurrentDirectory + @"\mainForm.dll")); 
Type type = assembly.GetType("mainForm"); 
object form = Activator.CreateInstance(type); 
type.InvokeMember("ShowDialog", BindingFlags.Default | BindingFlags.InvokeMethod, null, form, null); 

は、あなたがた私はC#で、100%の保護を作ることは不可能だということを知っているが、それは前にいたそのクラッカーのためにはるかに困難になります。

enter image description here

それがすべてOKであればだから今、私は、サーバー上の情報を確認し、サーバが保護されたDLLのバイトで応答し、その後、私はAssemble.Loadでそれらをロードします。メジャーなプログラムは、コードアセンブリだけで、サーバーと通信してコマンドを実行することができます+それは次のステップが何であるかも分かりません。

+0

ここでは、ソフトウェアを保護しようとするのに時間と労力を費やすのを止め、何かを隠している何らかの理由でパラノイアのように聞こえる。 – t0mm13b

+0

私はちょうど学んでいます)そして、それはすべてです。 – SLI

関連する問題