防止程序被调试
本文关键字:调试 程序 | 更新日期: 2023-09-27 18:16:52
我在网上读到关于什么都可以反编译的文章。添加这个方法会使黑客更难反编译程序吗?
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
}
});
}
这个方法很明显,但是你可以用一个信号量来同步两个线程,这使得同样的代码更难理解。拥有这样的方法会让黑客的日子更难过吗?或者黑客不需要为了反编译而调试程序吗?
可以在不运行代码的情况下进行反编译。其实可以反编译,把这段代码拿出来,重新编译。
如果用户系统负载过重(内存或其他资源不足),您的代码实际上会导致程序崩溃。你不但没有阻止调试,反而引入了一个讨厌的Heisenbug。
通常,当你试图阻止某人对你的代码进行逆向工程时,你正在为自己在实际客户的道路上设置问题。
编辑:当用户计算机自动同步时钟与时间源时,您的程序也可能崩溃。