Eu tenho um código java que é compilado em um arquivo .class. Há uma função que obtém alguns parâmetros e executa alguma ação (por exemplo, obter int x e int y e fazer x + y)

Quero adicionar a este arquivo .class o código que verifica se x = 1 e chamar a outra função (por exemplo, chamar xy e não fazer x + y)

Como posso editar um arquivo .class compilado e adicionar meu próprio código?

Comentários

  • Eu editei a pergunta, espero que seja isso que você realmente queria perguntar; se não, esclareça em um comentário ou edite você mesmo.

Resposta

Existem várias maneiras de fazer isso:

  1. Descompilar .class para .java fonte ( não necessariamente a fonte original, mas equivalente), faça suas alterações, compile novamente. Existem muitos descompiladores Java por aí, não vou listá-los todos.

  2. Desmonte .class para “assembly” (geralmente sintaxe Jasmin), modifique-o, monte de volta. Krakatau é uma boa ferramenta que deve ser capaz de fazer isso.

  3. Use uma ferramenta que pode modificar / corrigir o bytecode diretamente no arquivo .class. Ainda não tentei, mas Recaf afirma ser capaz de fazer isso.

  4. Conecte o Java intérprete de tempo de execução para capturar o momento em que começa a executar a função de destino e fazê-lo executar outra coisa. Isso é um tanto específico da implementação, mas aqui está um exemplo que conheço que usa o protocolo de depuração Java (JWDP): https://github.com/CrowdStrike/pyspresso

Resposta

Você pode usar JByteMod para editar o bytecode de sua classe. Você também pode criar novos métodos, excluir métodos, campos e alterar acessos.

É muito fácil de usar, basta carregar o jar e selecionar a classe que deseja editar.

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

Comentários

  • JByteMod não ' teve uma atualização em dois anos, infelizmente. O autor pulou em projetos diferentes, embora em naturezas semelhantes.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *