2012-01-14 7 views
1

これらのコード行は難読化されていますか(C#)?C#コードがわかりにくいですか?

HWND__* ptr = <Module>.FindWindowW(null, (char*)(&<Module>[email protected][email protected][email protected]));   
<Module>.SendNotifyMessageW(ptr, 1024u, (uint)num, 0); 

「はい」の場合、それらを難読化するソフトウェアはありますか?

フル・メソッド(コードはILSpy decomplierでdecompliedされている):

// My7554_Launcher.Form1 
protected unsafe override void WndProc(ref Message m) 
{ 
    IntPtr wParam = m.WParam; 
    IntPtr lParam = m.LParam; 
    if (m.Msg == 1024) 
    { 
     if (wParam.ToInt32() == 1) 
     { 
      <Module>.LicenseServices.UnlockExecute(); 
      <Module>.LicenseServices.CloseSession(); 
      base.Close(); 
     } 
     if (wParam.ToInt32() == 3 || wParam.ToInt32() == 4 || wParam.ToInt32() == 5) 
     { 
      if (<Module>.LicenseServices.LockExecute() == null) 
      { 
       base.Close(); 
      } 
      else 
      { 
       int num; 
       if (wParam.ToInt32() == 3) 
       { 
        num = this.EGLiDecode1(lParam.ToInt32()); 
       } 
       if (wParam.ToInt32() == 4) 
       { 
        num = this.EGLiDecode2(lParam.ToInt32()); 
       } 
       if (wParam.ToInt32() == 5) 
       { 
        num = this.EGLiDecode3(lParam.ToInt32()); 
       } 
       HWND__* ptr = <Module>.FindWindowW(null, (char*)(&<Module>[email protected][email protected][email protected])); 
       <Module>.SendNotifyMessageW(ptr, 1024u, (uint)num, 0); 
      } 
     } 
    } 
    base.WndProc(ref m); 
} 

P/S:
いくつかのコメントがありますが、それは、C#で記述されていないことは言うが、私はそれはに非常に近いですどこかに見つかりましたC#の場合、

private void InitializeComponent() 
{ 
    ComponentResourceManager manager = null; 
    manager = new ComponentResourceManager(typeof(Form1)); 
    base.SuspendLayout(); 
    SizeF ef = new SizeF(6f, 13f); 
    base.AutoScaleDimensions = ef; 
    base.AutoScaleMode = AutoScaleMode.Font; 
    Color window = SystemColors.Window; 
    this.BackColor = window; 
    this.BackgroundImage = (Image) manager.GetObject("$this.BackgroundImage"); 
    this.BackgroundImageLayout = ImageLayout.Center; 
    Size size = new Size(0x28c, 0x138); 
    base.ClientSize = size; 
    base.ControlBox = false; 
    base.FormBorderStyle = FormBorderStyle.None; 
    base.Icon = (Icon) manager.GetObject("$this.Icon"); 
    base.Name = "Form1"; 
    base.StartPosition = FormStartPosition.CenterScreen; 
    this.Text = "Launcher"; 
    Color white = Color.White; 
    base.TransparencyKey = white; 
    base.Load += new EventHandler(this.Form1_Load); 
    base.ResumeLayout(false); 
} 
+3

標準のC++/CLIの出力は、難読化されたC#コードよりもはるかに近いようです。 – JaredPar

+0

@JaredPar:C#、C++/CLI、VB.NET、または私が知っている他の何かの正当な識別子ではない、コンパイラ生成の名前が入っています。あるいは、逆アセンブラによって生成されたものかもしれません。 'unsafe'サブセットにあるので、C#では一般的に見られない構文がいくつかありますが、' uint'はC#タイプのキーワードであり、C++では見つかりません。 –

+0

@BenVoigt、はい、コードはILSpy分解器で分解されます – JatSing

答えて

3

これは有効なC#ではありません。

これは、もともと自由な関数をサポートする言語で書かれたアセンブリからC#を生成するように要求したときに、逆アセンブラ/逆コンパイラが示すものかもしれません(C++/CLIは、VB.NETもそうです)。

おそらく、その逆コンパイラは文字列リテラルの位置を特定するためのヘルプも提供します。

オリジナルのコンパイル時にメッセージ番号が置換されました。WM_ *定数に変換する場合は、自分で調べなければなりません。コンパイラは、1024uに等しい多くの多くの定数のどれが元のソースにあったかを知る方法がありません。 .NETプログラマーの場合、SDKヘッダーファイルの代わりにthis list of Window Messagesを参照することがあります。

全体として、あなたはこのコードを手で修正する方がよいでしょう。

+0

の '1024'が' 0x400'であることを示唆する何かの例を投稿した場合は 'WM_USER ' –

+0

完全な方法を表示するように質問を更新しました – JatSing

+0

@BenVoigt、はい、コードはILSpy分解ツール – JatSing

関連する問題