En iyi Java obfuscator? [kapalı]


107

Bir güvenlik yazılımı geliştiriyorum ve java kodumu karıştırmak istiyorum, böylece tersine mühendislik yapmak imkansız hale gelecek. En güvenilir java obfuscator nedir?


10
@Xinus "tersine mühendislik yapmak imkansız hale geldi" - pek, en iyisi denedi ve başarısız oldu
karınca

212
Oldukça karmaşık bir kod yaratan bazı meslektaşlarım vardı. Ama niyetleri bu değildi.
Steve McLeod

7
It was once said that if you had an infinate amount of monkeys on typewiters and an infinate amount of time, they would write all of the great works of Shakespeare.- Dilbert
karınca

7
Tersine mühendislikten kaçınmak imkansızdır.
Mnementh

11
@Mnementh: Özel uygulamanız için tersine mühendisliği engelleyici bir şekilde pahalı hale getirmek yeterlidir.
Dmitry Leskov

Yanıtlar:


99

Öncelikle, bir şeyi tersine çevirmenin asla imkansız olmadığını unutmamalısınız . Her şey hacklenebilir. Akıllı bir IDE kullanan akıllı bir geliştirici zaten yeterince ileri gidebilir.

Pekala, burada bir liste bulabilirsiniz . ProGuard oldukça iyidir. Kendim kullandım, ancak yalnızca Java kodunu "küçültmek" için.


1
@BalusC: Peki, java kodunu gizlemek için hangi aracı kullanıyorsunuz? Java kodunuzu gizliyorsunuz, değil mi?
Thinhbk

@Thinhbk Obfuscation, kullanışlı yığın izleri almayı zorlaştırır.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen: Katılıyorum. IMO, gizleme yığın izlerini çoğunlukla yararsız hale getirecektir. Bu durumda, günlük mesajında ​​yardımcı olabilecek bazı hileler kullanıyorum.
Thinhbk

2
@Thinhbk Proguard, belirsiz yığın izlerini orijinal koda çevirmek için bir harita oluşturur. Aksi takdirde, dediğin gibi, yığın izleri işe yaramaz hale gelirdi (ama yine de yakalanmayan istisnalar alır ... ;-))
Matthieu

@Matthieu: Yığın izini orijinal koda otomatik olarak çevirmek mümkün mü? Benim için harika ve yeni olurdu. Kod tabanı çok büyükse, manuel olarak geri çevirmenin zor olabileceğini biliyorum.
Thinhbk

33

Bir bilgisayar onu çalıştırabiliyorsa, uygun şekilde motive olmuş bir insan onu tersine çevirebilir.


3
Kaç kişi gizlenmiş kodu okuyabilir ve mantığı anlayabilir? Bir sürü mühendis arkadaşım var ve bunu yapamazlar. Bunu yalnızca John Nash yapabilir;)
kodmanyagha

5
@kodmanyagha Yeterince motive olsalardı, öğrenirlerdi. Zor değil.
Thorbjørn Ravn Andersen

1
Matematiksel anlamda, tersine mühendislik yapmanın bir yolu olmadan çalıştırmak mümkündür. Homomorfik şifrelemenin konusu budur, ancak SaaS'ın aksine bilgisayar yazılımında pratik olarak kullanılabilir hale getirmek için çözülmesi gereken pek çok engel vardır. Oraya yavaşça hareket ediyoruz. Gentry'nin tamamen homomorfik şifreleme ve "matematiksel yapboz bulmacaları" üzerine ufuk açıcı çalışmaları Amit Sahai ve ark. bu yönde büyük bir sıçrama yaptı. Tüm şemayı uygulanabilir kılacak tek bir eksik öğe (ben buna "bariyer işlevi" adını veriyorum) var. Şimdi imkansız olan şey gelecekte mümkün olacak.
ogggre

30

Benim makalemize göz atın Java kodu koruyun - obfuscators Ve Ötesi sayesinde [Arşivlenen] Diğer üç daha pahalı uygulamalarınızın ters mühendislik hale getirmenin yollarını ve araçları ve ileri okuma materyalleri bağlantılarının bulunduğu bir koleksiyon vs kandırma bir tartışma için.


1
Aslında ihtiyacım olan şey bu. Projelerim için PHP obfuscator yazmak istiyorum. Mantık her yerde aynı. Teşekkürler ...
kodmanyagha

1
Java gizleme ve Yazılım koleksiyonu hakkında harika ve kapsamlı makale.
m3nda

15

Bence Proguard en iyisi. IDE'nizle entegre etmek de mümkündür (örneğin NetBeans). Ancak, kodunuzu karmaşık hale getirirseniz, günlüklerinizdeki sorunları izlemenin zor olabileceğini unutmayın.


6
"Kodunuzu karmaşık hale getirirseniz, günlüklerinizdeki sorunları izlemenin zor olabileceğini düşünün" için +1. Tam da hata ayıklamanın yeterince zor olduğunu düşündüğünüzde ...
Adam Paynter

7
İsimleri ve satır numarası bilgilerini değiştiren iyi bir gizleyici, süreci tersine çevirmek için bir günlük oluşturmalıdır. Bu şekilde, en azından yığın izleri, gizlenmiş ikili dosyalar için yararlı kalır.
Joachim Sauer

3
ProGuard, hata ayıklama için bu tür ters dosyalar oluşturur. :-)
Malax



7

Bir kodu tersine çevirmenin her zaman mümkün olduğu doğrudur, tıpkı bir evi kimsenin ondan çalamayacak şekilde korumak imkansız olduğu gibi. Yine de bu beni kapıyı kilitlemekten alıkoymuyor. Aslında java dünyasında değilim, BitHelmet'i .net için kullanıyorum .


7
+1 sizi ağ 0'a geri getirecek. Bu cevap yardımcı değildir.
HaloWebMaster

6

Önceki şirketimde Klassmaster ile çalışıyordum ve gerçekten iyi çalışıyor ve derleme sistemleriyle oldukça iyi entegre edebiliyor (maven desteği mükemmel). Ama yine de ücretsiz değil.



6

Çözümün güvenli olup olmadığından emin değilim, ancak ClassGuard çözümü hakkında makaleyi ve yorumu şu adresten okumak ilginç: http://www.javaworld.com/community/?q=node/1604#comment -12296


Ve defineClass yerine yerel kodu kullanan bir başka alternatif de JarCrypt
Renato

ClassGuard'ın nasıl kırılacağını öğreten bir makale : setrst.blogspot.com/2010/04/classguard-unguarded.html . Bunun en son sürümde hala çalışıp çalışmadığını bilmiyorum.
Renato
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.