Domanda Reversing Reversing

Stato
Discussione chiusa ad ulteriori risposte.

Indiana

Utente Bronze
3 Dicembre 2013
28
13
1
49
Salve a tutti.
Sono incompetente in materia.
Cos'è e a cosa serve il reverse engineering?
E' possibile impararlo da auto-didatta?
Grazie
 
Se non ti è chiaro qualche aspetto specifico dell'argomento posta di nuovo specificando meglio, così potremo risponderti a dovere. Se invece ti interessa una definizione generale Google e Wikipedia possono aiutarti, sono lì apposta.

Quanto alla seconda domanda: assolutamente sì, @Predator, @EvOlUtIoN_OGM, io e altri utenti di questa sezione ne siamo la prova per quanto ne so (non so di nessuno che abbia seguito dei corsi specifici nell'ambito di questo forum).
 
  • Mi piace
Reazioni: Indiana
Da quello che ho capito con il reverse si può risalire al codice sorgente di un programma. Giusto?
E' possibile fare il reverse su qualsiasi programma e/o gioco (anche su android, e ios)?
se volessi iniziare da zero come devo fare?
Grazie
 
Non puoi sempre risalire al codice sorgente di tutti i software ma in alcuni casi (Python, Java, .NET, Android) ci sono decompilatori in grado di risalire pressapoco al codice sorgente originale, in altri casi (C++, iOS, Visual Basic) riesci a risalire al relativo codice assembler.

Ti do qualche dritta per quello che chiedi.

Android
Basato su Java può essere reversato abbastanza facilmente. Il classico APK al suo interno ha un file chiamato classes.dex che equivale alle classi compilate per la macchina virtuale Dalvik. Gli approcci per reversare su Android sono due:
- Conversione del file .dex in .jar per visualizzare il codice ad alto livello più vicino possibile al java originale
- Decompilazione del file .dex nei vari file di class .smali (smali è il bytecode java)

Alcuni software utili: ApkTool, DexToJar, Java Decompiler (JD-GUI), Apk Studio

iOS
iOS gira su processori ARM e non può essere convertito in uno pseudo-source di conseguenza può essere solamente disassemblato. Il problema su iOS è che le applicazione sono criptate e per essere decriptate devi effettuare prima un processo (che non sto a spiegarti per non dilungarmi troppo), oppure puoi scaricare direttamente il file .IPA da internet (tutti gli .IPA che trovi sono già decriptati) e lavorare direttamente su quello.

Per lavorare sugli IPA l'alternativa migliore è IDA Pro.


Per iniziare da zero prima di metterti a studiare mezzo mondo è partire da qualcosa di semplice e pasticciare seguendo qualche tutorial, a forza di sperimentare e sbattere la testa in breve tempo noterai che avrai imparato qualcosa. Mano a mano andrai a salire. Tutti quanti abbiamo fatto e continuiamo a fare cosi, capisci, ti specializzi, cerchi qualcosa di più complicato e la ruota rigira. E' un campo dove non si smette mai di imparare. Spero di averti dato un infarinata, se hai bisogno chiedi pure.
 
  • Mi piace
Reazioni: Indiana
Sono un po nella tua stessa situazione XD da veramente newbie in questo argomento ti posso dire che ne vale veramente la pena imparare il reverse enginering io ora mi sto cimentando molto sul linguaggio in autoit anche se sinceramente di guide ce ne sono poche ( anzi non ce ne sono o almeno non le ho trovate) quindi bisogna molto arrangiarsi e scervellarsi su quella sedia cercando di capire come fare...
 
Idraik beh mettendo caso che sai fare un reverse riuscendo ad ottenere il codice del programma che te ne fai poi XD un minimo bisogna saperlo fare per poter apportare modifiche, migliorarlo ecc
 
@lDraik Diciamo che non è necessaria una conoscenza approfondita della programmazione per reversare ma mano a mano che sali con le difficoltà del target se non sai programmare non capisci quello che il software fa. Quindi ritengo che una base di fondo è necessaria, io quando ho iniziato sapevo già programmare a livello intermedio in un paio di linguaggi (Java, C++, C#).

Per quanto riguarda la realizzazione di crack e keygen invece dipende tutto da con che linguaggio è stato sviluppato il software. In linea generele per effettuare un keygen la programmazione è necessaria perchè devi capire cosa fare la routine del controllo del seriale o della licenza e saperla riprodurre a ritroso.
Per la realizzazione di crack anche senza saper programmare in molti casi si può fare, ovviamente devi essere però in grado di capire e modificare il codice assembly a dovere. Esistono un sacco di patcher creator per facilitare il processo ai newbie.

Ragazzi se conoscete l'inglese un ottimo corso per tutorial interattivo è stato fatto anni fa da Lena151 parte dalla base per arrivare ad un livello intermedio. E' reperibile qua:

https://tuts4you.com/download.php?view.2876

@Gennaro Panico15 Per Autoit non trovi guide perchè è poco usato. E' un linguaggio di scripting ed automatizione di nicchia perchè è piu semplificato rispetto ad altri linguaggi. Le software house lavorano per la maggiore con Visual C++ e ultimamente sempre più spesso in .NET e Java. Se puoi sposta i tuoi sforzi di apprendimento su qualcosa di più serio, a mio avviso.
 
@crystalboy Grazie della spiegazione. Seguirò sicuramente i tutorial di Lena151 da te consigliati, ma non conoscendo un granché l'inglese, sapesti dirmi se c'è qualche tutorial che tratti almeno le basi in Italiano? Il resto lo approfondirei con i tut di Lena ma mi tornerebbe davvero utile qualcosa in ita almeno per l'inizio. Comunque Poi io so qualcosina in VB.NET mi consigli di approfondirlo (Sempre riguardo al discorso programmazione e reversing) ? Oppure essendo che sono all'inizio anche in VB mi consigli di studiare qualcos'altro, sempre allo scopo di capire a grandi linee come operare nel campo del reversing, O magari non fa differenza il linguaggio di programmazione che so ed è la stessa cosa conoscerne uno piuttosto che un'altro?
Grazie Mille
 
Salve a tutti.
Sono incompetente in materia.
Cos'è e a cosa serve il reverse engineering?
E' possibile impararlo da auto-didatta?
Grazie
Il Reverse Engineering è un processo finalizzato alla ri-produzione di un prodotto in forma virtuale, al fine di poter sviluppare una variante od una replica dello stesso; può anche essere utilizzato per verificare la rispondenza di determinati parametri geometrici di un particolare (Quality Check).

Il Reverse Engineering permette di verificare tutte le funzionalità di un complesso di particolari avendo a disposizione l’oggetto stesso oppure un suo simulacro. A valle di tali verifiche, gli strumenti a disposizione del Reverse Engineering permettono la sua definizione come modello matematico e consentono lo sviluppo dei processi progettuali, sperimentali e produttivi.
 
@lDraik Considera che se hai intenzione di imparare l'arte del reversing l'inglese è un requisito fondamentale perchè ti permette di avere accesso ad un sacco di tutorials e risorse non disponibili in lingua italiana. Per quanto riguarda tutorial in italiano, il mitico Quequero in passato ha creato una board per insegnare il reversing. Ora la board è in inglese ma i tutorial sono ancora disponibili nel vecchio sito, puoi trovarli qui:
Tutorials su cracking: http://spin.quequero.org/Category:Quequero
Lezione assembly: http://spin.quequero.org/Lezione_1_Assembly

Mettiti in testa che per poter reversare qualsiasi software in pratica devi essere in grado di programmare più o meno in tutti i linguaggi, non fa differenza da dove inizi anche se la preferenza a mio parere è e rimane sempre il C++.
Il percorso di studi è diverso in base all'obiettivo che vuoi ottenere anche nel campo del reversing ci sono parecche sfaccettature e suddivisioni dello stesso: Malware analisys, reversing su microprocessori, reversing su smartphone ecc... ma la maggior parte iniziano dai software su pc per poi spostarsi, con l'esperienza su cosa li attraggono di più.
 
Stato
Discussione chiusa ad ulteriori risposte.