
JObfuscatorは、Javaプログラミング言語向けのソースコード難読化ツールです。Javaソースコードとアルゴリズムを、ハッキング、クラッキング、リバースエンジニアリング、逆コンパイル、技術窃取から保護できます。
JObfuscatorは、Javaソースコードの真の機能を保護・隠蔽するために、さまざまな難読化技術を採用しています。
すべての変数とメソッドをリネームし、コードフローを非線形化して難読化し、最先端のポリモーフィックな文字列暗号化エンジンで全文字列を暗号化します。
技術的な詳細、ダウンロード、ドキュメントは以下で入手できます:
https://www.pelock.com/products/jobfuscator

WindowsとLinux(Monoが必要)で利用可能です:
https://www.pelock.com/products/jobfuscator/download
複数のプログラミングAPIが利用可能です:
https://www.pelock.com/products/jobfuscator/api
オンライン難読化インターフェース:
https://www.pelock.com/jobfuscator/
Javaで記述され、JAR、WAR、CLASS形式にコンパイルされたアプリケーションは、逆コンパイルに対して脆弱です。
コンパイルされたコードをほぼ完全にJavaソースへ復元できる逆コンパイラが数多く存在します。
問題は、コンパイルされたJavaコードが、ネイティブCPUコード(x86やx86-64など)とは対照的に、JVM用のいわゆるバイトコードとして記述されていることです。
この形式のコードは、完全に文書化されていることに加え、高水準のJavaソースコード内で元の命令を非常に正確に再現できるためです。
次の例を見てください:

これは逆コンパイルされたJavaコードです!すべての変数、プロパティ、メソッド名が読み取れます。逆コンパイルされたプロジェクト全体を簡単にナビゲートし、クラスからクラスへ移動することもできます。
驚きましたか?それは、競合他社、ハッカー、クラッカー、その他誰かに分析されているあなたのソフトウェアかもしれません。
彼らはそれで何ができるのでしょうか?ほとんどの場合、ソフトウェアまたはそのアルゴリズムは、競合製品に盗用または複製されます。
また別のケースでは、ソフトウェアがクラックされ、逆コンパイルされたソースコード内のライセンスチェックが明確に確認され、パッチが適用されたり、クラックされたソフトウェア全体が再コンパイルされて海賊版サイトで公開されたりします。
難読化とは、Javaソースコードを保護されたバージョンへ変換するプロセスです。
機能は変更されず、すべてが同じように動作しますが、ソースコードと最終的にコンパイルされたバイトコードは、逆コンパイル後であってもリバースエンジニアリング解析から保護されます。
import java.util.; import java.lang.; import java.io.*;
// // you must include a custom annotation // to enable the entire class or a single // method obfuscation // @Obfuscate class Ideone { //@Obfuscate public static double calculateSD(double numArray[]) { double sum = 0.0, standardDeviation = 0.0; int length = numArray.length;
for(double num : numArray) {
sum += num;
}
double mean = sum/length;
for(double num: numArray) {
standardDeviation += Math.pow(num - mean, 2);
}
return Math.sqrt(standardDeviation/length);
}
//
// selective obfuscation strategies
// can be applied for the entire
// class or a single method (by
// default all obfuscation strategies
// are enabled when you use @Obfuscate
// annotation alone)
//
//@Obfuscate(
// array_int_crypt = true,
// array_char_crypt = true,
// array_double_crypt = true,
// array_string_crypt = true,
// split_strings = true,
// crypt_strings = true,
// rename_methods = false,
// shuffle_methods = true,
// ints_math_crypt = true,
// dbls_math_crypt = true,
// rename_variables = true,
// mix_code_flow = true,
// string_char_vault = true,
// ints_from_double_math = true,
// opaque_mixer_chain = true,
// complexify_booleans = true,
// try_finally_noise = true,
// ints_to_arrays = true,
// dbls_to_arrays = true
// )
public static void main(String[] args) {
double[] numArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
double SD = calculateSD(numArray);
System.out.format("Standard Deviation = %.6f", SD);
}
}
### 難読化後の同じJavaソースコード```java
////////////////////////////////////////////////////////////////////////////////
//
// An output from JObfuscator v1.30 - Bartosz Wójcik
//
// Website : https://www.pelock.com/products/jobfuscator
// Version : v1.30
// Params : /MixCodeFlow /RenMethods /RenVars /ShuffleMethods /ArrayIntCrypt
// /ArrayDoubleCrypt /ArrayCharCrypt /ArrayStringCrypt
// /IntsMathCrypt /DblsMathCrypt /StringSplit /CryptStr
// /StringCharVault /IntsFromDoubleMath /OpaqueMixerChain
// /ComplexifyBooleans /TryFinallyNoise /IntsToArray /DblsToArray
// New lines : Windows (CRLF - \r\n)
// Date : 12.05.2026
//
////////////////////////////////////////////////////////////////////////////////
import java.util.*;
import java.lang.*;
import java.io.*;
import java.lang.Math.*;
class Ideone {