Copy Link
Add to Bookmark
Report

Introduzione a TrackMeDown99 v1.0

DrWatson's profile picture
Published in 
guide hacker
 · 3 Jun 2018

Salve a tutti!
Allora....cominciamo dalle caratteristiche salienti del programma, poi vi spieghero' in dettaglio ogni cosa !

Il programma e' un tipico CRACKME, cioe' un esercizio solo per i crackers, che non svolge nessuna funzione particolare, e si distingue dai programmi normali perche' e' utile praticamente solo per il fatto che contiene uno schema di protezione, che il cracker deve cercare di analizzare, comprendere, e quindi distruggere. Solitamente, dei crackme viene presentato solo il risultato finale, il .EXE per intenderci, per ovvi motivi...ciononostante, io ho deciso di pubblicare anche il sorgente, perche' mi sono spesso ritrovato nella situazione del cracker che, pur avendo disabilitato la protezione di un crackme, desiderava ardentemente possedere il codice (non il disasm, troppo ingarbugliato per capire veramente TUTTO) del programma....con il codice (magari commentato), si puo' avere una completa visione di insieme e (perche' no!) si possono imparare moltissime cose, dalle basi della programmazione fino a cose che probabilmente vi interesseranno solo se avete deciso di intraprendere la carriera del cracker, come il modo in cui puo' essere generato un numero seriale, trucchetti vari per nascondere dalla memoria le tracce di variabili elaborate in precedenza, ecc...
Per questo motivo, ecco a voi il TrackMeDown99 completo di codice sorgente :))
Questa e' la prima volta che scrivo un crackme destinato praticamente SOLO al pubblico (con piu' commenti che istruzioni, per intenderci ;), e quindi spero che mi perdonerete per lo stile forse disordinato e poco chiaro che ho di programmare...sappiate che comunque ho fatto del mio meglio per organizzare il codice in modo lineare :)
Capisco che molti di voi vorranno provare prima la "challenge" di crackarlo da soli (anche se a questi devo dire che e' ESTREMAMENTE facile da sproteggere, in fondo credo che sia meglio seguire una scala di difficolta', e questo e' il primo crackme-tutorial che scrivo :)
Percio', se avete voglia di provarlo, vi avverto: FERMATEVI QUI!! NON LEGGETE OLTRE, PERCHE' NELLE PROSSIME RIGHE COMINCIERO' A SPIEGARE IN DETTAGLIO LO SCHEMA DI PROTEZIONE E LE CARATTERISTICHE INTERNE DEL PROGRAMMA! cracker avvisato, mezzo salvato.....

Siete ancora qui?? ok, allora procediamo!

____________________________________________________________

DESCRIZIONE DETTAGLIATA DELLE CARATTERISTICHE E DELLO SCHEMA
____________________________________________________________


Partiamo dalle caratteristiche....


* IL PROGRAMMA E' SCRITTO INTERAMENTE IN ASSEMBLY PER WIN32

* IL TIPO DI PROTEZIONE E' UNA COMBINAZIONE TRA NOME E REGISTRATION KEY

* IL PROGRAMMA CONTIENE UNA HARDCODED PASSWORD CHE E' RILEVABILE QUANDO LO SI DISASSEMBLA, E CHE SE INSERITA COME "NOME" GENERA UN MESSAGGIO DIVERSO :)

* A DIFFERENZA DI ALCUNI SCHEMI DI PROTEZIONE COMMERCIALI SCRITTI DA DEFICIENTI (VEDI WINZIP ET SIMILIA), DOVE LA PASSWORD E' TRANQUILLAMENTE VISUALIZZABILE IN EDI O ESI AL MOMENTO DEL REPZ CMPSB, QUI AVRETE BISOGNO COMUNQUE DI UN PEZZETTO DI CARTA PER SEGNARVELA, INSOMMA NIENTE PAPPA PRONTA NEI REGISTRI :D

* LA PAPPA PRONTA, E' DA DIRLO, LA AVRETE CON LA HARDCODED PASSWORD, CHE VI APPARIRA' IN BELLA MOSTRA MENTRE TRACCIATE. CI SONO DUE MOTIVI PER CUI HO DECISO DI CONSERVARE QUESTA CARATTERISTICA: UNO, ILLUDE I NEWBIES (MA PROPRIO NEWBIES NEWBIES:) CHE LO SCHEMA FUNZIONI TUTTO COSI', IN STILE "MINESTRINA SERVITA NEL REGISTRO" PER INTENDERCI :D E DUE, PERCHE' AVEVO GIA' SCRITTO LA ROUTINE E MI ROMPEVO DI MODIFICARLA (HEHEH:))

* IL TUTTO E' MOOOLTO SEMPLICE, ED IL GROSSO LO LASCIO AI COMMENTI NEL .ASM

* LE PARTI INERENTI LA CREAZIONE DELLA FINESTRA E DELLE ROUTINE DI WINMAIN, DI GESTIONE MENU E DI GESTIONE DELLA DIALOG BOX LE HO PRESE DIRETTAMENTE DAI TUTORIALS DI ICZELION, MODIFICANDOLE SOLO UN PO'. PER FAR PARTIRE IL PROGRAMMA AVRETE BISOGNO QUINDI DEL FILE WINDOWS.INC DA LUI USATO (LO TROVATE ANCHE IN TMD99.ZIP). VI CONSIGLIO VIVAMENTE DI LEGGERE LE TRADUZIONI IN ITALIANO DEI SUOI TUTORIALS (FATTE DA ME :p) SE SIETE PROPRIO A DIGIUNO DI ASSEMBLY PER WIN32. LE TROVATE SU http://ringz3r0.cjb.net

* LE RISORSE (I MENU E IL DIALOG BOX) LE HO CREATE CON IL BORLAND RESOURCE WORKSHOP. POTETE DARCI UN'OCCHIATA EDITANDO IL FILE TMD99.RES

* IL PROGRAMMA E' STATO SCRITTO INTERAMENTE USANDO ULTRAEDIT 32 (UN PIZZICO DI PUBBLICITA' OCCULTA PER QUESTO GRANDE EDITOR CI STA SEMPRE BENE ;)

* IL COMPILATORE CHE HO UTILIZZATO PER QUESTO PROGRAMMA E' MASM32 v2

* QUESTO SOFTWARE E' LIBERAMENTE DISTRIBUIBILE E MODIFICABILE, SEMPRE CHE SI RICORDINO DUE CONCETTI BASE:
1 - SE LO MODIFICATE, COMUNICATEMELO TRAMITE EMAIL (LA TROVATE ALLA FINE DEL FILE), MAGARI INCLUDENDO NELLA STESSA IL FILE DA VOI MODIFICATO
2 - RICORDATEVI, SEMPRE E COMUNQUE, CHE QUESTO PROGRAMMA E' STATO DEDICATO A RINGZ3R0, IL MIGLIOR SITO DI CRACKING E REVERSE ENGINEERING IN ITALIA! TUTTO QUELLO CHE HO FATTO LO HO FATTO SOLO PER PASSIONE, E DOVRESTE CERCARE DI MANTENERE QUESTO PRESUPPOSTO (NO LUCRO INSOMMA :) NEL MOMENTO IN CUI ANDATE AD EDITARLO PER MODIFICARLO.

Lo schema, invece, funziona cosi'....


1 - prendi carattere

2 - chiama ROUTINE DI CONTROLLO CARATTERE
* il carattere e' una lettera minuscola?
* se si, rendila maiuscola e salta al passo 3
* se no, allora e' una maiuscola?
* se si, salta al passo 3
* se no, allora e' un numero ?
* se si, salta al passo 3
* se no, e' per forza un carattere invalido. setta la flag "carattere invalido" e continua

3 - controlla la flag carattere invalido
* il carattere e' valido ?
* se no, evita di elaborarlo, avanza di carattere, azzera la flag "carattere invalido" e vai al passo 1
* se si, continua

4 - xora carattere con la sua posizione nella stringa : (ad es. "NEURAL" e' uguale a N xor 1, E xor 2, U xor 3 ecc....)
* il carattere inserito e' uguale a quello xorato ?
* si, vai al passo 5
* no, setta la flag "caratteri diversi" e vai al passo 5

5 - controlla se abbiamo superato la posizione 10 nella stringa
* si, avanza di 2 in 2 per confondere un po' le idee del cracker. Vai al passo 6
* no, continua

6 - controlla la flag "caratteri diversi"
* e' uno ? i caratteri sono diversi, vai al passo 9
* zero ? i caratteri sono uguali...continua con il passo 7

7 - abbiamo finito i caratteri ?
* no, vai al passo 1
* si? vai al passo 8

8 - il carattere finale e' un byte 00 ANCHE nel seriale inserito ? o ce lo ritroviamo solo come carattere finale corretto, mentre l'utente ha inserito un seriale piu' lungo del dovuto ?
* no, il seriale inserito continua quando dovrebbe finire...vai al punto 9
* SI! le stringhe contengono gli stessi caratteri, e finiscono per di piu' NELLO STESSO IDENTICO PUNTO! Abbiamo inserito il seriale corretto, lunghezza esatta, caratteri esatti........vai al punto 10!!

9 - dici al cracker che e' un fallito, esci dal loop e torna al dialog box ;)

10 - dici al cracker che e' un wizard, esci dal loop e torna alla prima schermata!


Lo schema quindi e' molto semplice....il cuore della generazione delle key valide sta nel fatto che ogni carattere valido (cioe' un numero o una lettera dell'alfabeto) del nome inserito viene xorato con la sua posizione nella stringa...e tale posizione avanza di due in due una volta superata la decima...facile huh ?? Se comunque vi sentite un po' incasinati, vi rimando ai commenti nel codice - niente panico, ogni singola riga e' commentata, una volta raggiunta la zona 'importante' :) basta rileggere piu' volte e lo schema vi sara' chiarissimo!

Allora, siamo arrivati alla fine.....i saluti e i ringraziamenti li ho riservati per il box "about" del programma, quindi direi che e' proprio tutto!
Aspettatevi, per le prossime "releases", qualche protezione piu' complessa, un metodo di generazione dei seriali piu' ingarbugliato, o magari un keyfile criptato, o forse un po' di sano Self Modifying Code per togliere di mezzo definitivamente i maniaci del W32Dasm, lasciando spazio ai virgulti del SoftICE :D...devo solo trovare il tempo di farlo, ma verra' il momento, niente paura!! :))

se trovate utile questo programma per capirci un po' di piu' riguardo all'assembly o al cracking, mi raccomando mandatemi un'email a NEURAL_NOISE@HOTMAIL.COM se avete commenti, aggiunte, denuncie, minaccie, rimpianti, critiche costruttive, polemiche gratuite e mortificanti, ecc. il mio indirizzo sta sempre li'...se utilizzate parti del codice per un vostro programma, non vi chiedo soldi, ma TANTI SOLDI!! no dai, scherzo :) basta che magari mi salutiate in un angolino dell'about :D


PER COMPILARE IL CODICE, USATE IL FILE COMPILA.BAT CHE TROVATE INCLUSO, FACENDO ATTENZIONE A CAMBIARE LE PATH PER MASM, LE LIBS ECC.!

ULTIMA NOTA: GUARDATE IL CODICE *SENZA* IL WORDWRAPPING, O NON CI CAPIRETE NIENTE!! :)


a presto,

-NeuRaL_NoiSE 1999

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT