Creare Keygen Originali |
||
Data |
by "Death_Reaver" |
|
28/06/2005 |
Published by Quequero |
|
Ma qua sotto che ci va? |
Mitico! :) |
Ci stanno sempre i soliti 4 puntini…. |
.... |
Home page (se presente):NADA E-mail: [email protected] Nick, UIN, canale IRC/EFnet frequentato |
.... |
Difficoltà |
( )NewBies (*)Intermedio (*)Avanzato ( )Master |
Introduzione |
Mentre guardavo alcuni esempi di programmazione in asm esempi ho visto qualcosa di interessante: c’era un programma in cui la finestra non era la solita scatola rettangolare ma era a forma di faccia con tanto di orecchie e capelli. Dopo aver esaminato il codice ho capito che quella tecnica doveva essere usata per qualcosa di più… un keygen!!
(per 0x87k: spero che questo tutorial ti possa aiutare J)
Tools usati |
MASM32 v.8 sp1 (nella sezione tools)
Un buon IDE
Un programma per la grafica, basta che salvi in bitmap (e chi non lo fa?)
Notizie sul programma |
Creeremo la base di un Keygen che però non sarà racchiuso da una semplice finestra, ma da una macchia da acido!
Essay |
Bene Iniziamo:
Per prima cosa dobbiamo creare un’immagine (in questo caso una macchia da acido) e salvarla in bitmap. Però bisogna stare attenti a crearla, infatti una volta finita, bisogna colorare la sfondo con un colore uniforme MOLTO DIVERSO da i colori usati nel disegno.
Per esempio io ho creato un’ immagine 250x250 senza sfondo, ho disegnato e successivamente cambiato lo sfondo: (Ho messo anche dei segnaposto per le edit e per il pulsante)
Questo è il mio risultato. Come vedete ho usato il rosso come sfondo poiché non compariva minimamente nel disegno. Ora salviamo in bitmap e prepariamoci al prossimo passo. Il nostro obiettivo è di avere una finestra di quella forma: ma come si fa? Il segreto è nelle cosiddette “region” che sono tipi di risorse che ci fanno sapere da un’immagine quale “parte” prendere.
Per creare una region ci viene in aiuto un piccolo tool (trovato insieme all’emulatore del GBA): RegionCreator. Questo a partire da un’immagine e da un colore da escludere crea il file .rgn relativo all’immagine scelta. Quindi avviamo il RegionCreator, carichiamo l’immagine, scegliamo il colore mettendo i valori in decimale nei box RGB (nel mio caso metto il valore 255 a red) e diamo l’ok. (ATTENZIONE: non cancellate l’immagine! Ci serve ancora)
Ora viene la parte più lunga: il codice.
include Death_Reaver.inc ;il mio include file,contiene le direttive (.486, model etc.), gli ;include e le librerie .data ClassName db "MainWinClass",0 AppName db "UIC",0 tipo db "RGN",0 ;nome classe region nomeres db "regione",0 ;nome associato alla region btnclass db "BUTTON",0 ics db "X",0 ;testo per il pulsante di chiusura .const sfondo equ 401 ;ID della bitmap .data? hInstance dd ? CommandLine dd ? hbmp dd ? ;handle della bitmap hrgn dd ? ;handle della region hrr dd ? ;ID della region siz dd ? ;variabile per conservare la grandezza dell’immagine hbutton dd ? ;handle del pulsante .code start: invoke GetModuleHandle, NULL mov hInstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT invoke ExitProcess,eax WinMain proc hInst:DWORD,hPrevInst:DWORD,CmdLine:DWORD,CmdShow:DWORD LOCAL wc:WNDCLASSEX LOCAL msg:MSG LOCAL hwnd:HWND mov wc.cbSize,SIZEOF WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW or CS_BYTEALIGNWINDOW mov wc.lpfnWndProc, OFFSET WndProc mov wc.cbClsExtra,NULL mov wc.cbWndExtra,NULL push hInstance pop wc.hInstance invoke LoadBitmap,hInst,401 ;Carichiamo la bitmap invoke CreatePatternBrush,eax mov wc.hbrBackground,eax ;e mettiamo come sfondo mov wc.lpszMenuName,NULL mov wc.lpszClassName,OFFSET ClassName invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax invoke RegisterClassEx, addr wc INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\ ;creiamo una finestra col solo stile WS_POPUP WS_POPUP,CW_USEDEFAULT,\ CW_USEDEFAULT,250,250,NULL,NULL,\ hInst,NULL mov hwnd,eax INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR ics,\ ;creiamo una il pulsante di chiusura WS_CHILD or WS_VISIBLE or BS_FLAT,197,\ 45,18,18,hwnd,NULL,\ hInst,NULL mov hbutton,eax invoke ShowWindow, hwnd,SW_SHOWNORMAL invoke UpdateWindow, hwnd .WHILE TRUE invoke GetMessage, ADDR msg,NULL,0,0 .BREAK .IF (!eax) invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg .ENDW mov eax,msg.wParam ret WinMain endp WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .if uMsg==WM_DESTROY invoke PostQuitMessage,NULL .elseif uMsg==WM_CREATE invoke FindResource,hInstance,ADDR nomeres,ADDR tipo ;Cerchiamo la region mov hrr,eax ;ne depositiamo la posizione per uso futuro invoke LoadResource,hInstance,eax ;la carichiamo nel programma mov hrgn,eax ;salviamo l’handle invoke SizeofResource,hInstance,hrr ;prendiamo la grandezza della region mov siz,eax ;e la salviamo invoke LockResource,hrgn ;blocchiamo la region in memoria invoke ExtCreateRegion,NULL,siz,eax ;creiamo la regione da quella salvata in memoria invoke SetWindowRgn,hWnd,eax,TRUE ;la applichiamo alla finestra INVOKE CreateWindowEx,NULL,ADDR btnclass,ADDR ics,\ WS_VISIBLE or WS_PUSHBUTTON or WS_CHILD,125,\ 125,18,18,hwnd,NULL,hInst,NULL mov hbutton,eax ;######################################################## ;qui inserite il codice per creare le varie edit e button ;######################################################## .elseif uMsg==WM_COMMAND Mov eax,wParam Mov edx,lParam Cmp edx,hbutton Jnz Fine Shr eax,10h Cmp ax,BN_CLICKED Jnz Fine Invoke SendMessage,hwnd,WM_DESTROY,0,0 Fine: .elseif uMsg==WM_LBUTTONDOWN invoke SendMessage,hWnd,WM_NCLBUTTONDOWN,HTCAPTION,lParam ;IMPORTANTE: facciamo si che quando si .else ;trascina, la finestra pensi che il ;puntatore invoke DefWindowProc,hWnd,uMsg,wParam,lParam ;del mouse sia sulla caption, in modo da ret ;muovere la finestra .endif xor eax,eax ret WndProc endp end start |
E dopo il codice ecco il file di risorse:
regione RGN "sfondo.rgn" 401 BITMAP "sfondo.bmp" |
Ora assemblate ed eseguite: belloooooo!
Se volete a questo punto potete inserire i vari controlli che vi servono e il codice del keygen
DEATH_REAVER
Note finali |
Ringrazio e saluto tutti e ricordate……… MAI PIU’ KEYGEN NORMALI (sembra una pubblicità)
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.
Se usate il mio suorce, mi dovete mandare € 512 per utilizzo J