Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: [OT] Decompilatori

  1. #1

    Decompilatori

    Il mio prof di informatica ha detto che esistono dei decompilatori per c/c++...

    A me sembra strano ma lui sicuramente ne sa piu' di me sull'argomento...

    Mi chiarite un po' le idee?

  2. #2
    Mai incontrato un decompilatore che riuscisse a decompilare qualcosa di più complesso di un Hello World, magari neanche quello se il programma ha attive un po' di ottimizzazioni.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Originariamente inviato da Neon87
    Il mio prof di informatica ha detto che esistono dei decompilatori per c/c++...
    L'argomento decompilazione è sempre ad alto rischio su questo forum, in quanto sono problematiche che possono sempre essere sfruttate per utilizzi non del tutto legali, come il "reverse engineering" di applicazioni commerciali.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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

    Re: Decompilatori

    Originariamente inviato da Neon87
    Il mio prof di informatica ha detto che esistono dei decompilatori per c/c++...
    Le possibilità sono due: o il prof. non capisce una 'h' oppure si è confuso e voleva dire "disassemblatore".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    Re: Re: Decompilatori

    Originariamente inviato da andbin
    Le possibilità sono due: o il prof. non capisce una 'h'
    Quindi niente files di intestazione...
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6

    Re: Re: Decompilatori

    Originariamente inviato da andbin
    Le possibilità sono due: o il prof. non capisce una 'h' oppure si è confuso e voleva dire "disassemblatore".
    Non liquiderei la faccenda in questi termini anche se la decompilazione è una branca dell'informatica poco conosciuta . L'idea alla base di un decompilatore è che ogni particolare compilatore produce , per ogni istruzione , una particolare sequenza di codice oggetto . Quindi il decompilatore si fa carico di tradurre il "particolare" codice oggetto nel corrispondente codice sorgente . Avremo quindi decompilatori specifici per ogni particolare compilatore . Per maggiori informazioni visita il seguente sito .

    Saluti

  7. #7
    grazie mille delle risposte!

    sono sicuro che abbia detto decompilatore perche' quando l'ha detto gliel'ho chiesto nuovamente per sicurezza perche' mi sembrava strano...

    boh probabilmente era una giornata storta perche' ha fatto un gran casino a spiegare cin cout e roba varia...

    vi faccio sapere cosa dice lunedi

    grazie ancora!

  8. #8
    Ho provato un casino di decompilatori (a puro scopo didattico !?)...
    ...Non funziona neanche per il più semplice prog in dos.
    In realtà decompilare non è semplice come sembra: per passare da un'eseguibile al sorgente ci possono essere molte ambiguità.
    Diverso è disassemblare (sebbene i termini siano in parte sinonimi).
    Experience is what you get when you don’t get what you want

  9. #9
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Originariamente inviato da Xaratroom
    Ho provato un casino di decompilatori (a puro scopo didattico !?)...
    ...Non funziona neanche per il più semplice prog in dos.
    In realtà decompilare non è semplice come sembra: per passare da un'eseguibile al sorgente ci possono essere molte ambiguità.
    Diverso è disassemblare (sebbene i termini siano in parte sinonimi).
    E' pure vero che invece esistono ottimi disassemblatori, in grado di ricostruire la suddivisione del codice in procedure, con tanto di parametri (spesso di tipo C, come, che ne so, HWND o tagRECT) e variabili locali.
    Con un pochino di lavoro e di conoscenza di Assembly, quindi, basta un buon disassemblatore per ottenere codice quasi decompilato.
    In fin dei conti, "MOV a, b" corrisponde a un'assegnazione "a = b", così come "LEA a, b" corrisponde a "a = &b"... e così via.
    Ovviamente vanno risolti problemini non da poco, come il fatto che nel codice C non si vedono i registri, lo stack non esiste e lo stack pointer nemmeno... ed è per questo che decompilare è una vera sfida.

    Che comunque, un po' come l'energia atomica, non è di per sè pericolosa, ma potrebbero esserlo certi usi che se ne fanno. Una centrale nucleare ben fatta e ben mantenuta può solo fare del bene, così come recuperare il codice sorgente di un nostro vecchio programma potrebbe tornarci utile... soprattutto se il disco in cui l'avevi salvato ti lascia...
    Svegliati, Neo. Matrix ti possiede...

  10. #10
    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

    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

    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"....
    Experience is what you get when you don’t get what you want

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.