![]() |
![]() Sommario...
BreackPoint E' un punto di interruzione che viene settato dentro un debugger per analizzare una determinata routine o chiamata alle API (vedi sezione API). In genere per settare breackpoint è sufficente fare un doppio click nella linea laterale a sinistra del disassemblato,oppure (dentro ollydbg)è sufficiente dotarsi della commandline di OllyDbg e far precedere al nome dell'API la sigla bpx (vedi sezione API). Handle E' un valore univoco che viene attribuito ad ognina delle finestre che abbiamo aperte nel PC.Spesso viene usato dai programmi anti reverser per individuare un debugger o simili.Trhead Un Trhead è un processo figlio di un processo più grande.Il trehead ha un identificativo univoco ,e una creation flag,che corrisponde al tipo di trhead. Per esempio,può esserci un trehead con creation flag " CREATE_SUSPENDED" che crea trhead addormentati,e possono essere chiusi solo da appositi comandi. Anche i trhead sono dei diversivi che possono essere utilizzati per proteggere un eseguibile,per esempio Execryptor,o lo stesso Pirupiru crack me di predator che trovate nella sezione crackME. ________ Ecco a voi un elenco di API utili.Per prima cosa,cosa è un API e a cosa ci serve saperlo...Dice wikipedia:API è l'acronimo di Application Program(ming) Interface (Interfaccia di Programmazione di un'Applicazione), 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. Ottimo,ora,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 contano) Intercettarle e settare su di loro un breackpoint è utile per trovare aprti essenziali del disassemblato senza impazzire a studiarlo tutto. MessaggiMessageBoxA Semplicemente 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 registroRegOpenKeyA 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. |