我正在互联网上阅读有关如何总是可以反编译所有内容的信息。将添加此方法使黑客更难反编译程序:
void PreventProgramFromBeingDebuged()
{
Task.Factory.StartNew(()=>{
while(true){
var a = DateTime.Now;
Thread.Sleep(10);
var b = DateTime.Now;
// if difference in time is greater than 1 second it means the program has stopped executing
if( (b-a).TotalSeconds > 1)
// then make appliction crash or make it behave the way it is not suppose to
}
});
}
这种方法很明显但你可以通过信号量同步两个线程,使相同的代码更难理解。拥有这样的方法会让黑客的生活更加艰难吗?或者黑客是否不必调试程序才能对其进行反编译?
答案 0 :(得分:3)
可以在不运行代码的情况下完成反编译。实际上,可以反编译,取出这段代码,重新编译。
答案 1 :(得分:3)
如果用户系统负载过重(内存或其他资源不足),您的代码实际执行的操作会导致程序崩溃。您没有阻止调试,而是引入了令人讨厌的Heisenbug。
通常当您试图阻止某人对您的代码进行逆向工程时,您就会在实际客户面前解决问题。
编辑:只要用户计算机自动将时钟与时间源同步,您的程序就可能会崩溃。