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

📄 pims12.asm

📁 破解很多程序的序列号算法程序
💻 ASM
字号:
; AspenTech PIMS v12.0 Keyfile Generator.
;@Author: CrackZ.
;@Date: 28/03/2000.

codesg segment
  assume cs:codesg
  assume ds:codesg
  org 100h

.386

start:	jmp begin

CkOutBuffer	db	12 dup('$')
FileHandle	dw	0h
FileName	db	'Pims.ctl',0
LoopCounter	dd	1h
NameBuffer	db	42 dup('$')
NameSuccess	db	0dh,0ah, '[i] Name successfully encrypted.','$'
OpeningLogo	db	0dh,0ah, '---------------------------------'
		db	0dh,0ah, '*     AspenTech PIMS v12.0      *'
		db	0dh,0ah, '*  License Generator by CrackZ  *'
		db	0dh,0ah, '---------------------------------'
		db	0dh,0ah,'$'
Pimsctl		db	144 dup(0)
PimSuccess	db	0dh,0ah, '[i] Pims.ctl successfully created.','$'
PromptName	db	0dh,0ah, '[?] Please insert your *real* name : ','$'
PromptSerial	db	0dh,0ah, '[?] Please insert a desired Serial # (any 8 numbers) : ','$'
SavedBuffer	db	40 dup('$')
SavedLength	dd	0h
SaveCheckSum	dd	0h
SerialBuffer	db	12 dup('$')
SerialCksum	db	0dh,0ah, '[i] Serial # checksum is : ','$'
TestByte	db	0h

begin:	mov edx, offset OpeningLogo
	mov ah, 9
	int 21h
	mov edx, offset PromptName
	mov ah, 9
	int 21h
	mov edx, offset NameBuffer
	mov ah, 0ah
	int 21h
	movzx ebx, byte ptr [NameBuffer+1h]
	call ExtendNameSpaces
	xor ebx, ebx
	mov ecx, offset SavedBuffer
	mov edi, offset [NameBuffer+2h]

_6BCB48:
	mov bl, [TestByte]
	mov esi, 1h

_6BCB57:
	mov edx, dword ptr [LoopCounter]
	mov ebp, 25h
	lea eax, [edx+3h]
	imul eax, edx
	cdq
	idiv ebp
	test edx, edx
	jnz _6BCB6E
	mov edx, ebp

_6BCB6E:
	mov eax, ebx
	mov ebx, 0E0h
	and eax, 0FFh
	sub eax, edx
	add eax, 0C0h
	cdq
	idiv ebx
	or al, 0FFh
	sub al, dl
	cmp byte ptr [edi], al
	jz GoodByte	
	xor ebx, ebx
	inc byte ptr [TestByte]
	cmp byte ptr [TestByte], 0FFh
	jz endprg
	jmp _6BCB48

GoodByte:
	mov al, byte ptr [TestByte]
	mov byte ptr [ecx], al ; Store good byte.
	mov byte ptr [TestByte], 0h ; Reset test value.
	xor ebx, ebx ; Clear EBX.
	inc ecx ; Increment store location.
	inc edi ; Increment name store.
	inc dword ptr [LoopCounter]
	cmp dword ptr [LoopCounter], 29h
	jz NameComplete
	jmp _6BCB48

NameComplete:
	mov edx, offset NameSuccess
	mov ah, 9
	int 21h
	mov edx, offset PromptSerial
	mov ah, 9
	int 21h
	mov edx, offset SerialBuffer
	mov ah, 0ah
	int 21h
	mov byte ptr [SerialBuffer.10d], 0h
	xor eax, eax
	mov ebx, offset [SerialBuffer+2]
	mov ecx, 8h
	xor edx, edx
	mov esi, 4571h

_6B6370:
	movsx eax, byte ptr [ebx+edx]
	lea ecx, [edx+1h]
	mov edi, ebx
	imul eax, ecx
	lea edx, [eax+esi]
	lea esi, [edx+eax*2h]
	mov edx, ecx
	or ecx, 0FFFFFFFFh
	xor eax, eax
	repnz
	scasb
	not ecx
	dec ecx
	cmp edx, ecx
	jl _6B6370
	mov ecx, 7D0h
	lea eax, [ecx-7C1h]
	cdq
	mov ecx, eax
	mov eax, 92492493h
	xor ecx, edx
	sub ecx, edx
	imul ecx, esi
	imul ecx
	add edx, ecx
	sar edx, 2h
	mov eax, edx
	shr eax, 1Fh
	add edx, eax
	add edx, esi
	mov [SaveCheckSum], edx
	xchg eax, edx
	xor ebx, ebx
	mov ecx, 0ah
	mov edi, offset CkOutBuffer
	call HexToDec
	mov edx, offset SerialCksum
	mov ah, 9
	int 21h
	mov edx, offset CkOutBuffer
	mov ah, 9
	int 21h
	mov edi, offset Pimsctl.50h
	mov esi, offset SerialBuffer+2
	mov ecx, 8h
	repz movsb ; Store serial number.
	mov ecx, [SavedLength] ; Restore checksum length.
	mov esi, offset CkOutBuffer
	repz movsb ; Store checksum.
	mov ecx, 28h
	mov edi, offset Pimsctl.60h
	mov esi, offset SavedBuffer
	repz movsb ; Store encrypted name.
	mov byte ptr [edi], 20h
	mov eax, 3c00h
	xor ecx, ecx
	mov edx, offset FileName
	int 21h
	jnc PimsFileCreated
	jmp endprg

PimsFileCreated:
	mov [FileHandle], ax
	movzx eax, ax
	xchg eax, ebx
	mov eax, 4200h
	xor ecx, ecx
	xor edx, edx
	int 21h
	mov eax, 4000h
	mov ecx, 90h
	mov edx, offset Pimsctl
	int 21h
	mov eax, 3E00h
	int 21h
	mov edx, offset PimSuccess	
	mov ah, 9
	int 21h
	jmp endprg

; ------ Functions Section ------

ExtendNameSpaces:
	mov al, 20h
	mov edi, offset [NameBuffer+2]
	add edi, ebx
	xchg ebx, ecx
	sub ecx, 28h
	neg ecx
	repz
	stosb
	ret

HexToDec:
	xor edx, edx
	div ecx
	add edx, 30h
	push edx
	inc ebx
	test eax, eax
	jnz HexToDec
	mov [SavedLength], ebx ; Save serial length.

HexToDec2:
	pop edx
	mov byte ptr [edi.eax],dl
	inc eax
	dec ebx
	jnz HexToDec2
	ret

endprg:	mov ax,4C00h
	int 21h

codesg ends
end start

⌨️ 快捷键说明

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