2016-03-27 21 views
5

Bu kuşkulu gelebilir, ancak kendi uyguladığımdeobfuscate gerekir. Bir süre önce Proguard'la gizlediğim uygulamamı yayınladım. Maalesef, uygulamanın bu sürümünü kaydetmedim ve kodu çok değiştirdim.Proguard tarafından oluşturulan mapping.txt kullanarak jar dosyası nasıl açılır?

Şimdi bu eski sürümün koduna ihtiyacım var. Hala Proguard tarafından oluşturulan mapping.txt dosyası var.

classes.dex dosyasını jar'e dönüştürdüm (dex2jar aracını kullanarak), şimdi mapping.txt dosyasına göre deobfuscate etmem gerekiyor. Bana yardımcı olabilecek araçlar var mı? Belki Proguard'ın kendisi?

UPD. Tüm sınıfları, fonksiyonları vb. Otomatik olarak yeniden adlandırabilecek bir araca ihtiyacım var, bu yüzden el ile yapmak zorunda değilim. Teşekkürler

+0

Muhtemelen mümkün değildir. Uygulamayı derledikten sonra, kod zaten derleyici tarafından "gizlenmiş". Uygulamayı tekrar Proguard'la karıştırdığın, bu da çift taraflı bir durum. Uygulamayı deobfuscate ve decompile için bir yol olabilir. Bir dahaki sefere kodlamadan önce her şeyi kaydetmenizi ve yedeklemenizi öneririm. – mob41

+0

Bu şimdi size yardımcı olmuyor, ancak gelecekte bu tür sorunları önlemek için bir ** sürüm kontrol sistemi ** (VCS) kullanın. – F43nd1r

cevap

8

Eşlemelere sahipseniz, her sınıf, alan ve yöntem adını geri alabilirsiniz. Sınıfı ve üye adlarını yeniden eşlemek için java-asm (bir bayt kodu değiştirme kitaplığı) kullanabilirsiniz. Çalışmanın çoğu üye tanımlayıcılarını güncelleyecektir.

Kendim için bir tane yaptım ve güvenilir bir şekilde çalışması için yaklaşık bir gün sürdü.

Düzenleme: Bu mükemmel değil, ama oldukça yakın. Link. Screenshot of the GUI Korumalı bir jar dosyası verin, eşleştirmeleri bulun ve bulabildiği her şeyi yeniden adlandırın. Birkaç sorun var ama sadece kaynağa bakmak için işi yapmalı. Sadece (FileName + "-Re.jar" gibi) File (+) -Jy-GUI gibi bir decompiler haline getirdiği jar dökümü. Ayrıca dosya girişleri sadece tuşlarla değiştirilir. Metin kutuları sadece görsel geribildirim/onay içindir.

Düzenleme 2: Belirtilen kavanozda eşleştirmelerde sınıf girdisi olmadığında oluşan sabit NPE.

Düzenleme 3: Yeniden adlandırılma yöntemleriyle sonuçlanan pek çok sorun düzeltildi.

Düzenleme 4: Yüklenen derlenmiş jar github (serbest bırakma, zip dosyasında eşleme kullanımındadır), birden çok eşleme türü için destek ekledi.

+0

Bu, istediğim şey gibi görünüyor, maalesef "Geri Al" düğmesine bastığımda NPE alır: * java.lang.NullPointerException me.lpk.mapping.MappedClass. me.lpk.mapping.ProguardLoader.read (ProguardLoader.java:61) de me.lpk.mapping.ProguardLoader.readClass (ProguardLoader.java:121) de (MappedClass.java:38) me.lpk de . me.lpk.ReProguard $ 4.actionPerformed (ReProguard.java:123) de mapping.ProguardLoader.read (ProguardLoader.java:41) me.lpk.mapping.MappingGen.mappingsFromProguard (MappingGen.java:49) de .. .* – user2758776

+0

Görünüşe göre, yüklemeye çalıştığı sınıf adı kavanozda mevcut değildi. Bunu kontrol etmek için ProguardLoader sınıfını yeniden işleyin. Sınıf kavanozda mevcut değilse, o sınıf için eşleme göz ardı edilir. Aracı düzeltmeyle yeniden yükleyin. –

+0

Çabalarınız için teşekkür ederim, ancak hala bana NPE: java.lang.NullPointerException bana .lpk.mapping.MappedClass. me.lpk.mapping.ProguardLoader.read (ProguardLoader.java:61) de me.lpk.mapping.ProguardLoader.readClass (ProguardLoader.java:126) de (MappedClass.java:38) me.lpk de . me.lpk.ReProguard $ 4.actionPerformed de mapping.ProguardLoader.read (ProguardLoader.java:41) me.lpk.mapping.MappingGen.mappingsFromProguard (MappingGen.java:49) de (ReProguard.java:123) Belki Benimle aracınızın kaynak kodunu paylaşabilirsin? Teşekkürler! İşte – user2758776

2

Enigma ile birlikte above answer'da önerildiği gibi proguard aracını kullanmanızı öneririm. Sorununuz için çözüm çok basit olamaz ve çözmek için mevcut araçların bir kombinasyonunu kullanmanız gerekir.

+0

için aradığım şeydir. Proguard'a ek olarak ayrıca Engima eşleştirmeleriyle çalıştım. Ancak Enigma GUI aktif olan bir sürümü derlemedim. Kaynak Ancak repo geçerli: https://github.com/LPK-Matt/SkidSuite2/blob/master/SkidReob/src/me/lpk/gui/windows/mapping/WindowEnigma.java –

+0

@DankVader Url'de 404 verir – beppe9000

+0

@ beppe9000 Belirli bir dosya bir taahhütte kaldırıldı ancak repo hala doldu. https://github.com/LPK-Matt/SkidSuite2/releases Bu yorumu yaptıktan sonra derlenmiş ve yayınlanmıştır. –

İlgili konular