home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Texty / crackme / id40kg.asm < prev    next >
Encoding:
Assembly Source File  |  1999-04-05  |  5.2 KB  |  156 lines

  1. ;Immortal Descendants CrackMe 4.0
  2. ;keygen for Lucifer48 *only*
  3. ;
  4. ;compiled with:
  5. ;tasm32 -ml -m5 -q file
  6. ;tlink32 -Tpe -aa -x -c file ,,, import32
  7. ;
  8. ;-----------------------------------------------------------------------------
  9. .386p                               ; 386 instruction set enable
  10. .model flat, stdCALL            
  11.  
  12. .data
  13.  
  14. extrn     ExitProcess      : PROC
  15. extrn     MessageBoxA      : PROC
  16. extrn     CreateFileA      : PROC
  17. extrn     GetLocalTime     : PROC
  18.  
  19. extrn     RegOpenKeyExA    : PROC
  20. extrn     RegQueryValueExA : PROC
  21. extrn     RegCloseKey      : PROC
  22.  
  23. horloge      dw 8 dup (0)            ;rΘsultat du GetLocalTime
  24. winowner     db "X",0                ;Trouve le propriΘtaire de Windows
  25. WinIce       db "\\.\SICE",0
  26. NTIce        db "\\.\NTICE",0
  27.  
  28. titre        db "Immortal Descendants CrackMe 4.0",0
  29. texte        db "Name: Lucifer48",10,13,"Group: None",10,13
  30.              db "Serial: IDC40-ETBL-605573733-6617393-",30h,30h,30h,30h,10,13,10,13
  31.              db "Your name is: "
  32.  
  33. buffer       db 255 dup(0h)          ;255 devrait suffire...
  34. bufftaille   dd 0h
  35.  
  36. clef         db "SOFTWARE\Microsoft\Windows\CurrentVersion",0
  37. clef2        db "RegisteredOwner",0
  38. handle       dd 0                   ;recevra l'handle de la clef
  39.  
  40. ;-----------------------------------------------------------------------------
  41.  
  42. .Code                                  
  43.  
  44. ;-----------------------------------------------------------------------------
  45. OwnerWIN      PROC                           ;Trouve le nom du propriΘtaire de Windows
  46.  
  47.          call RegOpenKeyExA, 080000002h, offset clef, 0, 0, offset handle
  48.  
  49.          ; 80000002h <=> HKEY_LOCAL_MACHINE
  50.          ; ouvre "Software\Microsoft\Windows\CurrentVersion"
  51.          ; KEY_ALL_ACCESS    
  52.          ; Si la clef n'existe pas: EAX=2         
  53.  
  54.          call RegQueryValueExA, handle, offset clef2, 0, 0, 0, offset bufftaille
  55.          test eax,eax
  56.          jnz   erreur
  57.          call RegQueryValueExA, handle, offset clef2, 0, 0, offset buffer, offset bufftaille
  58. erreur:   
  59.          call RegCloseKey, handle
  60.  
  61.          mov  al,byte ptr [buffer]
  62.          mov  [winowner],al                 ;on a besion de la 1Φre lettre
  63.  
  64.          ret
  65. OwnerWIN      ENDP
  66. ;-----------------------------------------------------------------------------
  67. Affiche       PROC                         ;argument eax (ax suffit)
  68.  
  69.          mov  ecx,0Ah
  70.          xor  edx,edx
  71.          div  ecx
  72.          or   [texte+70],dl
  73.          xor  edx,edx
  74.          div  ecx
  75.          or   [texte+69],dl
  76.          xor  edx,edx
  77.          div  ecx
  78.          or   [texte+68],dl
  79.          xor  edx,edx
  80.          div  ecx
  81.          or   [texte+67],dl
  82.  
  83.          push  0                          ;style de la boite
  84.          push  offset titre
  85.          push  offset texte
  86.          push  0                           
  87.          call  MessageBoxA                ;affiche la message box   
  88.  
  89.          ret
  90. Affiche       ENDP
  91. ;-----------------------------------------------------------------------------
  92. Si95&NT       PROC                     ;Procedure de dΘtection de Soft-Ice
  93.                                        ;adresse de la chaεne en EAX
  94.          push 0                        
  95.          push 80h                      ;attributs du fichier
  96.          push 3
  97.          push 0
  98.          push 3
  99.          push 0C0000000h
  100.          push eax                      ;eax = fichier α trouver
  101.          call CreateFileA
  102.          cmp  eax,0FFFFFFFFh           ;Fichier non trouvΘ <=> EAX=FFFFFFFF
  103.          jz   notfound
  104.          mov  eax,1
  105.          ret
  106. notfound:         
  107.          xor  eax,eax
  108.          ret
  109. Si95&NT       ENDP
  110. ;----------------------------------------------------------------------------
  111.  
  112. Main:                                  ;Le code commence ici!
  113.  
  114.         nop
  115.         call  OwnerWIN                 ;On a besoin de la 1er lettre du nom du "RegisteredOwner"
  116.         mov   eax,offset horloge
  117.         push  eax
  118.         call  GetLocalTime
  119.         xor   edx,edx
  120.         xor   eax,eax
  121.         xor   ecx,ecx
  122.         mov   dx,[horloge+2]           ;mois
  123.         mov   ax,[horloge+6]           ;jour du mois
  124.         imul  edx,eax
  125.         mov   cx,[horloge+10]          ;minute
  126.         mov   ax,[horloge+8]           ;heure
  127.         imul  eax,ecx
  128.         mov   cx,[horloge+16]          ;pointe vers "winowner"
  129.         add   edx,eax
  130.         mov   ax,[horloge]             ;annΘe
  131.         sub   edx,ecx
  132.         lea   esi,[eax+edx]            ;addition
  133.  
  134.         mov   eax,offset WinIce
  135.         call  Si95&NT                  ;soft-ice installΘ ?
  136.         test  eax,eax
  137.         jz    saut1
  138.         add   esi,0143h                ;soft-ice (win95/98) est installΘ
  139. saut1:
  140.         mov   eax,offset NTIce
  141.         call  Si95&NT                  ;soft-ice installΘ ?
  142.         test  eax,eax
  143.         jz    saut2
  144.         add   esi,0271h                ;soft-ice (winNT) est installΘ
  145. saut2:
  146.         mov   eax,esi
  147.  
  148.         call  Affiche                  ;convertion en dΘcimal du rΘsultat trouvΘ.
  149.  
  150.         push 0
  151.         call ExitProcess               ;Fin du programme
  152.  
  153. End Main                               ;Fin du code
  154.  
  155. ;----------------------------------------------------------------------------
  156.