home *** CD-ROM | disk | FTP | other *** search
- ;Immortal Descendants CrackMe 4.0
- ;keygen for Lucifer48 *only*
- ;
- ;compiled with:
- ;tasm32 -ml -m5 -q file
- ;tlink32 -Tpe -aa -x -c file ,,, import32
- ;
- ;-----------------------------------------------------------------------------
- .386p ; 386 instruction set enable
- .model flat, stdCALL
-
- .data
-
- extrn ExitProcess : PROC
- extrn MessageBoxA : PROC
- extrn CreateFileA : PROC
- extrn GetLocalTime : PROC
-
- extrn RegOpenKeyExA : PROC
- extrn RegQueryValueExA : PROC
- extrn RegCloseKey : PROC
-
- horloge dw 8 dup (0) ;rΘsultat du GetLocalTime
- winowner db "X",0 ;Trouve le propriΘtaire de Windows
- WinIce db "\\.\SICE",0
- NTIce db "\\.\NTICE",0
-
- titre db "Immortal Descendants CrackMe 4.0",0
- texte db "Name: Lucifer48",10,13,"Group: None",10,13
- db "Serial: IDC40-ETBL-605573733-6617393-",30h,30h,30h,30h,10,13,10,13
- db "Your name is: "
-
- buffer db 255 dup(0h) ;255 devrait suffire...
- bufftaille dd 0h
-
- clef db "SOFTWARE\Microsoft\Windows\CurrentVersion",0
- clef2 db "RegisteredOwner",0
- handle dd 0 ;recevra l'handle de la clef
-
- ;-----------------------------------------------------------------------------
-
- .Code
-
- ;-----------------------------------------------------------------------------
- OwnerWIN PROC ;Trouve le nom du propriΘtaire de Windows
-
- call RegOpenKeyExA, 080000002h, offset clef, 0, 0, offset handle
-
- ; 80000002h <=> HKEY_LOCAL_MACHINE
- ; ouvre "Software\Microsoft\Windows\CurrentVersion"
- ; KEY_ALL_ACCESS
- ; Si la clef n'existe pas: EAX=2
-
- call RegQueryValueExA, handle, offset clef2, 0, 0, 0, offset bufftaille
- test eax,eax
- jnz erreur
- call RegQueryValueExA, handle, offset clef2, 0, 0, offset buffer, offset bufftaille
- erreur:
- call RegCloseKey, handle
-
- mov al,byte ptr [buffer]
- mov [winowner],al ;on a besion de la 1Φre lettre
-
- ret
- OwnerWIN ENDP
- ;-----------------------------------------------------------------------------
- Affiche PROC ;argument eax (ax suffit)
-
- mov ecx,0Ah
- xor edx,edx
- div ecx
- or [texte+70],dl
- xor edx,edx
- div ecx
- or [texte+69],dl
- xor edx,edx
- div ecx
- or [texte+68],dl
- xor edx,edx
- div ecx
- or [texte+67],dl
-
- push 0 ;style de la boite
- push offset titre
- push offset texte
- push 0
- call MessageBoxA ;affiche la message box
-
- ret
- Affiche ENDP
- ;-----------------------------------------------------------------------------
- Si95&NT PROC ;Procedure de dΘtection de Soft-Ice
- ;adresse de la chaεne en EAX
- push 0
- push 80h ;attributs du fichier
- push 3
- push 0
- push 3
- push 0C0000000h
- push eax ;eax = fichier α trouver
- call CreateFileA
- cmp eax,0FFFFFFFFh ;Fichier non trouvΘ <=> EAX=FFFFFFFF
- jz notfound
- mov eax,1
- ret
- notfound:
- xor eax,eax
- ret
- Si95&NT ENDP
- ;----------------------------------------------------------------------------
-
- Main: ;Le code commence ici!
-
- nop
- call OwnerWIN ;On a besoin de la 1er lettre du nom du "RegisteredOwner"
- mov eax,offset horloge
- push eax
- call GetLocalTime
- xor edx,edx
- xor eax,eax
- xor ecx,ecx
- mov dx,[horloge+2] ;mois
- mov ax,[horloge+6] ;jour du mois
- imul edx,eax
- mov cx,[horloge+10] ;minute
- mov ax,[horloge+8] ;heure
- imul eax,ecx
- mov cx,[horloge+16] ;pointe vers "winowner"
- add edx,eax
- mov ax,[horloge] ;annΘe
- sub edx,ecx
- lea esi,[eax+edx] ;addition
-
- mov eax,offset WinIce
- call Si95&NT ;soft-ice installΘ ?
- test eax,eax
- jz saut1
- add esi,0143h ;soft-ice (win95/98) est installΘ
- saut1:
- mov eax,offset NTIce
- call Si95&NT ;soft-ice installΘ ?
- test eax,eax
- jz saut2
- add esi,0271h ;soft-ice (winNT) est installΘ
- saut2:
- mov eax,esi
-
- call Affiche ;convertion en dΘcimal du rΘsultat trouvΘ.
-
- push 0
- call ExitProcess ;Fin du programme
-
- End Main ;Fin du code
-
- ;----------------------------------------------------------------------------
-