您如何确定您的默认.net
dll 是否已更改/修改/被黑客入侵?
举例System.Console.WriteLine
来解释我的意思。
如果WriteLine()
注入代码以两次写入输出,如下所示,
Console.WriteLine("Hello Programmers");
Output:
Hello Programmers
Hello Programmers
请注意,并非所有内容都需要“注入”才能获得奇怪的输出。
这是一个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);
}
}
与验证计算机上任何其他软件的完整性的方法相同:在确定检查工具可以信任后,将其与受信任的来源进行检查。这有点像第 22 条规则。基本上,您需要获得比攻击者更好的保护,这取决于攻击者可能介于非常容易和绝对不可能之间。
作为第一个创可贴,请尝试卸载并重新安装框架,并希望与 Microsoft 的 Internet 连接仍然是您计算机上的可信来源。