Oppure

Loading
20/07/11 16:33
Nullable
Postato originariamente da HeDo:

Postato originariamente da Nullable:

Come scusa ?


Ti stai incaponendo su un genere di programma per cui non esistono cose ben precise da studiare o da imparare. Non puoi fare come stai facendo tu, o almeno, _non solo_. Non sono programmi da chiedere su un forum, non ci sono guide per realizzarli.

La detection del linguaggio con cui è stato realizzato un programma può essere al contempo semplice e difficile, l'analisi spesso si basa su euristiche moderatamente complesse.
Se poi vogliamo mettere i puntini sulle I, in realtà tu non fai la detection del tipo di linguaggio, ma del compilatore. Io posso tranquillamente programmare in C++ e compilare sia con mingw sia con VS10, gli output binari saranno diversi (molto!).

Come se non bastasse ogni compilatore ha un numero decisamente alto di opzioni di compilazione che possono invalidare molti metodi di detection.
D'altra parte ci sarebbe il "problema" dei packer, non è detto che tutto sia sempre in chiaro! Esistono infinite tecniche di offuscamento in grado di confondere il più sofisticato decompilatore, figurati quanto ci vuole a far fallire una detection.

Inoltre io posso (paradossalmente!) hostare il .NET framework in un eseguibile compilato in C++ che tira su un servizio WCF e inizia ad interagire con un database tramite Entity Framework... a quel punto te che cosa detecti? I cavoli a merenda!

Il tipo di programma che vuoi realizzare spesso è una feature di programmi di decompilazione più sofisticati come IDA, nessuno si mette a farlo standalone semplicemente perchè senza una solida base di decompilazione del binario non riesci a farti una vaga idea di cosa c'è dentro l'eseguibile.

Prima di avventurarti in un'impresa del genere ti consiglio di leggerti almeno un paio di volumi sul reverse engineering, architetture dei compilatori e struttura dei file eseguibili, poi ne possiamo riparlare.

Mi dispiace fare sempre il guastafeste ma concludo sempre i post lunghi con la stessa frase.

Per ora lascia perdere.



Ti ringrazio per i chiarimenti che hai scritto, io volevo proprio sapere cosa sta dietro l'identificazione del sorgente di un software e da quello che hai scritto tu ho capito che è molto difficile in quando il compilatore non è universale per tutti i software. Volevo solo sapere cosa c'era dietro tutto ciò e ho capito che le mie attuali conoscenze non soddisfano la creazione di un simile software.

Grazie ^^
aaa
20/07/11 17:18
HeDo
Postato originariamente da Nullable:

Ti ringrazio per i chiarimenti che hai scritto, io volevo proprio sapere cosa sta dietro l'identificazione del sorgente di un software e da quello che hai scritto tu ho capito che è molto difficile in quando il compilatore non è universale per tutti i software. Volevo solo sapere cosa c'era dietro tutto ciò e ho capito che le mie attuali conoscenze non soddisfano la creazione di un simile software.

Grazie ^^


di niente, ad ogni modo se proprio ti sei innamorato di questo programma ti do due dritte fattibili. Non realizzerai un tool infallibile a prova di packer ed offuscatori ma ti darà comunque una detection nel 60/70% dei casi:

1) Dependency scanner
2) Signature detection

il primo ottiene la lista delle dipendenze di un eseguibile, ovvero le DLL sulle quali si appoggia. Si può stilare una lista delle DLL che vengono _normalmente_ linkate per ogni compilatore, da questo hai un indizio sul linguaggio.
Il secondo cerca all'interno del file delle stringhe particolari che ti garantiscono una detection, ad esempio i files compilati con Visual C++ 8 hanno al loro interno "Microsoft Visual C++ 8" e così via (una lista molto completa la puoi trovare in CFF explorer).
Ultima modifica effettuata da HeDo 20/07/11 17:19
aaa
20/07/11 17:50
Nullable
Postato originariamente da HeDo:

Postato originariamente da Nullable:

Ti ringrazio per i chiarimenti che hai scritto, io volevo proprio sapere cosa sta dietro l'identificazione del sorgente di un software e da quello che hai scritto tu ho capito che è molto difficile in quando il compilatore non è universale per tutti i software. Volevo solo sapere cosa c'era dietro tutto ciò e ho capito che le mie attuali conoscenze non soddisfano la creazione di un simile software.

Grazie ^^


di niente, ad ogni modo se proprio ti sei innamorato di questo programma ti do due dritte fattibili. Non realizzerai un tool infallibile a prova di packer ed offuscatori ma ti darà comunque una detection nel 60/70% dei casi:

1) Dependency scanner
2) Signature detection

il primo ottiene la lista delle dipendenze di un eseguibile, ovvero le DLL sulle quali si appoggia. Si può stilare una lista delle DLL che vengono _normalmente_ linkate per ogni compilatore, da questo hai un indizio sul linguaggio.
Il secondo cerca all'interno del file delle stringhe particolari che ti garantiscono una detection, ad esempio i files compilati con Visual C++ 8 hanno al loro interno "Microsoft Visual C++ 8" e così via (una lista molto completa la puoi trovare in CFF explorer).


Grazie HeDo ^^
aaa