Mikä on hyvä Java-dekompilaattori ja deobfuscator?

Käytän JD-GUI: ta> Java JAR -tiedostojen purkamiseen, mutta ongelma on että se jättää monia virheitä, kuten päällekkäiset muuttujat, jotka minun on korjattava itse ja tarkistettava, toimiiko ohjelma edelleen (jos korjasin virheet oikein).

Yritin myös Fernfloweria, mutta se jättää tyhjäksi luokkiin, jos siitä puuttuu riippuvuus.

Haluaisin tietää, mikä kääntäjä:

  • antaa pienimmän määrän virheitä
  • hämmentää eniten.

Kommentit

  • Vain utelias, mitä ominaisuuksia odotat deobfuscatorin tarjoavan? Sen lisäksi, että muuttujat nimetään uudelleen manuaalisesti, en näe ’ en näe mitään tapaa hajottaa koodia.

Vastaa

Pahoittelen myöhästynyttä vastausta.
Olen työskennellyt uuden avoimen lähdekoodin Java-kääntäjän parissa. Voit vapaasti tarkistaa sen.
En ole testannut sitä mistään hämärtyneestä koodista, mutta olen nähnyt sen hajottavan monia menetelmiä, joita JD-GUI ei onnistunut käsittelemään. Huomaa, että se on käynnissä, ja olen varma, että löydät paljon koodia, jota se ei pysty purkamaan.

Kommentit

  • Ensinnäkin hänen dekompilaattorinsa on Procyon, jonka näet muissa vastauksissa. Toiseksi, vaikka yleensä kiistan, ” Katso kirjastoni, joka tekee tämän! ” vastaukset, se olisi virhe tässä. Strobel ’ s readme , johon hän linkittää, on lukemisen arvoinen. Se olisi ollut itse hieno vastaus, mutta on tosin todennäköisesti liian pitkä SE: lle.
  • +10000 Tämä on todella hieno työ ja se vain hajotti luokan, jonka vietin tuntia yrittää rekonstruoida sen jälkeen, kun JD-GUI oli saanut vain puolet siitä.
  • Vaikka vihaan henkilökohtaisesti +1 kommentteja, minun on ’ sanottava, että ’ sinulla on menossa sinne hyvä projekti, joka auttoi minua ahtaassa paikassa. Jatka!
  • @Signus Kiitos, olen ’ iloinen siitä, että työni osoittautui hyödylliseksi sinulle :).
  • @DavidGomes Ah, BitBucket teki lopulta lupauksensa poistaa Mercurial-repot. Korjattu.

Vastaa

Vanhat ja puuttuvat merkinnät

JAD Jokin aika sitten kaikkien dekompilaattori valinta oli jad. Tällä hetkellä projekti on kuollut (lisäksi se ei ollut avointa lähdekoodia), mutta silti näet, että monet ihmiset viittaavat siihen.

Java DeObfuscator Myös vanhempi työkalu tiedostosta fileoffset.com, mutta silti toimii enemmän tai vähemmän. Käyttöliittymä on melko hankala käytettäväksi suuremmissa projekteissa, mutta työkalu on avoimen lähdekoodin .

JODE JODE on Java-paketti, joka sisältää decompilerin ja Java-optimoijan. Tämä paketti on vapaasti saatavilla GNU GPL: n alla. Sitä ei ole päivitetty pitkään aikaan.

AndroChef Oma työkalu Android-ohjelmien purkamiseen ja Java-tiedostot, saatavilla täältä . Ei ole rahan arvoinen, kun annetaan vaihtoehtoja, aivan kuten DJ Decompiler .

kynttilä Brad Davisin avoimen lähdekoodin kääntäjä. Mainitsen sen täydellisyyden vuoksi, mutta olen kaukana ominaisuuksien täydellisyydestä.


Nykyaikaiset työkalut

JD-Gui Luultavasti yksi yleisimmin käytetyistä Java-dekompilaation työkaluista, koska se on helppokäyttöinen ja tarjoaa graafisen käyttöliittymän, jonka avulla luokan tiedosto tai JAR voidaan nopeasti avata ja tarkastaa. Löydät sen täältä .

FernFlower Erittäin uusi ja lupaava analyyttinen Java-kääntäjä (siitä tulee olennainen osa IntelliJ 14: tä).

Se on komentorivityökalu. Tämä pystyy näyttämään Unicode-parametrit koko nimellään.

Lataa täältä. Se on komentorivityökalu. Tämä pystyy näyttämään Unicode-parametrit koko nimellään.
Huomaa, että se on myös integroitu oletusarvoisesti IntelliJ: ään.

CFR

Ilmainen ja avoin lähdekoodi . Tämän tarkoituksena on purkaa nykyaikaiset Java-ominaisuudet , mukaan lukien Java 12 -kytkinlausekkeet, Java 8 lambdas (Java beeta 103 -muutokset ennen ja jälkeen), Java 7 -merkkijonokytkimet jne., tosin itse kirjoitettu Java 6: ssa.

Myös komentorivityökalu.Tämä tekee vielä paremman työn ja on hieman nopeampi.

Procyon

avoimen lähdekoodin ja pyrkii käsittelemään myös Java 8 -ominaisuuksia (lambdas, :: operaattori). Tarvitaan Java 7: n suorittamista.

Krakatau Krakatau on mielenkiintoinen, koska se on kirjoitettu Pythonissa. Se sisältää tällä hetkellä kolme työkalua: Java-luokkatiedostojen dekooderin ja purkimen sekä kokoonpanon luokkatiedostojen luomiseksi.

Ei vielä tue Java 8 -ominaisuuksia.

Soot

Soot on Java- ja Android-sovellusten analysointiin ja muuntamiseen tarkoitettu kehys, jonka alun perin on kehittänyt McGill Universityn Sable Research Group. Sitä ei ole kovin yleisesti käytetty ”vain” -kääntäjänä, koska se määrittelee myös välitavuisen koodikielen.

Recaf

Java Bytecode -editori ja käänteinen suunnittelutyökalu, jonka tarkoituksena on olla intuitiivinen käyttää. Se voi esittää tavukoodin useiden dekompilaattoreiden kautta (CFR, FernFlower, Procyon) tai taulukkomuodossa, jotta tavallisten dekoodaattoreiden salaamattomat luokkaelementit voidaan näyttää. Recaf käyttää tilannekohtaisia valikoita vuorovaikutuksessa luokkien, menetelmien ja kenttien kanssa, jolloin käyttäjät voivat etsiä käyttötapauksia, nimetä nimiä uudelleen ja muokata määritelmiä puretussa muodossa.

Se tukee purkkeja, sotia, luokkia, ja luokkien purkaminen käynnissä olevista Java-prosesseista.

Se on kirjoitettu kokonaan Java-muodossa ja on täysin avoimen lähdekoodin .

Konlochin Bytecode Viewer

Edistynyt kevyt Java Bytecode Viewer, GUI Java Decompiler, GUI Bytecode Editor, GUI Smali, GUI Baksmali, GUI APK Editor, GUI Dex Editor, GUI APK Decompiler, GUI DEX Decompiler, GUI Procyon Java Decompiler, GUI Krakatau, GUI CFR Java Decompiler, GUI FernFlower Java Decompiler, GUI DEX2Jar, GUI Jar2DEX, GUI Jar-Jar, Hex Viewer, Code Searcher, Debugger ja paljon muuta.

Kirjoitettu kokonaan Java-muodossa, ja se on avoimen lähdekoodin .

Se käyttää FernFloweria, Procyonia ja CFR: ää dekompilointiin, mikä tekee siitä mahtava visuaalinen työkalu, joka käyttää huippuluokan dekoodereita:

Enigma

Erityisesti hämärtymisen estoon tarkoitettu työkalu :

Alun perin käytetty Minecraft-versioiden hämärtämiseen. Käyttää Procyonia sisäisesti.

Ajantasaisempi haarukka löytyy täältä

On hauskaa Huomaa, että paljon vaivaa Java-ohjelmien dekoodereihin ja obfuusioihin on seurausta Minecraftin ympärillä olevasta muokkauskentästä, joka on yksi suosituimmista Java-sovelluksista.

Lähde: http://blog.macuyiko.com/post/2015/a-quick-look-at-java-decompilers.html

Kommentit

  • Tämä vastaus saattaa olla tarpeen päivittää. Vaikuttaa siltä, että JD-Guia kehitetään aktiivisesti maaliskuusta 2019 lähtien. java-decompiler.github.io
  • Minulla on Java 7 koodi, jolle ’ yritin kirjoittaa joitain näkökohtia. Sisäänrakennetulla intellij-kääntäjällä on joissakin tapauksissa väärät muuttujien nimet ja se voi jättää koodilohkot pois. JD-Gui näyttää nämä lohkot ja näyttää tarkemmat muuttujien nimet. Se näyttää myös vierekkäin erot JD-Guin vanhan version ja uuden version välillä. ’ on syytä tarkastella, jos ’ suoritat vakavaa peruutusta.

Vastaa

En voi puhua kumpi näistä on paras, mutta siellä on muutama Java-dekompilaattori, kuten tämä SO-kysymys . Yksikään näistä kääntäjistä ei kuitenkaan näytä yrittävän aktiivisesti hoitaa hämärtymistä, ja monet näistä projekteista hylätään.

En ole kokeillut Krakatau , mutta kuulostaa siltä, että se voi auttaa etsimässäsi.

  • Lueminut-sanasta:” Krakataun dekompilaattori lähestyy toisiaan useimmat Java-dekoodilaattorit. Sitä voidaan pitää enemmän kääntäjänä, jonka syöttökieli on Java-tavukoodi ja jonka kohdekieli sattuu olemaan Java-lähdekoodi. Krakatau ottaa mielivaltaisen tavukoodin ja yrittää muuntaa sen vastaavaksi Java-koodiksi. Tämä tekee siitä vankan vähäiseen hämmennykseen, vaikka sillä on haittapuoli siitä, että ”alkuperäistä” lähdettä ei rekonstruoida, mikä johtaa vähemmän luettavaan tulokseen kuin malli, joka vastaa dekompilaattoria tuottaisi fuusioimattomille Java-luokille. ” lähde ja näyttää olevan aktiivisesti (tästä kirjoituksesta lähtien) ylläpidetty.

Kommentit

  • Se on itse asiassa purkijan tulos. Dekompilaattori dekompiloi Java-ulostuloksi. (PSOlen ’ m kehittäjä)
  • JD-GUI on yksi parhaista Java-dekompilaattoreista tällä hetkellä, mutta sitä on käytettävä yhdessä deobfuscatorien kanssa. Bytecode ennen koodin purkamista. Paras Java-tunnuksen poistaja, jonka tiedän, tulee joko rune-server.org tai moparscape.org/ smf tai moparisthebest.org/smf , jotka hakkeroivat yhteisöjä Runescape-pelille, joka on kirjoitettu kokonaan Java-muodossa ja erittäin hämmentyneenä.

vastaus

Yritä katsoa Bytecode Vieweria https://github.com/Konloch/bytecode-viewer Sillä on mahdollisuus dekompiloida käyttämällä 5 erilaista kääntäjää:

  • FernFlower
  • Procyon
  • CFR
  • Krakatau
  • JD-GUI

Kommentit

  • Tämä oli todella hyvä ehdotus – kiitos, parempi tapa kuin vain käyttää fernflower cliä!

Vastaa

Ensinnäkin on olemassa korjaus Fernflower-ongelmasta puuttuvien luokkien osalta täällä . Voit sanoa kiitos agaricusb: lle tästä.

Tällä hetkellä Fernflower on edelleen paras Java-dekomilaattori, vaikka sitä ei ole ylläpidetty viime vuosina. Olen yrittänyt tavoittaa kirjoittajan äskettäin, mutta silti ei onnea.

Mitä AndroChef Java Decompileriin tulee, se käyttää Fernfloweria moottorina tekijän luvalla. En ole vieläkään varma, käyttääkö se korjaustiedostoja versio tai Se on vain graafinen käyttöliittymä.

@ mike-strobelin kehittämä Procyon-dekompileri näyttää olevan hyvä, mutta Fernflower sai silti VALTAVAN edun ja pystyi purkamaan noin 95% sovelluksestani (~ 3000 luokat), kun taas procyon pystyi käsittelemään vain 60% (tarkistettu tammikuussa 2014).

Kommentit

  • Onko sovelluksesi ” native ” Java, vai muunnettiinko se Android-formaatista? Jos ensimmäinen, olisin erittäin kiinnostunut saamaan käteni binääreihisi nähdäksesi, missä Procyon hajoaa Fernfloweriin verrattuna.
  • @MikeStrobel It ’ s ” natiivi ” Java-sovellus. Se ’ on vain sisäistä käyttöä, joten en voi ’ jakaa sitä joka tapauksessa.
  • kaikki mahdollisuudet, jotka voit pudottaa minulle sähköpostia, jossa kuvataan millaisia ongelmia olet törmännyt? Olen aina innokas kuulemaan, kuinka Procyonia voitaisiin parantaa. Yhteystietoni ovat projektin ’ BitBucket-sivustossa.
  • @MikeStrobel kiitos mielenkiinnosta. Y ’ yritän antaa sinulle laajempaa tietoa ja esimerkkiluokkia, mutta ei lupauksia.

Vastaa

I ”m käyttämällä https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine Se on kääntäjä IntelliJ: ltä, se purkaa koodit, jos JD-GUI epäonnistuu.

Se on epävirallinen peili ladattavaksi: http://files.minecraftforge.net/maven/net/minecraftforge/fernflower/

Vastaa

Haluan suositella sinua AndroChef Java Decompiler AndroChef Java Decompiler dekompiloi onnistuneesti hämärtyneet Java 6- ja Java 7 .class- ja .jar-tiedostot.

Kommentit

  • KIINNITÄ HUOMAUTUSTA ANDROCHEFIN KANSSA! AndroChef on vain kääre hylätylle fernflower decompilerille, älä ’ tuhlaa rahaasi sen kanssa!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *