⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hprsndx.asm

📁 破解很多程序的序列号算法程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:


.model small

.stack 100h

.data



;******************************************************************************

;   variables for code gen

;

;******************************************************************************







header          DB ' Hypersnap-DX 3.02 license generator by +SNiKkEL',0ah,0dh,0ah,0dh,'$'

info            DB 0ah,0dh,' for some reason they decided to insert a ',027h,'-',027h,' into the code',0ah,0dh

                DB ' invalid names are:',0ah,0dh

                DB ' xygorf, Saltine, super user, tHATDUDE, ED!SON and hacker... sigh',0ah,0dh

                db 0ah,0dh,'enter any name:',0ah,0dh,' $'

notright        db 0ah,0dh,' your name must contain at least one letter',0ah,0dh,'$'

should_be       DB 'WORDXCJOSEFMENGELEJOSE',0   ;this is the regcode before 'encryption'

                 ;WOR = world license (SIT = site license)  DXC = some check

                 ;the rest is the name; snikkel will be SNIKKELSNIKKELSN

                 ;the alphabet will be  A t/m F + L t/m o + U t/m Z  (over 16 chars)

                 ;according to this principle: divide total letters in name by 2

                 ;sub 2 from answer and get 4 chars from beginning of name+answer

                 ;put those 4 after first 6 chars, then put the last 6 letters in the

                 ;name at the end  (spaces, numbers etc are ignored, all letters must be capitalized)

fifthchar       db 0ah,0dh,0ah,0dh,'what would you like to be the 5th letter in your code?',0ah,0dh

                db ' enter anything from a to z',0ah,0dh,' $'

wrong           db 'anything from a to z, isn',027h,'t that enuff?',0ah,0dh,' $'

wagain          db 'why don',027h,'t you just fuck off',0ah,0dh,'$'

whatkind        db 0ah,0dh,'would you like a site or a worldwide license? (s or w)',0ah,0dh,' $'

personals       db 0ah,0dh,0ah,0dh,' your personal unlimited site license code is:',0ah,0dh,0ah,0dh,' $'

personalw       db 0ah,0dh,0ah,0dh,' your personal unlimited world-wide license code is:',0ah,0dh,0ah,0dh,' $'

to_enter        DB 'S2345678901234-6789012345',0ah,0dh,0ah,0dh,'$'   ;the code will be put here

                                                           ;the S is the fifth char on which the 1st letter depends

encodestr       DB 'XCFNAKSHIPZUJLDORGVQTEWYBM',0         ;according to this the letters will be 'encoded'

checks          Dw 0                                      ;checksum (last char) will be put here

keyb            db  033h,033h,034h  dup (0)               ;keyboard buffer, place for input



;******************************************************************************

;       end of data, begin of code

;******************************************************************************



.code

start:          JMP     begin



;******************************************************************************

;       calculate code proc

;******************************************************************************



calculate       PROC    near

                mov     ax,@data

                mov     ds,ax

                mov     es,ax

                xor     bx,bx

                mov     cx,00001h

                xor     dx,dx



go:             mov     si,offset should_be

                add     si,bx

                MOV     al,byte ptr [si]              ;put byte of name you want in al

                cmp     al,000h

                jz      done

                mov     si,offset to_enter

                cmp     cx,00010h

                jnz     dont_use_the_2D_for_calculating

                inc     dx      ;make it skip the '-' for calculating next

                inc     dx

dont_use_the_2D_for_calculating:

                add     si,bx

                add     si,dx

                mov     ah,byte ptr [si]    ;put byte in ah for substracting (adding)



                inc     al

                cmp     bx,00000h

                jz      fifth

                jmp     continue



fifth:          mov     si,offset to_enter

                add     si,00004h              ;put the 1st char in should_be

                MOV     [si],ah                ;in the right place fer output

                sub     dx,001h



continue:       sub     ah,041h

                sub     al,041h

                add     al,ah

                cmp     al,01ah

                jge     rotate

                jmp     continue2



rotate:         sub     al,01ah



continue2:      mov     si,offset encodestr

                mov     ah,000h

                add     si,ax

                MOV     al,byte ptr [si]

                cmp     cx,0000eh

                jnz     dont_overwrite_the_2D_check

                inc     cx

                dec     dx       ; make it read the char before the '-' for calculating

dont_overwrite_the_2D_check:

                cmp     cx,00005h

                jg      fifth2

                jz      incdx

                jmp     continue3



incdx:          inc     dx



fifth2:         mov     si,offset to_enter

                add     si,cx

                MOV     byte ptr [si],al

                inc     bx

                inc     cx

                jmp     go



continue3:      mov     si,offset to_enter

                add     si,bx

                MOV     byte ptr [si],al

                inc     bx

                inc     cx

                jmp     go



done:           RET                             ;return



calculate       ENDP



;******************************************************************************

;       this part asks for name

;******************************************************************************



input           PROC    near

                mov     ax,@data

				mov     ds,ax

                mov     es,ax



                MOV     ah,09h

                mov     dx,offset info             ;spam info

                int     21h

                mov     dx,offset keyb

                mov     ah,0ah

                int     21h                        ;and get user name



                MOV     AH,09H

                MOV     DX,offset fifthchar        ;display fifth char message

                INT     21H

                xor     cx,cx



get5char:       mov     ax,0c07h        ;clear keyb buffer & wait for input

				int		21h

                cmp     al,061h         ; 'a'

                jge     letsee

                cmp     al,041h         ; 'A'

                jge     letsee2

                jmp     wrongg



letsee:         cmp     al,07bh         ;'z'

                jge     wrongg

                sub     al,020h

                jmp     putitin



letsee2:        cmp     al,05bh         ;'Z'

                jge     wrongg



putitin:        mov     si,offset to_enter

                MOV     byte ptr [si],al



                MOV     AH,09H

                MOV     DX,offset whatkind        ;display question

                INT     21H



getregmode:     mov     ax,0c07h        ;clear keyb buffer & wait for input

				int		21h

                cmp     al,073h         ; 's'

                jz      sitelic

                cmp     al,041h         ; 'S'

                jz      sitelic

                cmp     al,077h         ;'w'

                jz      worldlic

                cmp     al,057h         ;'W'

                jz      worldlic

                jmp     getregmode



sitelic:        mov     si,offset should_be

                MOV     byte ptr [si],'S'

                MOV     byte ptr [si+1],'I'

                MOV     byte ptr [si+2],'T'

                ret



worldlic:       mov     si,offset should_be

                MOV     byte ptr [si],'W'

                MOV     byte ptr [si+1],'O'

                MOV     byte ptr [si+2],'R'

                ret



wrongg:         cmp     cx,001h

                jz      wrongagain

                mov     ah,09h

                mov     dx,offset wrong

				int		21h

                inc     cx

                jmp     get5char



wrongagain:     mov     ah,09h

                mov     dx,offset wagain

				int		21h

                jmp     exit





ret



input           endp



;******************************************************************************

;       calculate checksum

;******************************************************************************



checksum        PROC    near

                mov     ax,@data

				mov     ds,ax

                mov     es,ax

                xor     cx,cx

                mov     di,offset checks

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -