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.