Visual Studio 2005 および 2008 に同梱されている「軽量」バージョンの Dotfuscation など、難読化のための一般的なツールがいくつかあります。これらのツールには、変数名や関数名の名前変更以上の機能を備えた Pro バージョンがあります。ただし、コードはまだ表示可能で、ソフトウェアのロジック フローを読みにくく理解するのを難しくするために少しスクランブルをかけているだけです。
もう 1 つの手法は、プログラムを暗号化し、実行時に復号化する他のプログラムを使用することです。ただし、これも完全な解決策ではありません。実際、十分な時間と労力を費やした場合、決心したエンジニアがソフトウェアをリバース エンジニアリングするのを防ぐ完全な解決策はないと私は認識しています。
結局のところ、カジュアルなハッカーを思いとどまらせるのを十分に困難にし、リバース エンジニアリングをできる限りコストがかかるようにする保護レベルを決定することになります。お金、または理想的にはその両方。リバース エンジニアリングのコストが高くなればなるほど、努力を惜しまない個人の数は少なくなります。そして、それが難読化の大きなポイントです。
ネイティブ コードにコンパイルされる C++ コンパイラのようなコンパイラを使用すると、この種のリバース エンジニアリングを防ぐことができると考える人もいますが、そうではありません。優れた逆アセンブラーを使用すると、純粋なバイナリ実行可能ファイルでさえもリバース エンジニアリングできるため、完全なソリューションは存在しません。コンピューターがコードを読み取って実行できる場合、コンピューターが使用しているメモリをスキャンして追跡し、暗号化、難読化、またはコードを決心したエンジニアの手に渡さないようにするその他の手段をすべて回避できます。