Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Java to ASM.... si può fare?

    Ciao!
    Che voi sappiate c'è un modo per generare codice assembly da un .java/.class/.jar??
    In alternativa ho visto che con javap si riesce ad ottenere il bytecode del programma che abbiamo fatto, se non si riuscisse a fare nel primo modo, c'è un modo per avere il codice assembly partendo dal bytecode??
    perchè programmo in java e ho bisogno di creare un .exe partendo dal mio programma in java... direte: "ma esiste java2exe, exe4j e altri che fanno l'operazione jar-to-exe"... lo so, ma a me serve creare un exe che non necessiti della jvm mentre con java2exe ed exe4j viene richiamata la jvm dall'exe creato e poi viene eseguito il jar... insomma da un programma java c'è un modo di avere il codice assembly??? magari con un programma simile ad OllyDBG... solo che purtroppo ollydbg con i jar non funge...
    Grazie in anticipo!!
    L'ascensore può scendere su e giù...
    by Prof di Sistemi

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Java to ASM.... si può fare?

    Originariamente inviato da Harlandraka_94
    Che voi sappiate c'è un modo per generare codice assembly da un .java/.class/.jar??
    In alternativa ho visto che con javap si riesce ad ottenere il bytecode del programma che abbiamo fatto, se non si riuscisse a fare nel primo modo, c'è un modo per avere il codice assembly partendo dal bytecode??
    perchè programmo in java e ho bisogno di creare un .exe partendo dal mio programma in java... direte: "ma esiste java2exe, exe4j e altri che fanno l'operazione jar-to-exe"... lo so, ma a me serve creare un exe che non necessiti della jvm mentre con java2exe ed exe4j viene richiamata la jvm dall'exe creato e poi viene eseguito il jar... insomma da un programma java c'è un modo di avere il codice assembly??? magari con un programma simile ad OllyDBG... solo che purtroppo ollydbg con i jar non funge...
    Grazie in anticipo!!
    Hai un po' di confusione ....

    Quello che c'è dentro i file .class (a parte header, descrittori vari, ecc...) è il "byte code" java, un codice macchina inventato di sana pianta dalla Sun. Non è un codice macchina per un processore fisico, reale esistente. Semplicemente è un set di istruzioni "inventato" da zero.

    Poi per la esecuzione reale del bytecode ci sono 2 strade: la interpretazione pura o la compilazione JIT (just in time) che trasforma il byte code nel codice macchina del processore reale. E quest'ultima cosa è quello che fa di norma una virtual machine per una certa piattaforma, perché chiaramente più efficiente.

    Detto questo, c'è da dire che qualcosa esiste per ottenere eseguibili "nativi". Parlo di GCJ (vedi http://en.wikipedia.org/wiki/GCJ ). Ma innanzitutto è per gli Unix-like e poi comunque non credo (almeno così sapevo) che sia completo dal punto delle librerie.
    Già perché non è tanto questione di generare del codice macchina per un certo processore fisico .... ma avere nativo tutto il set di librerie del runtime java!!
    E comunque ci sarebbe da ragionare su cosa vorrebbe dire (senza avere davvero un JRE) fare operazioni che riguardano la reflection o il caricamento delle "risorse".

    Morale: se si ha una applicazione Java, meglio farla "girare" con un JRE apposito. Altrimenti si rischia di darsi la classica zappa sui piedi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Java to ASM.... si può fare?

    Originariamente inviato da andbin
    Hai un po' di confusione ....

    Quello che c'è dentro i file .class (a parte header, descrittori vari, ecc...) è il "byte code" java, un codice macchina inventato di sana pianta dalla Sun. Non è un codice macchina per un processore fisico, reale esistente. Semplicemente è un set di istruzioni "inventato" da zero.

    Poi per la esecuzione reale del bytecode ci sono 2 strade: la interpretazione pura o la compilazione JIT (just in time) che trasforma il byte code nel codice macchina del processore reale. E quest'ultima cosa è quello che fa di norma una virtual machine per una certa piattaforma, perché chiaramente più efficiente.

    Detto questo, c'è da dire che qualcosa esiste per ottenere eseguibili "nativi". Parlo di GCJ (vedi http://en.wikipedia.org/wiki/GCJ ). Ma innanzitutto è per gli Unix-like e poi comunque non credo (almeno così sapevo) che sia completo dal punto delle librerie.
    Già perché non è tanto questione di generare del codice macchina per un certo processore fisico .... ma avere nativo tutto il set di librerie del runtime java!!
    E comunque ci sarebbe da ragionare su cosa vorrebbe dire (senza avere davvero un JRE) fare operazioni che riguardano la reflection o il caricamento delle "risorse".

    Morale: se si ha una applicazione Java, meglio farla "girare" con un JRE apposito. Altrimenti si rischia di darsi la classica zappa sui piedi.

    Si è vero ho molta confusione, in pratica quello che mi servirebbe fare è avere un codice ASM in un qualsiasi modo partendo da un eseguibile java...
    IO uso linux... proverò gcj e ti farò sapere... grazie!
    L'ascensore può scendere su e giù...
    by Prof di Sistemi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.