Reverse Eng. chiarimenti ASM|C#|VB.NET

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
TommyB1992
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 856
Iscrizione: domenica 7 luglio 2013, 15:55
Desktop: GNU/Linux
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

Reverse Eng. chiarimenti ASM|C#|VB.NET

Messaggio da TommyB1992 »

Ciao ragazzi,

piccolo disclaimer

da circa 5-6 giorni mi sono dato al "reverse engineering for dummies" per una decina di ore al giorno, quindi mi sono letto un paio di libri in pdf e uno cartaceo della hoepli sull'assembly, un pò di esercizi che mi ha fornito un utente sul forum e poi ho creato un mio programma semplice per vedere il funzionamento disassemblandolo e patchandolo con ollydbg/XVI32 e infine ho provato le skills acquisite provando a crackare un software che utilizza un anti-crack commerciale piuttosto famoso che viene utilizzanto anche su alcuni prodotti di Xbox etc... (alcuni di voi immagino che avranno capito di quale parlo) e ho notato che la difficoltà nel farlo è stata piuttosto bassa... penso di averci impiegato al massimo un ora e mezza e che alla fine si trattava solo di:
1) O modificare tutte le referenze ai vari je/jz/etc... che portavano al blocco del programma;
2) O modificare le procedure prima che ritornassero il valore, in maniera tale da evitare di modificare 300 je/jz/etc...
Sono sicuro che un utente esperto non ci impiegherebbe più di 20 minuti in confronto alla mia ora e mezza.

Ora passiamo alle domande:
1) Come procedo per la decompilazione di software sviluppati in VB.NET/C#? Ho provato a decompilare con JustDecompile e togliere l'obfuscator con de4dot e ricompilare con Visual Studio, ma il codice estratto mi da diversi errori perciò non riesco a ricompilarlo. Ovviamente una soluzione potrebbe essere imparare a programmare in C# o VB.NET e correggi gli errori, e per carità sono disposto anche farlo, ma se posso evitare...
2) Siccome voglio estrarre degli algoritmi da un software e poi traslarli in notazione matematica come faccio a vedere solo la parte di codice Assembly che viene eseguita in quel momento?

p.s. come software attualmente sto utilizzando x96dbg
TommyB1992
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 856
Iscrizione: domenica 7 luglio 2013, 15:55
Desktop: GNU/Linux
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

Re: Reverse Eng. chiarimenti ASM|C#|VB.NET

Messaggio da TommyB1992 »

Alla prima domanda mi rispondo da solo: ILDASM/ILASM (l'ho appena scoperto e provato)
Per fortuna la sua sintassi è un mix fra Programmazione ad alto livello e asm, perciò non ho trovato grande difficoltà a patchare neanche questa volta. Chiunque abbia però una risposta alla seconda domanda è ben accetto...
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 362
Iscrizione: venerdì 30 giugno 2006, 1:20
Distribuzione: gentoo
Sesso: Maschile

Re: Reverse Eng. chiarimenti ASM|C#|VB.NET

Messaggio da Eresia »

Un consiglio che posso darti è iniziare con i debugger come gdb o mdb* , ma ti serve una massiccia conoscenza di assembly. Studia bene il comportamento del programma (inizia da esempi stupidi fatti da te) e sopratutto comprendi bene la struttura dei registri.
Questo è un ottimo libro che fa al caso tuo

*mdb è molto più hardcore del primo
emerge --auD --oneshot life/lucky-*
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Google [Bot], nik1404 e 5 ospiti