home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Quantico / km / chkey.asm.txt < prev    next >
Encoding:
Text File  |  2000-05-25  |  5.7 KB  |  367 lines

  1. .386 ;v3.1
  2.  
  3. _STACK SEGMENT STACK
  4. dw 100h dup (?)
  5. _STACK ENDS
  6.  
  7. _DATA SEGMENT
  8. DATACOUNT dw 0
  9. DATA1 db 'HEXAMELIAN'
  10. DATA2 db 0,0,0,02Dh
  11. DATA3 db 0,0,0,0,02Dh
  12. DATA4 db 0,0,0,0
  13. ALSO_MSG db 'Cygnus Hex Edit is not Case Sensitive. UCF=ucf also',0
  14. ADDCOUNTER db 1
  15. LINE1 equ 0B878h
  16. REGMEMNAMECNTR dw 0
  17. ACTUAL_LETTERS dw 0
  18. RED db 0
  19. GREEN db 0
  20. BLUE db 0
  21. COLOR db 63
  22. ISTHEREANERROR db 0
  23. INIT equ 1Fh
  24. INIT_COLOR equ 01F7Eh
  25. NAME_COLOR equ 1Fh
  26. NUM_COLOR equ 1Fh
  27. PRINT_NUM_CNT dw 22 ;and video address
  28. ERROR_MSG_COLOR equ 0Ch
  29. ERROR db 'Sorry bud, please read the instructions',0
  30. LOGO db 9 dup (0dh,0ah)
  31.      db 'Type Name and Company, I.e. NAMECOMPANY-10 char min-',0dh,0ah
  32.      db 'Cygnus Hex Editor 1.5 Keygen/tIE - greetz to UCF',0dh,0ah,0dh,0ah
  33.      db 'Name+Compa:$'
  34. SERIAL db 0dh,0ah,'    Serial:$'
  35. NAMENOVMEM db 40 dup (0)
  36. _DATA ENDS
  37.  
  38. _TEXT SEGMENT use16
  39.   Assume CS:_TEXT, DS:_DATA, ES:_DATA, SS:_STACK
  40. INTRO:
  41.   mov ax,0003h
  42.   int 10h
  43.   mov ax,_DATA
  44.   mov ds,ax
  45.   mov ax,1015h
  46.   mov bx,0007h
  47.   int 10h
  48.   mov GREEN,ch
  49.   mov BLUE,cl
  50.   mov RED,dh
  51.   lea dx,LOGO
  52.   mov ah,9
  53.   int 21h
  54.   call CLASS
  55.   cld
  56.   sub di,58 ;numbe of char *2
  57.   jmp DISPLAY_TEXT
  58.  
  59. ERROR_1:
  60.   call ERROR_MSG
  61. DISPLAY_TEXT:
  62.   call ASK
  63.   cmp ISTHEREANERROR,1
  64.   jz ERROR_1
  65.   call ENKRYPT
  66. QUIT:
  67.   call WRI_HEX_DIG
  68.   call RESET_PAL
  69.   call ALSO
  70.   mov ax,4c00h
  71.   int 21h
  72.  
  73. WRI_HEX_DIG Proc
  74.   push di
  75.   push ax
  76.   push dx
  77.   cld
  78.   mov di,LINE1+10
  79.   mov es,di
  80.   mov di,PRINT_NUM_CNT
  81.   lea si,DATA2
  82. L00PWRITE:
  83.   lodsb
  84.   mov ah,NUM_COLOR
  85.   stosw
  86.   or al,al
  87.   jnz L00PWRITE
  88.   pop dx
  89.   pop ax
  90.   pop di
  91.   ret
  92. WRI_HEX_DIG EndP
  93. CLASS Proc
  94.   mov bx,LINE1
  95.   mov es,bx
  96.   mov di,22
  97.   mov ax,INIT_COLOR
  98.   mov cx,29
  99.   rep stosw
  100.   mov ax,1000h
  101.   xor bx,bx
  102.   mov dx,1000h
  103.   int 10h
  104.   ret
  105. CLASS EndP
  106. DEL_ERR_MSG Proc
  107.   push cx
  108.   push ax
  109.   push si
  110.   push di
  111.   push es
  112.   mov di,LINE1-10
  113.   mov es,di
  114.   mov di,0
  115.   xor ax,ax
  116.   mov cx,40
  117.   rep stosw
  118.   pop es
  119.   pop di
  120.   pop si
  121.   pop ax
  122.   pop cx
  123.   ret
  124. DEL_ERR_MSG EndP
  125. ERROR_MSG Proc
  126.   push ax
  127.   push esi
  128.   push es
  129.   push di
  130.   dec ISTHEREANERROR
  131.   mov di,LINE1-10
  132.   mov es,di
  133.   mov di,0
  134.   mov esi,offset ERROR
  135.   cld
  136. ERROR_1_1:
  137.   lodsb
  138.   mov ah,ERROR_MSG_COLOR
  139.   stosw
  140.   cmp al,0
  141.   jne ERROR_1_1
  142.   pop di
  143.   pop es
  144.   pop esi
  145.   pop ax
  146.   ret
  147. ERROR_MSG EndP
  148. ASK Proc
  149. STOP_1:
  150.   call FLASHNOW
  151.   xor ah,ah
  152.   int 16h
  153.   call DEL_ERR_MSG
  154.   cmp al,0dh
  155.   jz DONE
  156.   cmp al,08h
  157.   jz NO_SAVE
  158.   cmp ACTUAL_LETTERS,29
  159.   jz ERROR_DONE
  160. IS_IT_NUM:
  161.   cmp al,39h
  162.   jle SAVE
  163.   and al,05fh
  164.   jmp short SAVE
  165. NO_SAVE:
  166.   cmp ACTUAL_LETTERS,0
  167.   jz ERROR_DONE
  168.   std
  169.   push ax
  170.   dec di
  171.   dec di
  172.   mov ax,INIT_COLOR
  173.   stosw
  174.   inc di
  175.   inc di
  176.   pop ax
  177.   cld
  178.   dec ACTUAL_LETTERS
  179.   dec ACTUAL_LETTERS
  180.   dec REGMEMNAMECNTR
  181.   jmp short BLAH
  182. SAVE:
  183.   mov ah,NAME_COLOR
  184.   stosw
  185.   call SAVEINREGMEM
  186. BLAH:
  187.   inc ACTUAL_LETTERS
  188.   jmp STOP_1
  189. ERROR_DONE:
  190.   mov ISTHEREANERROR,1
  191.   ret
  192. DONE:
  193.   cmp ACTUAL_LETTERS,0
  194.   jz ERROR_DONE
  195.   cmp ACTUAL_LETTERS,10
  196.   jl ERROR_DONE
  197.   ret
  198. ASK EndP
  199. FLASHNOW Proc
  200.   push ax
  201.   push bx
  202.   push cx
  203.   push dx
  204.   mov ax,1010h
  205.   xor bh,bh
  206.   mov bl,7
  207.   mov cl,COLOR
  208.   mov dh,COLOR
  209.   mov ch,COLOR
  210.  REDO:
  211.   mov ax,1010h
  212.   mov cl,COLOR
  213.   mov ch,COLOR
  214.   mov dh,COLOR
  215.   int 10h
  216.   dec COLOR
  217.   or cl,cl
  218.   jnz QUIT_COLOR
  219.   mov COLOR,63
  220.  QUIT_COLOR:
  221.   pop dx
  222.   pop cx
  223.   pop bx
  224.   pop ax
  225.   ret
  226. FLASHNOW EndP
  227. RESET_PAL Proc
  228.   mov ax,1010h
  229.   xor bh,bh
  230.   mov bl,7
  231.   mov ch,GREEN
  232.   mov cl,BLUE
  233.   mov dh,RED
  234.   int 10h
  235.   ret
  236. RESET_PAL EndP
  237. SAVEINREGMEM Proc
  238.   push es
  239.   push ax
  240.   push di
  241.   push ds
  242.   pop es
  243.   mov edi,offset NAMENOVMEM
  244.   add di,REGMEMNAMECNTR
  245.   stosb
  246.   inc REGMEMNAMECNTR
  247.   pop di
  248.   pop ax
  249.   pop es
  250.   ret
  251. SAVEINREGMEM EndP
  252. ENKRYPT Proc
  253.   push ax
  254.   mov ah,09
  255.   push dx
  256.   lea dx,SERIAL
  257.   int 21h
  258.   pop dx
  259.   pop ax
  260.   xor eax,eax
  261.   cld
  262.   xor edx,edx
  263.   mov ecx,0ah
  264.   xor ebx,ebx
  265.   mov esi,offset NAMENOVMEM
  266. L00P:
  267.   lea ebx,DATA1
  268.   lodsb
  269.   cmp al,20h
  270.   jz L00P
  271.   add al,ADDCOUNTER
  272.   mov bp,ax
  273.   cdq
  274.   idiv ecx
  275.   movsx eax,[ebx+edx]
  276.   add ax,bp
  277.   xor edx,edx
  278.   cdq
  279.   idiv ecx
  280.   add dx,30h
  281.   push di
  282.   lea di,DATA4
  283.   add di,DATACOUNT
  284.   mov [di],dl
  285.   pop di
  286.   inc DATACOUNT
  287.   inc ADDCOUNTER
  288.   cmp ADDCOUNTER,4
  289.   jnz L00P
  290.   mov DATACOUNT,0
  291. L00P2:
  292.   lea ebx,DATA1
  293.   lodsb
  294.   cmp al,20h
  295.   jz L00P2
  296.   add al,ADDCOUNTER
  297.   mov bp,ax
  298.   cdq
  299.   idiv ecx
  300.   movsx eax,[ebx+edx]
  301.   add ax,bp
  302.   xor edx,edx
  303.   cdq
  304.   idiv ecx
  305.   add dx,30h
  306.   push di
  307.   lea di,DATA2
  308.   add di,DATACOUNT
  309.   mov [di],dl
  310.   pop di
  311.   inc DATACOUNT
  312.   inc ADDCOUNTER
  313.   cmp ADDCOUNTER,07
  314.   jnz L00P2
  315.   mov DATACOUNT,0
  316. L00P3:
  317.   lea ebx,DATA1
  318.   lodsb
  319.   cmp al,20h
  320.   jz L00P3
  321.   add al,ADDCOUNTER
  322.   mov bp,ax
  323.   cdq
  324.   idiv ecx
  325.   movsx eax,[ebx+edx]
  326.   add ax,bp
  327.   xor edx,edx
  328.   cdq
  329.   idiv ecx
  330.   add dx,30h
  331.   push di
  332.   lea di,DATA3
  333.   add di,DATACOUNT
  334.   mov [di],dl
  335.   pop di
  336.   inc DATACOUNT
  337.   inc ADDCOUNTER
  338.   cmp ADDCOUNTER,0Bh
  339.   jnz L00P3
  340. RETURN:
  341.   ret           ;value in ecx
  342. ENKRYPT EndP
  343. ALSO Proc
  344.   push ax
  345.   push esi
  346.   push es
  347.   push di
  348.   mov di,LINE1-10
  349.   mov es,di
  350.   mov di,0
  351.   mov esi,offset ALSO_MSG
  352.   cld
  353. ALSO_1_1:
  354.   lodsb
  355.   mov ah,ERROR_MSG_COLOR
  356.   stosw
  357.   cmp al,0
  358.   jne ALSO_1_1
  359.   pop di
  360.   pop es
  361.   pop esi
  362.   pop ax
  363.   ret
  364. ALSO EndP
  365. _TEXT ENDS
  366. END INTRO
  367.