Legge la memoria di un'applicazione java

1

Ho bisogno di qualche consiglio di avviamento qui. Mai fatto il reverse engineering Java prima, ma avevo bisogno di leggere in qualche modo la memoria di un'applicazione java desktop in esecuzione. Il processo comunica con un server esterno su un canale crittografato e recupera alcuni file. I file, per quanto ne so, sono bytecode Java pensato per estendere la funzionalità dell'applicazione corrente. Mi piacerebbe sapere cosa ci sono in questi file, quindi potrei in seguito provare a invertire bytecode sul codice del programma per avere uno sguardo più ravvicinato su come cambiare il comportamento dell'applicazione. Puoi suggerire uno strumento di debug adatto o dirmi qualcosa su questa metodologia?

    
posta Rápli András 28.02.2017 - 02:06
fonte

2 risposte

1

Di solito uso il Krakatau (dis) assember link per esaminare e modificare i file bytecode di Java.

L'unico modo per ottenere il codice in una JVM è implementare un programma di caricamento classi. Il bytecode che va nella JVM è, ovviamente, in chiaro. Quindi, disassemblare prima le classi locali, individuare ClassLoader e agganciare ClassLoader per scaricare il bytecode che verrebbe caricato su un file (e possibilmente caricare il codice di sostituzione se lo si desidera).

Buona fortuna, e non farlo negli Stati Uniti, poiché probabilmente è una violazione DMCA.

    
risposta data 28.02.2017 - 04:37
fonte
-1

Riesci a interrompere il canale crittografato con un proxy (se è ad esempio l'utilizzo di HTTPS per la crittografia?) e installare i certificati SSL del proxy nel tuo cert store locale in modo che il processo si fidi del proxy? Quindi è possibile acquisire i dati dai pacchetti (ad esempio il codice byte) e passare da lì? Questo non ti dà l'immagine di ciò che è effettivamente in esecuzione dopo un download, ma potrebbe essere sufficiente per i tuoi scopi. Se non riesci a farlo (perché non è un protocollo proxyable per esempio, o il processo non usa il cert store locale), dipende dalla tua configurazione locale in termini di sistema operativo e livello di privilegio, ecc.

    
risposta data 28.02.2017 - 08:43
fonte

Leggi altre domande sui tag