📄 pims12.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 + -