Creare Keygen Originali
From UIC
Creare Keygen originali
Contents |
| Infos | |
|---|---|
| Author: | §-Death_Reaver-§ |
| Email: | death.reaver@leonardo.it |
| Website: | deathreaver.altervista.org |
| Date: | 28/06/2005 (dd/mm/yyyy) |
| Level: |
|
| Language: | Italian |
| Comments: | |
Introduction
Ristrutturato il 2/01/2007
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!!
Tools
Un buon IDE
Un programma per la grafica, basta che salvi in bitmap (e chi non lo fa?)
Link e Riferimenti
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.
;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 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:
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
Note Finali
Ringrazio e saluto tutti e ricordate……… MAI PIU' KEYGEN NORMALI (sembra una pubblicità)
Disclaimer
I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.
Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevoli e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.
