Van Java kódom, amelyet egy .class fájlba fordítottam. Van egy olyan függvény, amely kevés paramétert kap, és végrehajt valamilyen műveletet (pl. Get int x és int y, és csináld x + y)
Ehhez a .class fájlkódhoz szeretnék hozzáadni, amely ellenőrzi, hogy x = 1 és hívás egy másik függvényre (pl. hívás az xy-re, és ne tegye az x + y-t)
Hogyan lehet szerkeszteni egy lefordított .class fájlt és hozzáadni a saját kódomat?
Megjegyzések
- Szerkesztettem a kérdést, remélhetőleg ezt szerette volna feltenni; ha nem, kérjük, tisztázza kommentben, vagy szerkessze maga.
Válasz
Ennek többféle módja van:
-
.class dekompilálása .java forráskódra ( nem feltétlenül eredeti forrás, hanem egyenértékű), hajtsa végre a változtatásokat, fordítsa újra. Sok Java dekompilátor létezik, ezeket nem fogom felsorolni.
-
Szétszereljük a .class “összeszerelés” (általában Jasmin szintaxis), módosítsa, állítsa össze. A Krakatau jó eszköz, amelyet képesnek kell lennie arra.
-
Használjon olyan eszközt, amely módosíthatja / javítsa a bájtkódot közvetlenül a .class fájlba. Még nem próbáltam, de a Recaf azt állítja, hogy képes rá.
-
Csatlakoztassa a Java-t futásidejű tolmács, hogy elkapja azt a pillanatot, amikor elkezdi végrehajtani a célfüggvényt, és valami mást hajt végre. Ez némileg megvalósítás-specifikus, de itt ismerek egy példát, amely Java hibakeresési protokollt (JWDP) használ: “>
https://github.com/CrowdStrike/pyspresso
Válasz
A JByteMod segítségével szerkesztheti az osztály bájtkódját. Létrehozhat új módszereket, törölhet módszereket, mezőket és módosíthatja a hozzáféréseket.
Elég egyszerűen használható, csak töltse be az edényt, és válassza ki a szerkeszteni kívánt osztályt.
JByteMod: https://github.com/GraxCode/JByteMod-Beta/releases
Megjegyzések
- A JByteMod sajnos két év alatt nem kapott frissítést. A szerző különböző projektekbe kezdett, bár hasonló jellegűek.