Mi a jó Java dekompilátor és deobfuscator?

A JD-GUI-t használom a Java JAR fájlok dekompilálására, de a probléma hogy sok hibát hagy, például duplikált változókat, amelyeket magamnak kell kijavítanom, és ellenőriznem kell, hogy a program továbbra is működik-e (ha helyesen javítottam ki a hibákat).

Kipróbáltam a Fernflower-et is, de ez üres osztályok, ha hiányzik belőle egy függőség.

Szeretném tudni, melyik dekompilátor:

  • a legkevesebb hibát adja
  • deobfuscates a a legtöbbet.

Megjegyzések

  • Csak kíváncsi, milyen funkciókat várhat egy deobfuscator? A változók manuális átnevezésén kívül nem látok semmiféle módot bizonyos kódok tényleges visszafejtésére.

Válasz h2 <

>

Elnézését kérem a megkésett válaszért.
Egy új, nyílt forráskódú Java dekompilátoron dolgoztam. Nézze meg nyugodtan.
Nem teszteltem semmiféle elfojtott kóddal, de azt láttam, hogy sok olyan módszert bont, amelyet a JD-GUI nem tudott kezelni. Ne feledje, hogy “folyamatban van, és biztos vagyok benne, hogy rengeteg kódot talál, amelyet nem sikerül dekompilálnia.

Megjegyzések

Válasz

Régi és hiányzó bejegyzések

JAD Valamikor ezelőtt mindenki dekompilátora választás jad volt. Jelenleg a projekt halott (ráadásul nem volt nyílt forráskódú), de mégis sok ember hivatkozik rá.

Java DeObfuscator Szintén a fileoffset.com régebbi eszköze, de még mindig többé-kevésbé működik. Az interfész meglehetősen nehézkes a nagyobb projektekhez, de az eszköz nyílt forráskódú .

JODE A JODE egy java csomag, amely dekompilert és optimalizálót tartalmaz a Java számára. Ez a csomag szabadon elérhető a GNU GPL alatt. Már jó ideje nem frissítették.

AndroChef Saját eszköz az Android programok dekompilálására és Java fájlok itt érhetők el . Nem éri meg a pénzt az alternatívák miatt, csakúgy, mint DJ Decompiler .

Gyertya Brad Davis nyílt forráskódú fordítója. A teljesség kedvéért említem, de messze van attól, hogy teljes legyen.


Modern eszközök

JD-Gui Valószínűleg az egyik legszélesebb körben használt eszköz a Java dekompilálására, mivel könnyen kezelhető és grafikus felhasználói felülettel rendelkezik, amely lehetővé teszi az osztályfájl vagy JAR gyors megnyitását és ellenőrzését. itt található .

FernFlower Nagyon új és ígéretes analitikus Java dekompilátor (az IntelliJ 14 szerves részévé válik).

Ez egy parancssori eszköz. Ez képes megmutatni az Unicode paramétereket teljes nevükkel.

Letöltés innen. Ez egy parancssori eszköz. Ez képes megmutatni az Unicode paramétereket teljes nevükkel.
Ne feledje, hogy alapértelmezés szerint már integrálva is van az IntelliJ-be.

CFR

Ingyenes és nyílt forráskód . Ennek célja a modern Java-szolgáltatások dekompilálása , beleértve a Java 12 switch kifejezéseket, a Java 8 lambdas (a Java beta 103 előtti és utáni változásai), a Java 7 String kapcsolók stb., bár maga a Java 6-ban van megírva.

Szintén parancssori eszköz.Ez még jobb munkát végez, és valamivel gyorsabb.

Procyon

Nyílt forráskód , és célja a Java 8 funkcióinak (lambdas, :: operátor) kezelése is. A futtatáshoz Java 7-re van szükség.

Krakatau A Krakatau érdekes, mert Pythonban írták. Jelenleg három eszközt tartalmaz: a Java osztályfájlok dekompilátorát és szétszerelőjét, valamint az osztályfájlok létrehozására szolgáló összeállítót.

Még nem támogatja a Java 8 szolgáltatásait.

Soot

A Soot egy keretrendszer Java és Android alkalmazások elemzéséhez és átalakításához, amelyet eredetileg a McGill Egyetem Sable Research Group fejlesztett ki. Nem túl gyakran használják „csak” dekompilerként, mivel meghatároz egy köztes bájtkódot is.

Recaf

Java Bytecode szerkesztő és reverz mérnöki eszköz, amelynek célja az intuitív használat. Bájtkódot jeleníthet meg több dekompilátoron keresztül (CFR, FernFlower, Procyon) vagy egy táblázatos elrendezésben, lehetővé téve az osztályelemek megjelenítését, amelyek megfejthetetlenek a standard dekompilátorokban. A Recaf a környezetfüggő menüket használja az osztályokkal, módszerekkel és mezőkkel való interakcióra, lehetővé téve a felhasználók számára a felhasználási esetek keresését, az elemek átnevezését és a definíciók szétszerelt formátumban történő szerkesztését.

Támogatja az üvegeket, háborúkat, osztályokat, és az osztályok kibontása a futó Java folyamatokból.

Teljesen Java-ba van írva, és teljesen nyílt forráskódú .

Konloch Bytecode Viewer

Speciális, könnyű 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 és egyebek.

Teljesen Java-ban írva, és nyílt forráskódú .

A FernFlower-t, a Procyont és a CFR-t használja a dekompiláláshoz, ami ezt an fantasztikus vizuális eszköz a legkorszerűbb dekompilátorok használatával:

Enigma

Kifejezetten dezfúzióra szánt eszköz :

Eredetileg a Minecraft verzióinak lebontására használták. Belsőleg használja a Procyont.

Egy naprakészebb villa itt található

Szórakoztató vegye figyelembe, hogy a Java dekompilátorainak és az obfuscatorok eltávolításának nagy erőfeszítései a Minecraft, a Java egyik legnépszerűbb játékának körüli modding jelenet eredménye.

Forrás: http://blog.macuyiko.com/post/2015/a-quick-look-at-java-decompilers.html

Megjegyzések

  • Ez a válasz lehet, hogy frissíteni kell. Úgy tűnik, hogy a JD-Gui-t 2019 márciusától kezdve aktívan fejlesztik. java-decompiler.github.io
  • Van néhány java 7 kód, amelyhez spektusokat próbálok megírni '. A beépített intellij dekompilátor bizonyos esetekben helytelen változónevekkel rendelkezik, és kihagyhatja a kódblokkokat. A JD-Gui megmutatja ezeket a blokkokat, és megjeleníti a pontosabbnak tűnő változóneveket is. Ez egymás mellett megmutatja a JD-Gui régi és új verziói közötti különbségeket is. ' érdemes megnézni, ha ' komoly hátramenetet hajt végre.

Válasz

Nem tudok beszélni azzal, hogy ezek közül melyik a legjobb, de van néhány java dekompilátor, amint ezt a SO kérdés . Úgy tűnik, hogy ezek a dekompilátorok egyike sem próbál aktívan kezelni az elfedést, és sok ilyen projektet felhagynak.

Még nem próbáltam ki a Krakatau , de úgy tűnik, hogy segíthet abban, amit keres.

  • A readme-ből:” A Krakatau decompiler más megközelítést alkalmaz a legtöbb Java dekompilátor. Inkább fordítónak lehet tekinteni, amelynek beviteli nyelve Java bytecode, és célnyelve Java forráskód. Krakatau tetszőleges byte-kódot vesz fel, és megpróbálja átalakítani egyenértékű Java-kódgá. Ez robosztusabbá teszi a kisebb homályosítást, bár az a hátránya, hogy nem rekonstruálják az “eredeti” forrást, ami kevésbé olvasható kimenetet eredményez, mint amennyit a dekompilátorral illesztett minta illesztene a nem fúziós Java osztályok esetében. ” forrás, és úgy tűnik, hogy aktívan (az írás óta) fenntartják.

Megjegyzések

  • Ez valójában a szétszerelő kimenete. A dekompilátor Java kimenetre dekompilál (PSÉn ' m a fejlesztőt)
  • A JD-GUI az egyik legjobb Java-visszafejtő jelen pillanatban, de együtt kell használni a deobfuscatorokkal a A kód visszafejtése előtt adjon kódot. A java legjobb deobfuszkátorai, amelyekről tudom, a rune-server.org vagy a moparscape.org/ smf vagy moparisthebest.org/smf ezek hackelnek közösségeket a Runescape Game-hez, amely teljesen Java-ban van írva és erősen el van zavarva.

Válasz

Próbálja meg megnézni a Bytecode Viewer https://github.com/Konloch/bytecode-viewer Lehetősége van dekompilálni 5 különböző dekompilátor használatával:

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

Megjegyzések

  • Ez nagyon jó javaslat volt – köszönöm, sokkal jobb, mint csak a páfrányvirág cli használata!

Válasz

Először is van egy javítás Fernflower kiadáshoz hiányzó osztályokkal itt . Köszönetet mondhat az agaricusb-nek ezért.

Egyelőre a Fernflower maradt a legjobb Java dekompilátor, még az utóbbi években sem volt karbantartva. Nemrégiben megpróbáltam elérni a szerzőt, de még mindig nincs szerencsém.

Ami az AndroChef Java Decompiler-t illeti, a Fernflower motort használja a szerző engedélyével. Még mindig nem biztos benne, hogy javított / módosított verzió vagy ez csak egy GUI.

Úgy tűnik, hogy a @ mike-strobel által kifejlesztett Procyon dekompilátor jó, de Fernflower mégis Hatalmas előnyt kapott, és képes volt dekompilálni az alkalmazásom körülbelül 95% -át (~ 3000 osztályok), míg a procyon csak 60% -ot tudott kezelni (2014 januárjában ellenőrizték).

Megjegyzések

  • Az alkalmazásod " native " Java, vagy pedig Android formátumról konvertálták? Ha az előbbit, akkor nagyon érdekelne, hogy kezembe tegyem a binárisokat, hogy lássam, hova bomlik a Procyon Fernflowerhez képest.
  • @MikeStrobel It ' s " natív " Java alkalmazás. ' csak belső használatra szolgál, így ' nem tudom megosztani.
  • bármilyen esélye van, hogy eleshet nekem egy e-mailt, amelyben leírja, milyen problémákba ütközött? Mindig szívesen hallom, hogyan lehetne javítani a Procyon-on. Elérhetőségeim a projekt ' BitBucket webhelyén találhatók.
  • @MikeStrobel köszönöm az érdeklődést. ' Megpróbálok bővített információkat és példaórákat adni Önnek, de ígéretek nélkül.

Válasz

I “m használatával https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine ez az IntelliJ dekódolója, dekódolja a kódokat, ahol a JD-GUI nem működik.

Nem hivatalos tükröt tölt le: http://files.minecraftforge.net/maven/net/minecraftforge/fernflower/

Válasz

Szeretném ajánlani AndroChef Java Decompiler Az AndroChef Java Decompiler sikeresen dekompilálja az elhomályosított Java 6 és Java 7 .class és .jar fájlokat.

Megjegyzések

  • FIGYELMET FIGYELEM AZ ANDROCHEF-mel! Az AndroChef csak az elhagyott páfrányvirág-dekompilátor burkolója, ne ' ne pazarolja vele a pénzét!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük