如何确定您的默认.net
dll是否已更改/修改/黑客攻击?
以System.Console.WriteLine
解释我的意思为例。
如果WriteLine()
是注入的代码,则输出两次,如下所示,
Console.WriteLine("Hello Programmers");
Output:
Hello Programmers
Hello Programmers
答案 0 :(得分:1)
与验证计算机上任何其他软件的完整性的方式相同:在确定检查工具可信任后,请在可靠来源上进行检查。这有点像22。基本上,您需要获得比攻击者更好的保护,这取决于攻击者可能介于死亡之间,绝对不可能。
作为第一个创可贴,请尝试卸载并重新安装该框架,并希望与Microsoft的互联网连接仍然是您计算机上值得信赖的来源。
答案 1 :(得分: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);
}
}