如何部分去混淆 .NET 二进制文件?

问题描述

我有一段混淆代码

public static string P = "粹ताYwN의도==";

// Token: 0x06000038 RID: 56 RVA: 0x00004BF4 File Offset: 0x00002DF4
public static void u()
{
checked
   {
...
P = Encoding.UTF8.GetString(Convert.FromBase64String(Strings.Replace(Strings.Replace(Strings.Replace(Strings.Replace(P,"粹","M",1,-1,CompareMethod.Binary),"ता","T","의도","A","에","e",CompareMethod.Binary)));
...
}}

问题是:

  1. 对此类字符串进行反混淆的基本方法是什么?

  2. 是否有可能以某种方式自动解密 P 变量? P 可能以不同的方式加密,但总是有像“P = F(...)”这样的赋值。 F() 不依赖于任何外部 API。此外,它不依赖于任何以前的代码。它甚至可以像“P = 4”一样简单。

不幸的是,我受到 Linux 的限制。我也可以使用 Python/C 编写代码。不过,如果有适用于 Windows 的解决方案,我也很感兴趣。

更新: 我成功地使用 MIASM 在一些项目中模拟 x86/x64。所以,我可以得到函数执行结果。大概,我也需要这样的工具/框架。

另外,我知道像 de4dot 和其他反混淆器这样的工具。然而,他们的直接执行并没有帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)