Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Iniettare codice
Forum - C/C++ - Iniettare codice - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 23:06
Lunedì, 03/08/2015
Va bene, è ora di svelare l'arcano.
Purtroppo per comprendere questo genere di "tecniche" ed implementarle con efficacia è necessario un background di reverse engineering e una conoscenza abbastanza buona dell'assembly della piattaforma sulla quale lavori.
Detto questo la tecnica di "reindirizzare" o "chiamare" una funzione presente in un eseguibile già compilato non è eccessivamente difficile. Si procede grosso modo in questo ordine:

1) Lanciare il programma che ti interessa con la tua dll attaccata (dll injection)
2) La dll tramite detours sostituisce le istruzioni iniziali delle funzioni che hai intenzione di reindirizzare, in questo modo quando viene chiamata quella funzione del programma, l'esecuzione passa al codice che hai scritto dentro la dll.
3) La dll una volta caricata dentro l'eseguibile ha accesso a tutte le sue internals, e con readprocessmemory e writeprocessmemory è libera di alterare i dati dell'applicazione

Tutto quello che ho scritto è da intendere SUCCESSIVO ad un'estesa fase di analisi del programma con disassemblatori come IDA pro o ollydbg. Dopo che hai creato una mappa degli indirizzi dei dati e delle funzioni che ti interessano procedi a scrivere la dll.

Come ho già detto in partenza è una cosa difficile ma non infattibile, ormai qualche anno fa ho pubblicato questo articolo: http://www.pierotofy.it/pages/guide_tutorials/Informatica/ ...
Lì trovi come deve essere strutturata un'analisi di un compilato :)

Consiglio la lettura di alcuni libri sull'argomento prima di lanciarsi in questa giungla!

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 0:32
Martedì, 04/08/2015
Testo quotato

Postato originariamente da HeDo:

Va bene, è ora di svelare l'arcano.
Purtroppo per comprendere questo genere di "tecniche" ed implementarle con efficacia è necessario un background di reverse engineering e una conoscenza abbastanza buona dell'assembly della piattaforma sulla quale lavori.
Detto questo la tecnica di "reindirizzare" o "chiamare" una funzione presente in un eseguibile già compilato non è eccessivamente difficile. Si procede grosso modo in questo ordine:

1) Lanciare il programma che ti interessa con la tua dll attaccata (dll injection)
2) La dll tramite detours sostituisce le istruzioni iniziali delle funzioni che hai intenzione di reindirizzare, in questo modo quando viene chiamata quella funzione del programma, l'esecuzione passa al codice che hai scritto dentro la dll.
3) La dll una volta caricata dentro l'eseguibile ha accesso a tutte le sue internals, e con readprocessmemory e writeprocessmemory è libera di alterare i dati dell'applicazione

Tutto quello che ho scritto è da intendere SUCCESSIVO ad un'estesa fase di analisi del programma con disassemblatori come IDA pro o ollydbg. Dopo che hai creato una mappa degli indirizzi dei dati e delle funzioni che ti interessano procedi a scrivere la dll.

Come ho già detto in partenza è una cosa difficile ma non infattibile, ormai qualche anno fa ho pubblicato questo articolo: http://www.pierotofy.it/pages/guide_tutorials/Informatica/ ...
Lì trovi come deve essere strutturata un'analisi di un compilato :)

Consiglio la lettura di alcuni libri sull'argomento prima di lanciarsi in questa giungla!



Non ho capito il punto 2 :-?

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 10:06
Martedì, 04/08/2015

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 11:29
Martedì, 04/08/2015
non ho capito questo: "delle funzioni che hai intenzione di reindirizzare" in che senso reindirizzare? L'obiettivo non era eseguirle?

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 17:49
Martedì, 04/08/2015
Molto bello il tuo articolo hedo.
Mi ha chiarito le idee su alcuni punti.

Ps mi associo alla domanda di darkjuster


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 9:02
Mercoledì, 05/08/2015
non è necessario per forza dover reindirizzare delle funzioni, ma di solito è molto comodo per superare sistemi di anticheat o di attivazione.
Se riesco ad identificare la funzione che viene chiamata per verificare ad esempio un seriale, mi basta reindirizzarla con una detour che ritorna sempre true e il gioco è fatto no?

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 11:58
Mercoledì, 05/08/2015
ah ok, ho capito, stai suggerendo di fare una specie di proxy?

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 18:31
Mercoledì, 05/08/2015
Testo quotato

Postato originariamente da TheDarkJuster:

ah ok, ho capito, stai suggerendo di fare una specie di proxy?



Se così lo vuoi chiamare, si :)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo