1

ほとんどすべてを逆コンパイルすることが常に可能である方法について、インターネットで読んでいました。このメソッドを追加すると、ハッカーがプログラムを逆コンパイルするのが難しくなります:

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

その方法は明らかですが、セマフォによって 2 つのスレッドを同期させて、同じコードを理解しにくくすることができます。そのような方法を持つことは、ハッカーの生活をより困難にするでしょうか? それとも、ハッカーは逆コンパイルするためにプログラムをデバッグする必要がないのでしょうか?

4

2 に答える 2

3

あなたのコードが実際に行っていることは、ユーザーのシステムに大きな負荷がかかる (メモリやその他のリソースが不足している) 場合に、プログラムをクラッシュさせることです。デバッグを妨げる代わりに、厄介なHeisenbugを導入しています。

多くの場合、誰かがコードをリバース エンジニアリングするのを阻止しようとすると、実際の顧客からの将来の問題に備えることになります。

編集:ユーザーのコンピューターがクロックをタイムソースと自動的に同期するたびに、プログラムがクラッシュする可能性もあります。

于 2013-06-05T01:31:52.667 に答える
3

逆コンパイルは、コードを実行せずに行うことができます。実際、逆コンパイルして、このコードを取り出して再コンパイルできます。

于 2013-06-05T01:05:48.113 に答える