Java és .NET visszafejtése
Nyomja meg az F3 billentyűt egy lefordított fájlon, és bájtok helyett forráskódot lát. Ezt két bővítmény végzi — egy a Javához (.class, .jar, .apk, .dex) és egy a .NET-hez (.dll, .exe, .winmd, .netmodule) —, és egyformán viselkednek, ezért ez az oldal mindkettőt lefedi. Mindkettő külön kikapcsolható vagy eltávolítható a Konfiguráció ▸ Bővítmények… alatt.
Egy archívum az osztályai fájaként jelenik meg, egyetlen osztály egy fájlként. A Visszafejtés forrássá a Parancsok menüben kiírja az eredményt és egy panelbe teszi, így kereshet, összehasonlíthat és másolhat benne, mint bármely más forrásmappában.
A motort Ön telepíti¶
Semmilyen visszafejtő nincs mellékelve, és semmi sem töltődik le Ön helyett. Ez két okból szándékos: a JD-Core, a legismertebb Java-visszafejtő, GPLv3 alatt áll, és nem lehetett volna egy Apache-2.0-ás alkalmazáson belül szállítani — a motorok pedig javulnak, így a cseréjük ne igényelje a Peach Commander új változatát.
A megjelenítőben a Motorok mappája… megnyitja a mappát, ahová valók. Az ottani README megnevezi az egyes motorokat és a licencüket.
| Java | CFR, Vineflower, Procyon, jadx (androidos .dex és .apk fájlokhoz) és javap a nyers bájtkódhoz |
| .NET | ILSpy, valamint monodis az IL-hez |
A Motorok ellenőrzése lefuttatja minden motor verzióparancsát, és három dolgot különböztet meg: telepítve és működik, nincs telepítve, valamint telepítve, de nem tud futni — egy JDK nélküli Java eszköz jelen van, mégsem indul el, és ez csak a tényleges futtatásból derül ki.
A motort adat írja le, nem kód, így magának is felvehet egyet:
[cfr]
kinds = class, jar
tool = java
args = -jar {engine} {input}
engine = ~/Library/Application Support/PeachCommander/decompilers/cfr.jar
output = stdout
Ha egy fájlt több motor is kezelni tud, az első elérhetőt használja, hacsak nem választ egyet. Két telepített motor esetén az Összehasonlítás egymás mellett mutatja mindkét eredményt — hasznos, amikor az egyik motor feladja egy metódusnál, amellyel a másik megbirkózik.
Keresés lefordított kódban¶
A Keresés az összes osztályban a visszafejtett szövegben néz, nem a bájtokban, így egy JAR-ban megtalál egy szöveges literált vagy egy metódusnevet.
A visszafejtés tartalomkeresés közben sok fájlon külön kapcsoló, és alapértelmezés szerint ki van kapcsolva: a szöveg előállítása azt jelentheti, hogy a motor osztályonként egyszer lefut, ami lassú gépen nem ésszerű dolog egy keresésre költeni. A fő keresőablak külön rákérdez; itt szintén elutasításra kerül.
Gyorsítótár és korlátok¶
Az eredmények gyorsítótárba kerülnek, mert ugyanazt az osztályt kétszer visszafejteni merő várakozás. A beállításokban található, hány napig őrzi meg az eredményeket, és a gyorsítótár méretkorlátja; a Gyorsítótár ürítése most kiüríti, és jelenti, mennyi szabadult fel.
Két időkorlát véd az olyan motortól, amely nem fejezi be: egy egyetlen osztályra vagy típusra, egy pedig egy teljes archívumra. Mindkettő elfogadja a 0-t, ami azt jelenti: „használd a motor saját alapértékét”.