防止程序被调试

本文关键字:调试 程序 | 更新日期: 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。

通常,当你试图阻止某人对你的代码进行逆向工程时,你正在为自己在实际客户的道路上设置问题。

编辑:当用户计算机自动同步时钟与时间源时,您的程序也可能崩溃。