Uma DLL proxy para Windows para despejar classes JVM no nível JNI.
Alguns programas Java usam reflexão para ocultar seu código, carregando e executando classes dinamicamente. Você pode despejá-los da memória, mas e se eles forem descarregados logo após serem executados? Você pode editar rt.jar
e colocar um gancho em vários métodos de reflexão. Mas e se o programa usar diretamente os métodos de carregamento de classe nativos, ignorando quaisquer ganchos no nível do bytecode?
Este projeto pretende ser uma solução universal para todas as suas necessidades de dumping. Ao conectar-se ao nível JNI mais acessível e confiável, ele descartará todas as classes à medida que forem carregadas.
DefineClass*
. É possível contornar esse método implementando seu próprio carregador de classes no JNI. Baixe a versão mais recente. Coloque version.dll
em seu diretório bin
Java, próximo a java.exe
. Você pode querer usar uma instalação Java separada para não afetar todos os processos. Na sua área de trabalho, crie um novo diretório chamado JVMDUMP
.
Ao executar qualquer programa com a instalação Java modificada, você verá uma caixa de mensagem com o resultado da conexão. Depois de pressionar OK
, todas as classes carregadas serão salvas no diretório da sua área de trabalho.
Error 2
JVMDUMP
não está acessível em sua área de trabalhoUma implementação simples de proxy DLL para injetar na JVM de maneira fácil e confiável. Para mais informações, verifique as referências.
Instala os ganchos que redirecionam métodos para o nosso código. Alimentado por mhook.
A lógica de dumping de classe.
Um analisador de classes Java rápido e simples. Ele analisará o nome da classe de cada buffer de byte conectado e o usará para salvar o arquivo com o nome apropriado.