質問
だ誰にも用/無料javaのobfuscators自らの製品化に向けて動き出す。いつのプロジェクトを実際にあったobfuscatingのantビルドステップのためリリースなどで行っています。
い蓑?場合は、なぜ蓑?
でも、これまでにないのコードはそれだけで良い感じの開発者/経営者の?
編集: Ok、正確に自分のポイント:い蓑を守るIPアルゴリズムの仕事だけお客様の製品)?んですが、蓑セキュリティ上の理由により、しないを感じます。なんだ話を保護する用途にコードに対す。
@staffan 良い点:
の理由な場所には近づかないでくださいチェーンコードの流れは一部の変更は不可能では、JVMを効率的に最適なコードです。有効なので実際の性能を低下させるのご使用をご検討ください。
解決
だ蓑らobfuscatorsる具体的な方法を以下に示す変化によるコードの流れおよび/または追加す例外ブロックなどで分解しにくい。のコードを読で通常は十分では変更すべての名前の法分野と。
の理由から変更コードの流れは一部の変更は不可能では、JVMを効率的に最適なコードです。有効なので実際の性能を低下させるのご使用をご検討ください。
他のヒント
こ歳(古典)の難読化す役割は徐々に後退握する。いる場合がほとんどである古典obfuscators破のスタックトレースで良くないので支援のお客様)
現在の主なポイントなの保護のたアルゴリズムが保護のために機密データ:APIのログインパスワード/キーコードの責任ライセンス海賊行為もここでは、特に西欧、ロシア、アジア、厚),広告のアカウントIdなど。
面白いるかのようにいすべての繊細なデータを文字列です。実際に文字列を50~80%のロジックのアプリケーションそのための将来の難読化には"文字列の暗号化ツール".
今は"文字列の暗号化"機能を使用できるのは、商業obfuscatorsなど: Allatori, Zelix KlassMaster, Smokescreen, ご返品:新品/未使用ラベル等のJava難読化ツールキット, 訪.
N.B.私のCEOでLicel LLC.開発者のご返品:新品/未使用ラベル等のJava Obfuscator.
使っていproguardのためのJavaME。なものでjarファイルを小さい(必須のためのモバイル)として便利ですぐにこの装置-特定のコードに頼らずIDEかなり非好意的前処理ツールなどのアンテナです。
E.g.
public void doSomething()
{
/* Generated config class containing static finals: */
if (Configuration.ISMOTOROLA)
{
System.out.println("This is a motorola phone");
}
else
{
System.out.println("This is not a motorola phone");
}
}
この取得を作成し、obfuscated、クラスファイルとして終わった記述:
public void doSomething()
{
System.out.println("This is a motorola phone");
}
できるのでバコードの動作メーカーのバJVM/図書館の実装でなく充填の最終実行可能なクラスファイルです。
していることが商業obfuscatorsでも統合クラスファイルと場合があります。るので便利ですので、大きなサイズの架をzip(jar)ファイルです。
私もこのようなJava obfuscators、これまでのマイルの先を行く: JBCO.この残念なことに少し面倒な設定、GUIでのレベルの難読化で生成するのではない。い供給すると、簡単なループがdecompilerなクラッシュしようと負荷しまうようになります:
if(i < ll1) goto _L6; else goto _L5
_L5:
char ac[] = run(stop(lI1l));
l7 = (long)ac.length << 32 & 0xffffffff00000000L ^ l7 & 0xffffffffL;
if((int)((l7 & 0xffffffff00000000L) >> 32) != $5$)
{
l = (long)III << 50 & 0x4000000000000L ^ l & 0xfffbffffffffffffL;
} else
{
for(l3 = (long)III & 0xffffffffL ^ l3 & 0xffffffff00000000L; (int)(l3 & 0xffffffffL) < ll1; l3 = (long)(S$$ + (int)(l3 & 0xffffffffL)) ^ l3 & 0xffffffff00000000L)
{
for(int j = III; j < ll1; j++)
{
l2 = (long)actionevent[j][(int)(l3 & 0xffffffffL)] & 65535L ^ l2 & 0xffffffffffff0000L;
l6 = (long)(j << -351) & 0xffffffffL ^ l6 & 0xffffffff00000000L;
l1 = (long)((int)(l6 & 0xffffffffL) + j) & 0xffffffffL ^ l1 & 0xffffffff00000000L;
l = (long)((int)(l1 & 0xffffffffL) + (int)(l3 & 0xffffffffL)) << 16 & 0xffffffff0000L ^ l & 0xffff00000000ffffL;
l = (long)ac[(int)((l & 0xffffffff0000L) >> 16)] & 65535L ^ l & 0xffffffffffff0000L;
if((char)(int)(l2 & 65535L) != (char)(int)(l & 65535L))
{
l = (long)III << 50 & 0x4000000000000L ^ l & 0xfffbffffffffffffL;
}
}
}
}
お知らないJavaあった五島なの?ものJVMでのサポート=)
使ってい ProGuard お勧めします。が難読化は保護コードからカジュアル攻撃者は、主利益の最小化を取り除く効果使用したクラスとメソッドを短縮すべての識別子を1または2文字です。
と思いることの難読化は無意味である:もとのフル-ソースコードで一般的にハードなどの画意図したと仮定がないコメントは、意味のある名前ローカル変数である場合の再発生源からのバイトコード)難読化だけで美しく飾りのケーキになります。
と思う開発者、特に経営者が大幅に上誇張すようにソースコード。をdecompilersきもみのソースコードな些細な事で、コストまでもないリーガル、行政書士、司法書士)がこのアプローチェ。みくださいdecompiledデバッグ問題閉じソースのベンダー製品(デッドロックDBに抽象化層か).Bytecodeったobfuscatedと思いますがそれでも見つかり、元の問題で実際のデザインの問題です。
うことなんでしょうけれどもを 何 ソースコードを確実に保護するために、どのようで分散されたお客様に。い蓑、何もしませんで見つかりしたもので、特にやりがありますので、予約制とさせり困ります。ればアクセスできる当社のJARファイルとしての知識できる秘の中には、あまり心配ないよripオソースコード。