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:

  1. .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.

  2. 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.

  3. 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á.

  4. 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.

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