Java Obfuscator + Java Decompiler Tavsiye Edecek Var Mı?
-
Selamlar,
Java'da yazılmış bir aracı internet üzerinden tanıtmak/satmak istiyoruz fakat kodları başkalarının görüp anlamalarını istemiyoruz. "Zaten öyle" dememek lazım Java decompiler'lar bytecode'ları normal java koduna çeviriyorlar. Bu haliyle pek sağlıklı olmuyor. Bunun için yollar arayıp bulmuşlar, araçlar üretmişler.
Obfuscated code denen bir durum var, isimleri değiştiriyor, döngülerdeki index değerlerini aynı olacak şekilde ama daha karışık vs veriyor ve sonunda decompile edilse bile anlaşılması zor olan bytecode ortaya çıkıyor.
http://en.wikipedia.org/wiki/Obfuscated_code // Wiki
http://www.cs.arizona.edu/~collberg/Research/Students/DouglasLow/obfuscation.html // Yöntemler
Şifreleme olayını önerenler olabilir ama o deşifre edilirken performans kaybı yaşanıyor o yüzden tercih edilmeyecek. Bu yöntemde performans kaybı yok.
ProGuard diye bir tool kullandım Obfuscate işlemi için // http://proguard.sourceforge.net/
Test etmek için de JD-GUI diye bi decompiler kullandım. Ama sonuca baktım ki benim yazdığım koddan daha güzelini çıkardı nerdeyse :)
// http://java.decompiler.free.fr/?q=jdgui
Değişken isimlerini kısaltması sayesinde olsa gerek yeni class dosyası boyutu yaklaşık 1/3 oranında azaldı ama asıl koda yine ulaşılabilyor.
Acaba daha önce bu tür bir şeyle uğraşan oldu mu? İşe yarar bir Obfuscate yazılımı ile test etmek için kaliteli bir Java Decompiler önerecek olan var mı?
Yazılımlar Linux üzerinde çalışırsa daha hoş olur.
Şimdiden teşekkürler.
-
ben YUI Compressor (http://developer.yahoo.com/yui/compressor/) kullanıyorum, linux altında terminalden kullanabiliyorsun. bobfuscate + compress yapıyor, piyasadakilarin en başarılısı bu. Yahoo'nun projesi zaten.
bir de şöyle bir şey var. online tool yapmışlar, pek çok sıkıştırıcıyı bir arada kullandırıyor.
http://compressorrater.thruhere.net/
burdan da görülebileceği gibi YUI Compressor en iyi performansı sağlıyor, obfuscate+compress edildikten sonra zaten koddan pek bişi anlaşılmıyor ama üstüne istersen şifrelersin. yalnız unutma ki kodun her türlü çalınabiliyor :)
-
Ama bana JavaScript değil de Java için lazım. Sağolasın yine de.
-
jdeclipse decompiler
proguard obfuscator.
doğru kullandıysan classlarından değişken isimlere kadar zilyontane şey oluşur onu birleştirmek pek mümkün değil.