C# 他们是否混淆了C代码?

C# 他们是否混淆了C代码?,c#,obfuscation,deobfuscation,C#,Obfuscation,Deobfuscation,这些代码行混淆了吗 这是无效的 这可能就是某些反汇编程序/反编译器在要求它从最初用支持自由函数的语言编写的程序集生成C#时所显示的情况(C++/CLI有,我认为VB.NET也有) 也许反编译器还提供了定位字符串文本的帮助 消息编号在原始编译过程中被替换,如果要将其转换为WM_u*常量,必须自己查找。编译器无法知道原始源代码中有多少等于1024u的常量。对于.NET程序员,您可以参考而不是SDK头文件 总的来说,手工修复这段代码会更好。这似乎是编译器生成的代码,可能来自混合模式程序集(C++.Ne

这些代码行混淆了吗

这是无效的

这可能就是某些反汇编程序/反编译器在要求它从最初用支持自由函数的语言编写的程序集生成C#时所显示的情况(C++/CLI有,我认为VB.NET也有)

也许反编译器还提供了定位字符串文本的帮助

消息编号在原始编译过程中被替换,如果要将其转换为
WM_u
*常量,必须自己查找。编译器无法知道原始源代码中有多少等于1024u的常量。对于.NET程序员,您可以参考而不是SDK头文件


总的来说,手工修复这段代码会更好。

这似乎是编译器生成的代码,可能来自混合模式程序集(C++.Net)。但是,应用字符串加密的可能性很小。我将反编译其他方法并检查它们是否包含字符串(类似于manager.GetObject(“$this.BackgroundImage”))。如果您可以在其他方法中找到字符串,那么代码肯定不会被混淆。

这看起来比混淆的C代码更接近标准C++/CLI的输出。@JaredPar:它只是包含一些编译器生成的名称,在C++/CLI、C++/CLI、VB.NET或我所知的其他任何东西中都不是合法的标识符。或者它们可能是由反汇编程序生成的。在C++中可能有一些不常见的语法,因为它在<代码>不安全的< /Cube >子集中,但是<代码> UTEN>代码>是C类型的关键字,而在C++中没有找到。@ BenVoigt,是的,代码是由ILIST分解的。decomplier@JatSing-不,它没有被弄得那么混乱,这正是ILSpy反编译对非托管代码的引用的方式(想想平沃克)@M:哦,好吧。删除愚蠢的评论。
1024
0x400
,这是
WM#u USER
我发现它非常接近C,请看我问题中的更新。VB.NET不支持自由函数。它们必须在
模块中,这本质上是一个带有额外属性applie的C#
静态类d、 @Jonathanalen:但不是一个类的成员,
正是反汇编代码中显示的内容。
HWND__* ptr = <Module>.FindWindowW(null, (char*)(&<Module>.??_C@_19HAIJKKDJ@?$AA7?$AA5?$AA5?$AA4?$AA?$AA@));        
<Module>.SendNotifyMessageW(ptr, 1024u, (uint)num, 0);
// 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);
}
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);
}