DISCLAIMER!

Le informazioni (e i download, quindi tutti i file contenuti nel blog) da me divulgate sono da ritenersi a puro scopo informativo e di studio. Non mi assumo nessuna responsabilità riguardante l'uso improprio e/o illecito delle tecniche e dei programmi qui descritti e di tutti i danni a cose e persone e/o perdite di guadagni che ne possano derivare. Il blog non vuole istigare nessuno a delinquere o a commettere reati. Le tecniche qui descritte sono da utilizzare a proprio rischio e pericolo.

Traduci Il Blog In




Cerca in Xthreme Hacking!

Reversing: API Utili



Per prima cosa, cosa è un API e a cosa ci serve saperlo: API è l'acronimo di Application Program(ming) Interface (Interfaccia di Programmazione di un'Applicazione) e indica ogni insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per un determinato compito. È un metodo per ottenere un'astrazione, di solito tra l'hardware e il programmatore, o tra software a basso ed alto livello. Le API permettono di evitare ai programmatori di scrivere tutte le funzioni dal nulla. Le API stesse sono un'astrazione: il software che fornisce una certa API è detto implementazione dell'API.

Tutti i programmi che andremo ad analizzare (tranne quelli in VB6 e .NET ma poi vedremo anche per quelli) utilizzano le API per fare qualcosa. Questo qualcosa per essere utile a noi reverser, viene inteso come "Prelevo il seriale inserito e lo leggo" oppure "scrivo nel registro le informazioni di registrazione".
Per cercare le API qui sotto elencate (Che non sono tutte !! Ma solo quelle più ricorrenti) è sufficiente dotarsi della commandline di OllyDbg e far precedere al nome dell'API la sigla bpx..circa così:

bpx MessageBoxA

Da ricordare che i nomi delle API sono Case Sensitive!! (maiuscolo e minuscolo fanno la differenza)
Intercettarle e settare su di loro un breackpoint è utile per trovare aprti essenziali del programma disassemblato senza impazzire a studiarlo tutto.

Messaggi
MessageBoxASemplicemente
invia una messagebox all'utente (tipicamente indica l'inserimento di un seriale errato,o corretto)

SendMessageA
Questo metodo non fa altro che inviare un messaggio, opportunamente codificato, ad una finestra specifica. (WM_CLOSE et similia)

Finestre


GetWindowTextA & GetDlgItemTextA
Entrambe utilizzate quando si ha a che fare con una dialogbox che richiede serial e name,in due aree di testo.

CreateWindowExA & ShowWindow
Aprono una nuova finestra di dialogo

File

ReadFile
Tipicamente utilizzato per leggere da un file,specie s eil file ocntiene info sulla registrazione del programma.Prestare attenzione che ci sono moltissimi casi in cui un prog accede a dei file,e non farsi trarre in inganno.

WriteFile
Come sopra,serve per scrivere su un file

CreateFileA
Serve per generare un file
GetPrivateProfileStringA
Serve per leggere una riga da un file .ini (quelli di configurazione)
RegQueryValueExA
Cerca un valore nel registro

RegOpenKeyA
Lo carica nel programma per usarlo (nel senso,legge il contenuto e lo trasforma in variabile o stringa)

Orari

GetLocalTimer
Essenziale individuarla nei trial a tempo (tipo,30 giorni) serve per restituire al programma l'orario di sistema.

Drive

GetDriveTypeA
Indispensabile quando si ha a che fare con giochi che chiedono il CD originale,serve infatti a determinare quale delle unità sia ad esempio un lettore CD.

Timer

SetTimer
Tipicamente usato per inizializzare l'evento timer,specie per quei demo in limitazione a minuti.

GetTickCount
Serve per prendere appunto un "tick",un passaggio di un minuto o di un secondo di un timer,sempre utile da individuare nei prog con limitazione a minuti.

Nessun commento:

Posta un commento