这些代码行是否被混淆(C#)?
HWND__* ptr = <Module>.FindWindowW(null, (char*)(&<Module>.??_C@_19HAIJKKDJ@?$AA7?$AA5?$AA5?$AA4?$AA?$AA@));
<Module>.SendNotifyMessageW(ptr, 1024u, (uint)num, 0);
如果是,是否有软件对它们进行去模糊处理?
完整方法(代码由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>.??_C@_19HAIJKKDJ@?$AA7?$AA5?$AA5?$AA4?$AA?$AA@));
<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);
}
答案 0 :(得分:3)
这不是有效的C#。
当你要求它从一个最初用支持自由函数的语言编写的程序集中生成C#时,可能会出现一些反汇编程序/反编译器所显示的内容(C ++ / CLI确实如此,我认为VB.NET也是如此)。
也许反编译器还提供了帮助定位字符串文字。
在原始编译期间替换了消息编号,如果要将其转换为WM_
*常量,则必须自己查找。编译器无法知道原始源中有多个等于1024u的常量中的哪一个。对于.NET程序员,您可以参考this list of Window Messages而不是SDK头文件。
总的来说,您可以手动修复此代码。
答案 1 :(得分:0)
似乎是编译器生成的代码,可能是来自混合模式程序集(C ++。Net)。但是,应用字符串加密的机会很小。我将反编译其他方法,并检查它们是否包含字符串(类似manager.GetObject(“ $ this.BackgroundImage”)之类的东西)。如果您可以通过其他方法找到字符串,则代码肯定不会混淆。