Ho codice java compilato in un file .class. Cè una funzione che ottiene pochi parametri e fa qualche azione (es. Get int x e int y e do x + y)

Voglio aggiungere a questo file .class il codice che controlla se x = 1 e chiamare unaltra funzione (es. chiamata a xy e non fare x + y)

Come posso modificare un file .class compilato e aggiungere il mio codice?

Commenti

  • Ho modificato la domanda, spero che questo sia ciò che volevi davvero chiedere; in caso contrario, chiariscilo in un commento o modificalo tu stesso.

Risposta

Ci sono diversi modi per ottenere questo risultato:

  1. Decompilare .class nel sorgente .java ( non necessariamente fonte originale, ma equivalente), apporta le tue modifiche, compila di nuovo. Ci sono molti decompilatori Java là fuori, non li elencherò tutti.

  2. Disassembla .class in “assembly” (di solito sintassi Jasmin), modificalo, assembla nuovamente. Krakatau è un buon strumento che dovrebbe essere in grado di farlo.

  3. Utilizza uno strumento in grado di modificare / applicare la patch al bytecode direttamente nel file .class. Non lho provato, ma Recaf afferma di essere in grado di farlo.

  4. Hook the Java interprete di runtime per cogliere il momento in cui inizia a eseguire la funzione di destinazione e far sì che esegua qualcosaltro. Questo è un po specifico per limplementazione, ma ecco un esempio che conosco che utilizza il protocollo di debug Java (JWDP): https://github.com/CrowdStrike/pyspresso

Risposta

Puoi usare JByteMod per modificare il bytecode della tua classe. Puoi anche creare nuovi metodi, eliminare metodi, campi e modificare gli accessi.

È abbastanza facile da usare, basta caricare il jar e selezionare la classe che desideri modificare.

JByteMod: https://github.com/GraxCode/JByteMod-Beta/releases

Commenti

  • JByteMod ' non ha avuto un aggiornamento in due anni purtroppo. Lautore è saltato su diversi progetti sebbene in natura simile.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *