Jeg har java-kode, der er samlet til en .class-fil. Der er en funktion, der får få parametre og foretager sig noget (f.eks. Får int x og int y og gør x + y)

Jeg vil føje til denne .class-filkode, der kontrollerer, om x = 1 og kald til en anden funktion (f.eks. ring til xy og ikke gør x + y)

Hvordan kan jeg redigere en kompileret .class-fil og tilføje min egen kode?

Kommentarer

  • Jeg redigerede spørgsmålet, forhåbentlig er det, hvad du faktisk ville stille; hvis ikke, bedes du redegøre for det i en kommentar eller redigere det selv.

Svar

Der er flere måder at opnå dette på:

  1. Decompile .class til .java source ( ikke nødvendigvis original kilde, men ækvivalent), foretag dine ændringer, kompilér igen. Der er mange Java-dekompilere derude, jeg vil ikke liste dem alle.

  2. Skil .klasse til “samling” (normalt Jasmin-syntaks), modificer den, saml tilbage. Krakatau er et godt værktøj, der skal være i stand til at gøre det.

  3. Brug et værktøj, der kan ændre / patch bytekoden direkte i .class-filen. Jeg har ikke prøvet det, men Recaf hævder at være i stand til at gøre det.

  4. Hook Java runtime-tolk for at fange det øjeblik det begynder at udføre målfunktionen og få den til at udføre noget andet i stedet. Dette er noget implementeringsspecifikt, men her er et eksempel, jeg kender til, der bruger Java debugging protocol (JWDP): https://github.com/CrowdStrike/pyspresso

Svar

Du kan bruge JByteMod til at redigere din klasse-bytecode. Du kan også oprette nye metoder, slette metoder, felter og ændre adgang.

Det er ret nemt at bruge, bare ilæg krukken og vælg den klasse, du vil redigere.

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

Kommentarer

  • JByteMod har ' ikke haft en opdatering om to år nu desværre. Forfatteren er sprunget på forskellige projekter, men i lignende natur.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *