【问题标题】:Mono.Cecil - obfuscated malicious codeMono.Cecil - 混淆恶意代码
【发布时间】:2013-12-10 03:20:18
【问题描述】:

在这篇很棒的文章 (http://eatplayhate.wordpress.com/2010/07/18/mono-cecil-vs-obfuscation-fight/) 中,作者声称 Mono.Cecil 并不完美,但它翻译了 90% 的功能没有任何问题。

我对你们的问题是:一个邪恶的程序员能否混淆使用 Mono.Cecil 无法反混淆的恶意代码,从而严重破坏我的程序(第 3 方代码)? 如果答案是肯定的,您知道我可以使用哪些符号来编写此类代码,或者我如何保护自己免受此类代码的伤害?

【问题讨论】:

  • 您想专门防止反混淆吗?还是反对混淆?
  • 在我的情况下,我得到了我对其进行了去混淆处理的第 3 方代码
  • 如果你想去混淆一些东西,看看这个:bitbucket.org/0xd4d/de4dot 这比 mono-cecil 好得多,它的目的不是真正的混淆,它只是一种混淆的手段
  • 感谢您的回答 我还需要回答我提出的问题吗?有才华的程序员能写出我无法反混淆的恶意代码吗?
  • 不。 de4dot 对当今已知的任何事物进行去混淆处理。当然,它可能会在未来发生变化,但没有人可以预测未来。

标签: obfuscation mono.cecil deobfuscation


【解决方案1】:

当然,一个邪恶的程序员总是能比你去混淆它更好地混淆代码。预先确定任意代码的行为毕竟是一个不可判定的问题。

更实际地,混淆与去混淆的斗争只是看谁付出更多的努力。混淆比反混淆容易得多,但出于各种原因,商业混淆器往往不如您可以手写或使用自定义混淆器编写的复杂得多。 Mono Cecil 足以对许多常见的混淆工具进行反混淆这一事实并不意味着它可以对后者做任何事情。

如果您想了解一些可以使用手动混淆代码提取的技巧,请查看this crackme。它是 Java 字节码而不是 CLI,但想法是相似的。在撰写本文时,甚至没有人解决它,尽管crackme 由单个类中的单个方法组成。它甚至不使用反射,正确使用反射几乎不可能实现自动反混淆。

然而,真正的问题是您要对此做什么。您是否正在尝试检查任意代码是否存在恶意行为?对不起,但这实际上是不可能的。您需要在沙盒中运行它。

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多