Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Discussione: [OT] Decompilatori

  1. #11
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Originariamente inviato da Xaratroom
    Mai due variabili in un'istruzione assembly, quindi:

    a = b
    mov <registro>,b
    mov a,<registro>

    ma non puoi usare un registro a caso perchè potrebbe già essere usato
    quindi l'istruzione potrebbe essere arriccchita da una push e una pop
    Non è poi difficilissimo... basta seguire il corso dell'esecuzione, tenere traccia del contenuto dello stack, e tutto torna... certo, con un po' di lavoro...

    E, se tradurre da assembly a c un'istruzione così semplice può essere un po' elaborato
    (perchè non è così semplice far capire al pc cosa deve fare in un caso simile) immagina un'istruzione come assegnare ad una variabile un'espressione...
    ...poi basta ricordare tutte le regole di scope e lifetime che hanno le variabili, cosa che in assembly non esiste, o "gli innumerevoli" tipi di dato
    Se il disassemblatore è come si deve (e ti assicuro che se ne trovano, basta scavare), è in grado di individuare variabili globali e addirittura locali delle procedure. E certe volte anche i valori restituiti.
    Le espressioni, invece, danno qualche problemino in più, anche perchè le istruzioni possono cambiare anche di molto se si trattano numeri interi o floating-point. Ma anche qui basta lavorarci.

    inoltre non vi sono nomi o etichette di salto in un decompilato, ma i relativi "indirizzi"(se così li possiamo chiamare), quindi si deve specificare un nome, se non appropriato, almeno leggibile dal programmatore (trovare in un codice variabili con nomi del tipo: a,b,c,d,e...,a1,a2,a3,a4)

    Naturalmente non è impossibile ma "è improbabile"....
    In realtà i disassemblatori buoni sono in grado, ad esempio, di ricostruire i riferimenti incrociati, e quindi di capire quali istruzioni sono destinazione di quali salti. E quindi sono in grado di creare etichette, seppur spartane, invece di indirizzi, tipo
    codice:
                (istruzioni...)
    loc_10003000FF:
                (istruzioni...)
                JMP loc_10003001A0
                (istruzioni...)
                Jxx loc_10003000FF
    loc_10003001A0:
                (istruzioni...)
    Così come per le variabili, ti vengono fuori nomi tipo arg_0, var_2...
    Il che, pur limitatamente, aiuta un bel po'.
    Svegliati, Neo. Matrix ti possiede...

  2. #12
    Io sono molto diffidente a riguardo...
    ...In ogni caso si devono adottare delle linee guida nella decompilazione che ti consentano
    poi di tradurre ogni istruzione con regole ben precise.
    Ciò non produrrà un sorgente fedele a quello originale.
    Experience is what you get when you don’t get what you want

  3. #13
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Originariamente inviato da Xaratroom
    Io sono molto diffidente a riguardo...
    Dai un'occhiata su www.datarescue.com, provalo su qualche programma di cui hai il codice sorgente e avrai qualche sorpresa...

    ...In ogni caso si devono adottare delle linee guida nella decompilazione che ti consentano
    poi di tradurre ogni istruzione con regole ben precise.
    Ciò non produrrà un sorgente fedele a quello originale.
    Ovviamente è impossibile che il sorgente ottenuto sia ESATTAMENTE come quello originale.
    Ma almeno la logica alla base dovrebbe conservarsi.
    Svegliati, Neo. Matrix ti possiede...

  4. #14
    Ok sono totalmente daccordo:
    Disassemblare è fattibile....
    Mi volevo solo soffermare (e forse ho esagerato un po' troppo nel farlo) sul fatto che decompilare è un'operazione che consente di passare da un codice in linguaggio a basso livello (quale l'assembly), a un codice in un linguaggio ad alto livello...
    Questa operazione è elaborata e spesso non produce i risultati attesi (per questo motivo i decompilatori, dico io, non funzionano) ma non perchè impossibile.
    Sono daccordo con te quando dici che un buon decompilatore non è un sogno
    Experience is what you get when you don’t get what you want

  5. #15
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Originariamente inviato da Xaratroom
    Ok sono totalmente daccordo:
    Disassemblare è fattibile....
    Mi volevo solo soffermare (e forse ho esagerato un po' troppo nel farlo) sul fatto che decompilare è un'operazione che consente di passare da un codice in linguaggio a basso livello (quale l'assembly), a un codice in un linguaggio ad alto livello...
    Questa operazione è elaborata e spesso non produce i risultati attesi (per questo motivo i decompilatori, dico io, non funzionano) ma non perchè impossibile.
    Sono daccordo con te quando dici che un buon decompilatore non è un sogno
    Certo è difficile, ma immagina quanti soldi si farebbe chi tentasse di scrivere un decompilatore capace di generare codice che, come minimo, sia ricompilabile... anche se magari non ti riconosce gli switch...
    Svegliati, Neo. Matrix ti possiede...

  6. #16
    Io penso finirebbe in gattabuia
    Experience is what you get when you don’t get what you want

  7. #17
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Originariamente inviato da Xaratroom
    Io penso finirebbe in gattabuia
    Non credo... Alfred Nobel inventò l'esplosivo, e gli è stato dedicato un premio prestigioso...

    I decompilatori sono applicazioni in grado di ricostruire il codice sorgente originario delle applicazioni. ANCHE quelle protette da diritti d'autore, ma non solo. Ed è questo "non solo" che importa.

    Un po' come lo Stato specula sui CD vuoti: tu potresti (condizionale) usarli per violare la legge? Allora la violi. E quindi ti faccio pagare il 20% di IVA.
    E chi li usa solo per i backup se la prende nella porta USB
    Svegliati, Neo. Matrix ti possiede...

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.