Obfuscator Java terbaik? [Tutup]

107

Saya sedang mengembangkan perangkat lunak keamanan dan ingin mengaburkan kode java saya sehingga tidak mungkin untuk melakukan rekayasa balik. Apa obfuscator java paling andal?

Xinus
sumber
10
@Xinus "menjadi mustahil untuk merekayasa balik" - hampir tidak, yang terbaik telah mencoba dan gagal
semut
212
Saya memiliki beberapa kolega yang membuat beberapa kode yang sangat dikaburkan. Tapi itu bukan niat mereka.
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
semut
7
Tidak mungkin untuk menghindari rekayasa balik.
Mnementh
11
@Mnementh: membuat rekayasa balik menjadi sangat mahal untuk aplikasi tertentu Anda.
Dmitry Leskov

Jawaban:

99

Pertama, Anda benar-benar perlu mengingat bahwa tidak pernah mustahil untuk merekayasa balik sesuatu. Semuanya bisa diretas. Pengembang cerdas yang menggunakan IDE cerdas sudah bisa melangkah cukup jauh.

Nah, Anda dapat menemukan daftarnya di sini . ProGuard cukup bagus. Saya telah menggunakannya sendiri, tetapi hanya untuk "mengecilkan" kode Java.

BalusC
sumber
1
@BalusC: Jadi alat apa yang Anda gunakan untuk mengaburkan kode java? Anda mengaburkan kode java Anda, bukan?
Thinhbk
Obfuscation @Thinhbk mempersulit mendapatkan pelacakan tumpukan yang berguna.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen: Setuju. IMO, obfuscation akan membuat jejak tumpukan menjadi tidak berguna. Dalam hal ini, saya menggunakan beberapa trik dengan pesan log, yang dapat membantu.
Thinhbk
2
@Thinhbk Proguard membuat peta untuk menerjemahkan jejak tumpukan yang dikaburkan kembali ke kode aslinya. Jika tidak, seperti yang Anda katakan, jejak tumpukan akan menjadi tidak berguna (tapi tetap mendapatkan pengecualian yang tidak tertangkap ... ;-))
Matthieu
@ Matthieu: Apakah mungkin untuk menerjemahkan pelacakan tumpukan yang didukung ke kode asli secara otomatis? Ini akan menjadi luar biasa, dan baru bagi saya. Saya hanya tahu menerjemahkan kembali secara manual bisa sulit jika basis kodenya besar.
Thinhbk
33

Jika komputer dapat menjalankannya, manusia yang memiliki motivasi yang sesuai dapat merekayasa baliknya.

Thorbjørn Ravn Andersen
sumber
3
Berapa banyak orang yang dapat membaca kode yang dikaburkan dan memahami logikanya? Saya punya banyak teman insinyur dan mereka tidak bisa melakukan itu. Hanya John Nash yang dapat melakukan ini;)
kodmanyagha
5
@kodmanyagha Jika mereka cukup termotivasi, mereka akan mempelajarinya. Tidak sulit.
Thorbjørn Ravn Andersen
1
Dalam pengertian matematis, adalah mungkin untuk berjalan tanpa cara untuk merekayasa baliknya. Inilah inti dari enkripsi homomorfik, tetapi ada beberapa kendala yang perlu dipecahkan agar dapat digunakan secara praktis pada perangkat lunak komputer dibandingkan dengan SaaS. Kami bergerak ke sana perlahan. Karya utama Gentry tentang enkripsi homomorfik sepenuhnya dan "teka-teki jigsaw matematika" oleh Amit Sahai et al. membuat lompatan besar ke arah itu. Hanya ada satu elemen yang hilang (yang saya sebut "fungsi penghalang") yang akan membuat seluruh skema menjadi mungkin. Apa yang tidak mungkin sekarang akan menjadi mungkin di masa depan.
ogggre
30

Lihat artikel saya Lindungi Kode Java Anda - Melalui Obfuscators And Beyond [Diarsipkan] untuk diskusi tentang kebingungan vs tiga cara lain untuk membuat rekayasa balik aplikasi Anda lebih mahal, dan kumpulan tautan ke alat dan bahan bacaan lebih lanjut.

Dmitry Leskov
sumber
1
Inilah yang sebenarnya saya butuhkan. Saya ingin menulis obfuscator PHP untuk proyek saya. Logikanya sama di mana-mana. Terima kasih ...
kodmanyagha
1
Artikel keren dan ekstensif tentang obfuscation Java dan koleksi Software.
m3nda
15

Saya pikir Proguard adalah yang terbaik. Dimungkinkan juga untuk mengintegrasikannya dengan IDE Anda (misalnya NetBeans). Namun, pertimbangkan bahwa jika Anda menyamarkan kode, mungkin sulit untuk melacak masalah di log Anda ..

andrew0007
sumber
6
+1 untuk "pertimbangkan bahwa jika Anda mengaburkan kode, mungkin sulit untuk melacak masalah di log Anda". Tepat ketika Anda berpikir bahwa debugging cukup sulit ...
Adam Paynter
7
Obfuscator yang baik yang mengubah nama dan informasi nomor baris harus menghasilkan log yang dapat digunakan untuk membalikkan proses. Dengan cara ini setidaknya pelacakan tumpukan tetap berguna untuk biner yang dikaburkan.
Joachim Sauer
3
ProGuard membuat file terbalik tersebut untuk debugging. :-)
Malax
10

Saya menggunakan Allatori dan itu melakukan tugasnya dengan cukup baik.

yang hilang
sumber
7

Memang benar bahwa selalu mungkin untuk merekayasa balik beberapa kode, sama seperti tidak mungkin melindungi rumah agar tidak ada yang bisa mencuri darinya. Tapi itu tidak mencegah saya mengunci pintu. Sebenarnya saya tidak berada di dunia java, saya menggunakan BitHelmet untuk .net.

Daniel Dolz
sumber
7
+1 untuk mengembalikan Anda ke internet 0. Jawaban ini bukannya tidak membantu.
HaloWebMaster
6

Saya pernah bekerja dengan Klassmaster di perusahaan saya sebelumnya dan bekerja dengan sangat baik serta dapat berintegrasi dengan cukup baik dengan sistem build (dukungan maven sangat baik). Tapi itu tidak gratis.

Anoop
sumber
6

Saya tidak tahu pasti apakah solusinya aman, tetapi tentang solusi ClassGuard , menarik untuk membaca artikel dan komentar di: http://www.javaworld.com/community/?q=node/1604#comment -12296

Renato
sumber
Dan alternatif lain yang juga menggunakan kode asli sebagai pengganti defineClass adalah JarCrypt
Renato
Artikel yang mengajarkan cara memecahkan ClassGuard : setrst.blogspot.com/2010/04/classguard-unguarded.html . Saya hanya tidak tahu apakah ini masih berfungsi pada versi terbaru.
Renato