PDA

Visualizza la versione completa : [C++] decompilare e riassemblare (era: debugger vari)


§hady
14-12-2004, 23:20
Ho visto che avete già riparlato dell'argomento, ma o non fa a caso mio oppure ancora non mi è chiaro..
Ho trovato un programmino del tutto free, senza copyright. Un programmino per fare calcoli matematici: roba di 500 Kb. Il problema è che è in inglese e volevo tradurlo in italiano.
Con Res(ource) Hack sono riuscito a tradurre un po' della roba, ma non tutta. mi sono scaricato allora Win32dasm che mi legge una specie di codice dove facendo una piccolo "find text" ho trovato anche le cose che con Res Hack non mi trovava. Poi ho scoperto che con Win32dasm non si poteva riassemblare, ma solo leggere. Mi hanno detto che c'è Miew, l'ho provato (era in prova) ma non c'ho capito una mazza perkè sotto dos, ed ho lasciato perdere.
Le domande sono dunque 2:
1) esiste un prog come res hack (fatto meglio però) o come Win32dasm dove si possa modificare e ri-assemblare?
2) se no, dopo aver usato Win32dasm (ottimo, nn lo cambierei) cosa uso per editare e ri-assemblare?

Grazie dell'attenzione!! Siete forti

§hady
15-12-2004, 14:18
ps: il programma è stato fatto in c++ :)

§hady
16-12-2004, 14:09
perkè non risponde nessuno?

netarrow
16-12-2004, 16:38
quella specie di codice che mostra il programma è codice assembler, col programma Win32dasm puoi solo leggere, per modificare devi usare un editor-esadecimale, come penso tu sappia alla fin fine i programmi sono una serie di 0 e 1, però sarebbe un po pesantuccio scrivere migliaia o milioni di 0 e 1, allore viene usata la base 16, un editor esadecimale ti farà vedere del codice macchina simile a questo:



...
EB01 AB12 AAAA AS56 9090 SDFD
OP90 1234 EBEB RT45 0945 4353
...


ovviamente è a random il mio esempio, solo EB ricordo vuol dire veramente jmp in asm.

Dopo che hai dissasemblato con Win32dasm, se ti posizioni nella riga che contiene la informazione da modificare in basso viene indicato l'offset, quindi modificherai con dasm che dovrebbe tradurti la riga il linguaggio macchina(senza modificare effitivamente il file), quindi tu andrai nel sorgente numerico, posizionerai il caret fino a vedere lo stesso offset in basso, e sovrascriverai la parte "corretta".

E' difficile da spiegare... ci sono moltissime guide a riguardo anche a livello universitario, ora non le ho sotto mano, appena le trovo le posto.

Ah, per fare queste cose è meglio avere una buona base di asm... almeno saperlo leggere.
Un programma che ha disassembaltore/editor-esadecimale in uno è HackMan dissasembler... apparte il nome che è proprio poco originale non è male.
Un altro buono, che però è solo debugger/disassemblatore, è OllyDgb.

:ciauz:

Loading