Contoh spesifik yang ada dalam pikiran saya melibatkan permainan Minecraft saat ini-alpha, tetapi ini adalah pertanyaan umum yang saya pikir memerlukan beberapa percakapan.
Minecraft ditulis dalam Java, dan tumpukan jejak biasanya terlihat seperti ini (contoh nyata):
java.lang.NullPointerException
at d.a(SourceFile:247)
at gi.b(SourceFile:92)
at bd.a(SourceFile:33)
at bn.a(SourceFile:69)
at bn.e(SourceFile:115)
at bn.d(SourceFile:103)
at net.minecraft.client.Minecraft.i(SourceFile:1007)
at net.minecraft.client.Minecraft.run(SourceFile:596)
at java.lang.Thread.run(Unknown Source)
Jelas ini bukan paket asli dan nama metode yang digunakan pengembang ketika ia menulis. Karena ia berada dalam tahap alfa, tampaknya pengembang harus dapat memahami jejak tumpukannya, terutama jika seseorang dapat menyediakan satu untuk laporan bug. Karena ini berdiri, sebagian besar tidak ada artinya.
Keuntungan apa yang bisa diharapkan seseorang dengan mengaburkan kodenya seperti ini yang mengatasi kelemahan dari identifikasi bug yang lebih sulit?
obfuscation
StrixVaria
sumber
sumber
Jawaban:
Kami mengaburkan kode Java kami juga ....
Keuntungannya adalah membuat lebih sulit untuk melakukan rekayasa ulang (jika Anda khawatir seseorang mencuri basis kode Anda dan menggunakannya sebagai basis untuk membuat produk pesaing yang serupa, misalnya, dll).
Anda bisa mendapatkan jejak tumpukan asli kembali: ada alat kebingungan di luar sana yang membuat file referensi khusus yang dapat Anda gunakan untuk menjalankan jejak tumpukan dikaburkan, dan itu keluar dengan jejak tumpukan sumber asli. Ini dihasilkan oleh proses kebingungan itu sendiri, jadi Anda tidak bisa mendapatkan jejak tumpukan asli kembali kecuali Anda memiliki tangan pada file referensi yang Anda gunakan untuk mengaburkan kode di tempat pertama.
Ini tidak memiliki kerugian sebenarnya. :)
sumber
Kebanyakan obfuscator juga mengoptimalkan kode Anda , menghapus metadata yang tidak berguna atau tidak menggunakan kode, kompresi, penghilangan kode mati, atau penghapusan duplikat.
sumber