2012-01-14 3 views
1

Ces lignes de codes sont-elles obfusquées (C#)?Sont-ils obfuscated du code C#?

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

Si oui, y a-t-il un logiciel pour les obnubiler?

méthode complète (codes sont decomplied par ILSpy decomplier):

// 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:
Bien qu'il y ait mentionner quelques commentaires qu'il ne soit pas écrit en C#, mais je l'ai trouvé quelque part, il est très proche de C#, par exemple:

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

Cela ressemble beaucoup plus à la sortie de C++/CLI standard que le code C# obscurci. – JaredPar

+0

@JaredPar: Il y a juste des noms générés par le compilateur, qui ne sont pas des identifiants légaux en C#, C++/CLI, VB.NET, ou tout ce que je sais. Ou peut-être qu'ils ont été générés par le désassembleur. Il peut y avoir une certaine syntaxe qui n'est pas communément vue en C#, parce que c'est dans le sous-ensemble 'unsafe', mais' uint' est un mot-clé de type C# et non trouvé en C++. –

+0

@BenVoigt, oui, les codes sont décomplits par ILSpy decomplier – JatSing

Répondre

3

Ce n'est pas C# valide. C'est peut-être ce que montre un désassembleur/décompilateur lorsque vous lui demandez de générer C# à partir d'un assemblage écrit à l'origine dans un langage qui supporte les fonctions libres (C++/CLI, je pense que VB.NET le fait aussi).

Peut-être que ce décompilateur fournit également une aide pour localiser la chaîne littérale.

Le numéro de message a été remplacé lors de la compilation d'origine, si vous voulez le convertir en une constante WM_ *, vous devrez le rechercher vous-même. Le compilateur n'a aucun moyen de savoir laquelle de nombreuses constantes égales à 1024u était dans la source d'origine. Pour un programmeur .NET, vous pouvez vous référer à this list of Window Messages au lieu des fichiers d'en-tête SDK. Dans l'ensemble, vous aurez plus de chance de réparer ce code à la main.

+0

' 1024' est '0x400' qui est' WM_USER ' –

+0

J'ai mis à jour ma question pour montrer la méthode complète – JatSing

+0

@BenVoigt, oui, les codes sont décriés par ILSpy decomplier – JatSing