Они запутаны в коде C #? - PullRequest
       23

Они запутаны в коде C #?

1 голос
/ 14 января 2012

Эти строки кодов запутаны (C #)?

HWND__* ptr = <Module>.FindWindowW(null, (char*)(&<Module>.??_C@_19HAIJKKDJ@?$AA7?$AA5?$AA5?$AA4?$AA?$AA@));        
<Module>.SendNotifyMessageW(ptr, 1024u, (uint)num, 0);

Если да, есть ли программное обеспечение для их обфускации?

Полный метод (коды декомпилируются с помощью ILSpy):

// 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>.??_C@_19HAIJKKDJ@?$AA7?$AA5?$AA5?$AA4?$AA?$AA@));
                <Module>.SendNotifyMessageW(ptr, 1024u, (uint)num, 0);
            }
        }
    }
    base.WndProc(ref m);
}

р / с:
Хотя в некоторых комментариях упоминается, что он не написан на 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);
}

1 Ответ

3 голосов
/ 14 января 2012

Это недопустимо в C #.

Это может быть то, что показывает какой-то дизассемблер / декомпилятор, когда вы просите его сгенерировать C # из сборки, изначально написанной на языке, который поддерживает свободные функции (C ++ / CLI делает,Я думаю, что VB.NET также).

Возможно, этот декомпилятор также поможет найти строковый литерал.

Номер сообщения был заменен во время исходной компиляции, если вы хотите преобразовать его вWM_* константа, вам придется искать это самостоятельно.Компилятор не может узнать, какая из множества констант, равных 1024u, была в исходном коде.Для программиста .NET вы можете обратиться к этому списку оконных сообщений вместо заголовочных файлов SDK.

В целом, вам повезет, исправляя этот код вручную.

...