Jag har javakod som kompileras till en .class-fil. Det finns en funktion som får få parametrar och gör några åtgärder (t.ex. få int x och int y och gör x + y)

Jag vill lägga till den här .klassfilkoden som kontrollerar om x = 1 och ring till en annan funktion (t.ex. ring till xy och gör inte x + y)

Hur kan jag redigera en kompilerad .klassfil och lägga till min egen kod?

Kommentarer

  • Jag redigerade frågan, förhoppningsvis är det detta du faktiskt ville ställa. Om inte, vänligen klargör i en kommentar eller redigera den själv.

Svar

Det finns flera sätt att uppnå detta:

  1. Decompile .class to .java source ( inte nödvändigtvis originalkälla, men motsvarande), gör dina ändringar, kompilerar igen. Det finns många Java-dekompilatorer där ute, jag kommer inte lista dem alla.

  2. Demontera .klass till ”montering” (vanligtvis Jasmin-syntax), modifiera den, montera tillbaka. Krakatau är ett bra verktyg som borde kunna göra det.

  3. Använd ett verktyg som kan ändra / lappa bytekoden direkt i .class-filen. Jag har inte provat det, men Recaf påstår sig kunna göra det.

  4. Haka i Java runtime-tolk för att fånga ögonblicket när den börjar köra målfunktionen och få den att köra något annat istället. Detta är något implementeringsspecifikt men här är ett exempel jag vet om vilket som använder Java debugging protocol (JWDP): ”>

https://github.com/CrowdStrike/pyspresso

Svar

Du kan använda JByteMod för att redigera klassens bytkod. Du kan också skapa nya metoder, ta bort metoder, fält och ändra åtkomst.

Det är ganska lätt att använda, ladda bara burken och välj den klass du vill redigera.

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

Kommentarer

  • JByteMod har inte ' t hade tyvärr en uppdatering på två år nu. Författaren har hoppat på olika projekt men i liknande karaktärer.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *