Jeg har Java-kode som er samlet til en .class-fil. Det er en funksjon som får få parametere og gjør noe (f.eks. Får int x og int y og gjør x + y)

Jeg vil legge til i denne .class-filkoden som sjekker om x = 1 og ring til en annen funksjon (f.eks. ring til xy og ikke gjør x + y)

Hvordan kan jeg redigere en kompilert .class-fil og legge til min egen kode?

Kommentarer

  • Jeg redigerte spørsmålet, forhåpentligvis er det dette du faktisk ønsket å stille. Hvis ikke, vennligst avklar i en kommentar eller rediger det selv.

Svar

Det er flere måter å oppnå dette på:

  1. Dekompiler .klasse til .java-kilde ( ikke nødvendigvis original kilde, men ekvivalent), gjør endringene dine, kompiler igjen. Det er mange Java-dekompilatorer der ute, jeg vil ikke liste dem alle.

  2. Demonter .klasse til «forsamling» (vanligvis Jasmin-syntaks), modifiser den, monter tilbake. Krakatau er et godt verktøy som burde være i stand til å gjøre det.

  3. Bruk et verktøy som kan endre / lapp bytekoden direkte i .class-filen. Jeg har ikke prøvd det, men Recaf hevder å være i stand til å gjøre det.

  4. Hekt på Java runtime tolk for å fange øyeblikket den begynner å utføre målfunksjonen og få den til å utføre noe annet i stedet. Dette er noe implementeringsspesifikt, men her er et eksempel jeg vet om som bruker Java debugging protocol (JWDP): https://github.com/CrowdStrike/pyspresso

Svar

Du kan bruke JByteMod til å redigere klassens bykode. Du kan også opprette nye metoder, slette metoder, felt og endre tilgang.

Det er ganske enkelt å bruke, bare last glasset og velg klassen du vil redigere.

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

Kommentarer

  • JByteMod har ikke ' t hatt en oppdatering om to år nå dessverre. Forfatteren har hoppet på forskjellige prosjekter, men i lignende natur.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *