RSS

Site menu

News topics
Web Rumors [9]
Il chiasso prodotto dal web...
Thech News [5]
Le novità dell'Hi Tech.
Hardware [3]
Hardware's new entries
Software [11]
Il mondo del software secondo me.
Grafica&Design [6]
Photoshop, Gimp.
Hacking e Programmazione [4]
W l'OpenSource

News calendar
«  November 2008  »
SuMoTuWeThFrSa
      1
2345678
9101112131415
16171819202122
23242526272829
30

Login form

Search

Our poll
Com'è il mio sito?
Total of answers: 70

Site friends


Total online: 1
Guests: 1
Users: 0
   
Welcome, Guest Friday, 2024-04-19, 10:59 PM

Main » 2008 » November » 9 » Iniettare codice in un eseguibile
Iniettare codice in un eseguibile
11:17 PM
http://www.tobia.eu/blog/wp-content/uploads/2008/07/codifica.gif
@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@Titolo: Come iniettare codice in un file exe @@
@@Data: 11.09.08; 00.34 @@
@@Autore originale: Iman Karim @@ @@
@@Difficoltà traduzione: 6/10 (l'autore non era inglese :P) @@
@@Lingua Originale: Inglese @@
@@Documento Originale: http://home.inf.fh-rhein-sieg.de/~ikari ... nject.html @@
@@traduzione by:isaac
@@@@@@@@@@@@@@@@@@@@@@@@@@@@


Contenuto:
- Requisiti
- Iniziamo
- Un pò di ASM
- Ultime parole

-Requisiti
Un dedugger. Io preferisco OLLYDBG (il miglior debugger della terra :P)
Una applicazione in cui ignettare il nostro codice.
Io usero l'applicazione di windows NOTEPAD.EXE
Se volete usarlo anche voi, copiatelo in una cartella chiamata CodeInjectTest.
Questo è tutto ;)

-Iniziamo
Il nostro obbiettivo è ignettare del codice in Notepad.EXE .
Nel nostro caso ingetteremo un semplice MessageBox all'inizio del Notepad.
Aprite il notepad, provatelo e controllate che sia quello originale e che funzioni.

Immagine

Se ora siete sicuri che sia il Notepad originale apritelo con Olly.
Evvai! Se sei pronto dovresti avere questa finestra:

Immagine

Dato che dobbiamo iniettare del codice abbiamo bisogno di spazio per farlo.
In un file EXE ci sono un sacco di CodeCaves dove non c'è niente (DB 00).
Allora, abbassiamo un pò la finestra della CPU finchè non troviamo un CodeCave (come questo).
Immagine

Vedi il riquadro rosso? Questo è un CodeCave!
Quì possiamo iniettare del codice senza interferire con il funzionamento del programma.
Se conosci le API per richiamare un MessageBox non hai bisogno di leggere questa parte.


***** START QUOTE FROM THE WIN32 PROGRAMMERS REFERENCE

The MessageBox function creates, displays, and operates a message box.
The message box contains an application-defined message and title,
plus any combination of predefined icons and push buttons.

int MessageBox(
HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);

***** END QUOTE FROM THE WIN32 PROGRAMMERS REFERENCE

Questo è tutto quello che hai bisogno di sapere sui MessageBox
Ora è tempo di fare qualcosa con questi CodeCaves.
Prima di usare MessageBox abbiamo bisogno di creare dei testi da usare come output dei MessageBox.
Nell'immagine seguente ho selezionato alcune linee del CodeCaves e illuminato il menu BinaryEdit per voi.

Immagine

Se avete premuto su Binary=>Edit oppure (CTRL+E) vedrete questa finestra.
Potete compilarlo come ho fatto io se volete.

Immagine

Premete OK e vedrete il codice modificato in rosso:
Immagine

Ora premete CTRL+A per rianalizzare il codice.

Immagine
Ok! Se volete potete avere un MessageBox Caption diverso dal titolo, potete ripetere questo step per fare un secondo ASCII come l' "INJECTED NOTEPAD".

-Un pò di ASM
Ora è tempo per un pò di ASM ;)
Abbiamo bisogno di invoare un MessageBox per ASM. Questo è molto facile!

PUSH 0 ; BUTTONS = <OK ONLY>
PUSH 1008751 ; CAPTION = Our adress of the "INJECTED NOTEPAD"
PUSH 1008751 ; MESSAGE = Same like above.
PUSH 0 ; ICON = <NO ICON>
CALL MessageBoxA; Run MessageBoxA with the Params above.
Queste righe inserite in Olly dovrebbero assomigliare a questo:
Immagine
Riesci a vedere gli arrow?! Questo è un nuovo step importante!
Se lo salviamo e lo apriamo, non avremo nessun effetto. Perchè?
Semplice, la nostra routine non è ancora stata chiamata! (nota dal traduttore: questo non era inglese e alcune frasi non le riesco davvero a capire xD)
Hai bisogno di scrivere l' Offset del tuo primo "PUSH 0" perchè abbiamo bisogno di fare un salto dall'origine dei programmi e tornare indietro di nuovo ;)
Se hai notato l'offset del primo PUSH down, vai all'origine del programma come di seguito.
Immagine
Ora sei alla prima linea di codice che verrà eseguita.
Ti ricordi che la prima cosa che volevamo fare era di fare eseguire il nostro codice? :)
Evvai! Siamo nella giusta strada!
Seleziona ora dall'origine alcune linee e copiale negli appunti.
Immagine
Incolla il contenuto degli appunti in un editor di testo e lasciatelo lì. Ne avremo bisogno in seguito.
Se avete lo avete incollato, andate alla prima linea del programma.
(Nell'immagine upper è il PUSH 70).
Doppi click su di esso e inserito nel box "JMP<adress of your first push"
Immagine
Premi su "Assemble" e avrai di nuovo il codice marcato di rosso.
Immagine
Guarda il box rosso! Questo è l'indirizzo di cui abbiamo bisogno per andare prima del nostro codice iniettato.
Se andiamo quì dopo l'iniezione di codice il programma lo eseguira come senza injection :)
Ma dobbiamo fare un'ultima cosa!
Confronta il "nuovo" origin con il vecchio che hai incollato negli appunti.
Noterai che ci sono delle linee sovrascritte! Ma queste linee servono per eseguire il programma senza errori.
Cerca le linee sovrascritte.
Nel mio caso le linee sono:
PUSH 70
PUSH NOTEPAD.01001898
Clicca sulla prima linea (il nostro JMP) e premi ENTER.
Apparirà l'invocazione del MessageBox
Dopo la chiamata del MessageBoxA abbiamo bisogno di inserire le linee sovrascritte e tornare indietro!

Immagine

Ora hai fatto!
(Se vuoi provare il "JumBack"-Jump basta selezionarlo e premere ENTER.
Se verrai riportato alle giuste linee puoi stare sicuro che è ok! Altrimenti controlla Offset!)
Per salvare il "nuovo" Notepad guarda questa immagine:
Immagine
Se premi su "All modifications" (tutte le modifiche) apparirà una nuova finestra.
Premi su "Copy all" su questa finestra.
Ora apparirà una nuova finestra con il nuovo codice ASM.
Chiudi questa nuova finestra (Solo quella finestra! Non tutta quella di OLLY DBG!)
Dopo il salvataggio, puoi scegliere un nome per il nuovo file.
Salvalo e apri il nuovo file. Se avrai eseguito tutto correttamente avrai questo risultato:
Immagine
Premi su OK e Notepad si aprirà normalmente ;)

-Ultime parole-
Non abusate dei debuggers per includere shellcodes o roba simile nei file EXE!
Imparate e capite soltanto come fare!
Ringraziamenti a: Tutti gli studenti di FH-BRS!
Category: Hacking e Programmazione | Views: 2011 | Added by: koelio | Rating: 0.0/0 |
Total comments: 1
1 isaacisback  
0
per altri tut tradotti dal sottoscritto:
http://advanced-techno.net/txt/guide-tradotte/
Ciao :)
isaacisback

Name *:
Email *:
Code *: