Winamp 5.05 Code injection |
||
Data |
by bender0 |
|
31/10/2004 |
Published by Quequero |
|
avvertenza: è un essay. può provocare conoscenza.
|
Ben di nuovo complimenti, il code injection e' sempre un argomento MOLTO interessante e molto utile, grazie del tute. |
non somministrare agli haX0rz di età inferiore ai 1337 anni. |
.... |
|
.... |
Difficoltà |
( )Leim ( )NewBies ( )Intermedio (x)Avanzato ( )Master
( )Leet |
Introduzione |
Tools usati |
URL o FTP del programma |
Notizie sul programma |
Essay |
~simple injection,
#1
|
~thread injection, #2
tanto per contraddirmi, ora lavoriamo sulla protezione. per i dettagli sulla protezione vi rimando (ancora) all'essay su winamp 5.04. la routine di check comincia a 444633, breakkiamo qui e ritorniamo; ci troviamo a 444619, dove possiamo vedere che la flag globale che controlla la registrazione � all'indirizzo 46A754. l'idea (stupida in s�, ma valida come esempio) � di creare un nostro thread all'interno del processo target, che setti a 3 (perch� 3? perch� no? :) quella flag ogni secondo. per controllare che il tutto funzioni possiamo attacharci con il debugger e breakkare sul nostro thread, o pi� semplicemente togliere il valore regkey dal registro (HKLM/Software/Nullsoft/Winamp) e vedere come winamp creda lo stesso di essere registrato.
|
~triggered injection, #3
per triggered injection intendo code injection "on request"; ovvero code injection applicata in risposta a degli eventi precisi. ad esempio possiamo applicare la nostra memory patch appena un target packato si � unpackato in memoria, o rispondere a un nostro breakpoint per fare una piccola modifica e ripristinare il codice originale appena dopo la sua esecuzione.
|
|
~api hijacking, #4
api hijacking, dirottare le api? chevvord�? semplicemente intercettare le chiamate alle api ponendoci nel mezzo, come un layer tra il target e il sistema, con tutta la libert� di agire sui parametri da passare ultimamente alla vera api, neutralizzare la chiamata, o eseguire del nostro codice al posto di quello della api. e a che serve? mettiamo il caso che il target chiami GetLocalTime per sapere che giorno � e si basi su questa informazione per decidere se il trial � scaduto... capito no? :)
|
Note finali |
un grazie a faina (come non ci conosciamo?!? :) che
ha scritto un gran tute sull'argomento che mi ha invogliato a completare il mio
:)
e poi grazie Qu� che questa idea delle boxes per il codice � una gran
trovata :)
ovviamente per chiarimenti, migliorie o correzioni mandatemi una
mail.
ci vediamo al prossimo essay... bye.
bender0
Disclaimer |
Vorrei ricordare che il software va comprato e non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento � stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo che ogni sviluppatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.
Reversiamo al solo scopo informativo e per migliorare la nostra conoscenza del linguaggio Assembly.