C# 防止程序被调试

C# 防止程序被调试,c#,security,reverse-engineering,C#,Security,Reverse Engineering,我在网上读到关于如何总是可以反编译大部分内容的文章。添加此方法是否会使黑客更难反编译程序: void PreventProgramFromBeingDebuged() { Task.Factory.StartNew(()=>{ while(true){ var a = DateTime.Now; Thread.Sleep(10); var b = DateTime.Now;

我在网上读到关于如何总是可以反编译大部分内容的文章。添加此方法是否会使黑客更难反编译程序:

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
         }      
     });
}

这种方法是显而易见的,但是你可以用一个信号量同步两个线程,这使得同样的代码更难理解。拥有这样的方法会让黑客的生活更加艰难吗?或者黑客不必调试程序就能反编译它

反编译可以在不运行代码的情况下完成。实际上,可以反编译,取出代码,重新编译。

反编译可以在不运行代码的情况下完成。实际上,您可以反编译、取出代码、重新编译。

如果用户系统负载过大(内存或其他资源不足),您的代码实际上会导致程序崩溃。您引入的不是阻止调试,而是一个令人讨厌的错误

通常,当您试图阻止某人对代码进行反向工程时,您是在为实际客户的问题做准备


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

如果用户系统负载过重(内存或其他资源不足),您的代码实际上会导致程序崩溃。您引入的不是阻止调试,而是一个令人讨厌的错误

通常,当您试图阻止某人对代码进行反向工程时,您是在为实际客户的问题做准备


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

+1谢谢!如果我让代码的其他几个部分依赖于该代码,会发生什么。例如,我使用反射来查看该方法是否存在,并将该有效性放置1000次。黑客必须找到我检查过的所有1000个入口,对吗?因此,如果黑客删除了该代码,那么他将不得不找到我检查的所有地方,这对他来说更加困难。然后我会改变if条件,这样它就不会出现奇怪的行为。添加该函数的目的是让别人无法查看你的代码,对吗?正如Keith所指出的,由于您的代码不一定要运行才能进行反编译,那么显然添加1000次该函数不会有什么不同。你需要在谷歌上搜索的是如何混淆你的代码。不管你做什么,只要有人下定决心,他们都能破解,关键是通过像模糊化这样的事情让它变得足够痛苦,并且不要在上面投入太多时间。因为一旦它破裂,所有用于阻止破裂的时间都被浪费了。唯一成功的预防措施是基于硬件的保护,如在playstation上。要困难得多,但即使如此,也不是100%+1谢谢!如果我让代码的其他几个部分依赖于该代码,会发生什么。例如,我使用反射来查看该方法是否存在,并将该有效性放置1000次。黑客必须找到我检查过的所有1000个入口,对吗?因此,如果黑客删除了该代码,那么他将不得不找到我检查的所有地方,这对他来说更加困难。然后我会改变if条件,这样它就不会出现奇怪的行为。添加该函数的目的是让别人无法查看你的代码,对吗?正如Keith所指出的,由于您的代码不一定要运行才能进行反编译,那么显然添加1000次该函数不会有什么不同。你需要在谷歌上搜索的是如何混淆你的代码。不管你做什么,只要有人下定决心,他们都能破解,关键是通过像模糊化这样的事情让它变得足够痛苦,并且不要在上面投入太多时间。因为一旦它破裂,所有用于阻止破裂的时间都被浪费了。唯一成功的预防措施是基于硬件的保护,如在playstation上。要困难得多,但即便如此,也不是100%我不认为“调试”一词的意思是你认为它的意思。你要找的是一个(字节)代码混淆器,如中。我不认为“调试”一词的意思是你认为它的意思。你要找的是一个(字节)代码混淆器,如中。+1让我学习术语海森堡,波堡,Mandelbug和Schroedingbug;^)+1.让我学习海森堡、博赫堡、曼德堡和薛定谔的术语;^)