ソフトウェアにおける難読化(英: obfuscation)とは、コンピュータプログラムの動作を変えずに、プログラムコードの内部的なサブルーチン(手続き)の内容・構造・データなどを、人間にとって読み取りにくくなるように改変・加工すること[1]。難読化の対象はソースコードであったり、ソースコードから生成されるマシンコードまたはバイトコードなどの中間表現であったりすることもある。難読化されたコード(obfuscated code)は第三者によるプログラムの解読・解析が困難になる。 おおよそ2つのいずれかの目的のため、プログラマのコーディング、専用アプリケーション、または開発ツールの補助機能によって、ソースコードや実行コードに対して故意にロジックやデータなどの難読化、曖昧化が施される。 コードの目的を隠蔽したり(難解さに基づくセキュリティ(英語版)を参照)、改竄(タンパリング)やリバースエンジニア