ソフトウェアにおける難読化(英: obfuscation)とは、コンピュータプログラムの動作を変えずに、プログラムコードの内部的なサブルーチン(手続き)の内容・構造・データなどを、人間にとって読み取りにくくなるように改変・加工すること。難読化の対象はソースコードであったり、ソースコードから生成されるマシンコードまたはバイトコードなどの中間表現であったりすることもある。難読化されたコード(obfuscated code)は第三者によるプログラムの解読・解析が困難になる。