1

您如何确定您的默认.netdll 是否已更改/修改/被黑客入侵?

举例System.Console.WriteLine来解释我的意思。

如果WriteLine()注入代码以两次写入输出,如下所示,

Console.WriteLine("Hello Programmers");
Output:
Hello Programmers
Hello Programmers
4

2 回答 2

1

请注意,并非所有内容都需要“注入”才能获得奇怪的输出。

这是一个LINQPad程序,除了正常的合法 .NET 代码外,它可以复制您的问题:

void Main()
{
    Inject();

    Console.WriteLine("Hello Programmers");
}

public static void Inject()
{
    Console.SetOut(new InjectedTextWriter(Console.Out));
}

public class InjectedTextWriter : TextWriter
{
    private readonly TextWriter _InternalWriter;

    public InjectedTextWriter(TextWriter internalWriter)
    {
        _InternalWriter = internalWriter;
    }

    public override Encoding Encoding
    {
        get
        {
            return _InternalWriter.Encoding;
        }
    }

    public override void Write(string text)
    {
        _InternalWriter.Write(text);
        _InternalWriter.Write(text);
    }

    public override void WriteLine(string text)
    {
        _InternalWriter.WriteLine(text);
        _InternalWriter.WriteLine(text);
    }
}
于 2013-09-13T10:16:06.527 回答
1

与验证计算机上任何其他软件的完整性的方法相同:在确定检查工具可以信任后,将其与受信任的来源进行检查。这有点像第 22 条规则。基本上,您需要获得比攻击者更好的保护,这取决于攻击者可能介于非常容易和绝对不可能之间。

作为第一个创可贴,请尝试卸载并重新安装框架,并希望与 Microsoft 的 Internet 连接仍然是您计算机上的可信来源。

于 2013-09-13T09:45:11.247 回答