吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 439|回复: 7
上一主题 下一主题
收起左侧

[原创] editplus v5 v6 keygen 汇编原代码

  [复制链接]
跳转到指定楼层
楼主
shieep 发表于 2026-6-29 19:06 回帖奖励
最早当时V5出来后,V4的注册机不能用了,网上也没有现成的注册码和注册机,自己跟了下,写了个keygen,现在翻出来了,仅供参考。
[Asm] 纯文本查看 复制代码
include		windows.inc
include		kernel32.inc
include		user32.inc
include		Comctl32.inc
include		shell32.inc
include rsrc.inc
includelib	kernel32.lib
includelib	user32.lib
includelib	Comctl32.lib
includelib	shell32.lib

include msvcrt.inc
includelib msvcrt.lib
DlgProc			PROTO	:HWND,:UINT,:WPARAM,:LPARAM

.const

IDD_MAIN		equ 101

;#########################################################################

.data?

hInstance		dd		?
dbName dw 100 dup (?) ;500个长
dbNameHex dw 200 dup (?)
dbKey  dw 100 dup (?)
;#########################################################################
.data
dbKey2 	dw 00030h, 00034h, 00037h, 00031h, 00032h, 0002dh, 00038h, 00038h, 00031h, 00033h, 00036h, 0002dh, 00035h, 00036h, 00034h, 00035h
		dw 00035h, 0002dh, 00033h, 00036h, 00032h, 00036h, 00045h, 0002dh, 00036h, 00035h, 00044h, 00034h, 00045h
		dw 0000h
dwKeyTable 	dw 00032h, 00033h, 00034h, 00035h, 00036h, 00037h, 00038h, 00039h, 00041h, 00042h, 00043h, 00044h, 00045h, 00046h, 00047h, 00048h
	 			dw 0004ah, 0004bh, 0004ch, 0004dh, 0004eh, 00050h, 00051h, 00052h, 00053h, 00054h, 00055h, 00056h, 00057h, 00058h, 00059h, 0005ah
dwCheckSumTable	dw 00000h, 0c0c1h, 0c181h, 00140h, 0c301h, 003c0h, 00280h, 0c241h, 0c601h, 006c0h, 00780h, 0c741h, 00500h, 0c5c1h, 0c481h, 00440h
		dw 0cc01h, 00cc0h, 00d80h, 0cd41h, 00f00h, 0cfc1h, 0ce81h, 00e40h, 00a00h, 0cac1h, 0cb81h, 00b40h, 0c901h, 009c0h, 00880h, 0c841h
		dw 0d801h, 018c0h, 01980h, 0d941h, 01b00h, 0dbc1h, 0da81h, 01a40h, 01e00h, 0dec1h, 0df81h, 01f40h, 0dd01h, 01dc0h, 01c80h, 0dc41h
		dw 01400h, 0d4c1h, 0d581h, 01540h, 0d701h, 017c0h, 01680h, 0d641h, 0d201h, 012c0h, 01380h, 0d341h, 01100h, 0d1c1h, 0d081h, 01040h
		dw 0f001h, 030c0h, 03180h, 0f141h, 03300h, 0f3c1h, 0f281h, 03240h, 03600h, 0f6c1h, 0f781h, 03740h, 0f501h, 035c0h, 03480h, 0f441h
		dw 03c00h, 0fcc1h, 0fd81h, 03d40h, 0ff01h, 03fc0h, 03e80h, 0fe41h, 0fa01h, 03ac0h, 03b80h, 0fb41h, 03900h, 0f9c1h, 0f881h, 03840h
		dw 02800h, 0e8c1h, 0e981h, 02940h, 0eb01h, 02bc0h, 02a80h, 0ea41h, 0ee01h, 02ec0h, 02f80h, 0ef41h, 02d00h, 0edc1h, 0ec81h, 02c40h
		dw 0e401h, 024c0h, 02580h, 0e541h, 02700h, 0e7c1h, 0e681h, 02640h, 02200h, 0e2c1h, 0e381h, 02340h, 0e101h, 021c0h, 02080h, 0e041h
		dw 0a001h, 060c0h, 06180h, 0a141h, 06300h, 0a3c1h, 0a281h, 06240h, 06600h, 0a6c1h, 0a781h, 06740h, 0a501h, 065c0h, 06480h, 0a441h
		dw 06c00h, 0acc1h, 0ad81h, 06d40h, 0af01h, 06fc0h, 06e80h, 0ae41h, 0aa01h, 06ac0h, 06b80h, 0ab41h, 06900h, 0a9c1h, 0a881h, 06840h
		dw 07800h, 0b8c1h, 0b981h, 07940h, 0bb01h, 07bc0h, 07a80h, 0ba41h, 0be01h, 07ec0h, 07f80h, 0bf41h, 07d00h, 0bdc1h, 0bc81h, 07c40h
		dw 0b401h, 074c0h, 07580h, 0b541h, 07700h, 0b7c1h, 0b681h, 07640h, 07200h, 0b2c1h, 0b381h, 07340h, 0b101h, 071c0h, 07080h, 0b041h
		dw 05000h, 090c1h, 09181h, 05140h, 09301h, 053c0h, 05280h, 09241h, 09601h, 056c0h, 05780h, 09741h, 05500h, 095c1h, 09481h, 05440h
		dw 09c01h, 05cc0h, 05d80h, 09d41h, 05f00h, 09fc1h, 09e81h, 05e40h, 05a00h, 09ac1h, 09b81h, 05b40h, 09901h, 059c0h, 05880h, 09841h
		dw 08801h, 048c0h, 04980h, 08941h, 04b00h, 08bc1h, 08a81h, 04a40h, 04e00h, 08ec1h, 08f81h, 04f40h, 08d01h, 04dc0h, 04c80h, 08c41h
		dw 04400h, 084c1h, 08581h, 04540h, 08701h, 047c0h, 04680h, 08641h, 08201h, 042c0h, 04380h, 08341h, 04100h, 081c1h, 08081h, 04040h
.386
.model flat, stdcall  ;32 bit memory model
option casemap :none  ;case sensitive

include Keygen For Editplus V5.inc

.code

start:
	invoke	GetModuleHandle,NULL
	mov	hInstance,eax
	invoke	InitCommonControls
	invoke	DialogBoxParam,hInstance,IDD_MAIN,NULL,addr DlgProc,NULL
	invoke	ExitProcess,0

;########################################################################

FindCharPos proc pChar:dword
	mov ecx,pChar
	xor eax,eax
	.while eax<= sizeof dwKeyTable
		.if cx == word ptr [eax*2+offset dwKeyTable]
			.break
		.endif
		inc eax
	.endw
	.if ax==21h
		xor ax,ax
	.endif
	ret
FindCharPos endp

TransFormKey proc uses esi ebx pKey:dword
	mov esi,pKey
	mov edx,esi
	add edx,1dh*2
	xor ebx,ebx
	.while esi<= edx
		mov ax,[esi]
		.if ebx==5
			xor ebx,ebx
		.else
			invoke FindCharPos,eax
			sar eax,1
			.if eax<0ah
				add eax,30h
			.else
			  add eax,37h
			.endif
			mov [esi],ax
			inc ebx
		.endif
		add esi,2
	.endw
	ret
TransFormKey endp
TransFormKeyB proc uses esi ebx pKey:dword
	mov esi,pKey
	mov edx,esi
	add edx,1dh*2
	xor ebx,ebx
	xor eax,eax
	.while esi<= edx
		mov ax,[esi]
		.if ebx==5
			xor ebx,ebx
		.else
			.if eax<3Ah
				sub eax,30h
			.else
			  sub eax,37h
			.endif
			sal eax,1
			mov ax,word ptr [eax*2+offset dwKeyTable]
			mov [esi],ax
			inc ebx
		.endif
		add esi,2
	.endw
	ret
TransFormKeyB endp

UStr2HexStr proc dbUstr:DWORD,dbHexstr:DWORD, ddSize:DWORD
	pushad
	mov esi,dbUstr
	mov edi,dbHexstr
	xor ecx,ecx
	.repeat 
		lodsw
		mov bx,ax
		rol bx,4
		mov ax,bx
		and eax,0fh
			.if eax<0ah
				add eax,30h
			.else
			  add eax,37h
			.endif
		stosb
		rol bx,4
		mov ax,bx
		and eax,0fh
			.if al<0ah
				add eax,30h
			.else
			  add eax,37h
			.endif
		stosb
		rol bx,4
		mov ax,bx
		and eax,0fh
			.if eax<0ah
				add eax,30h
			.else
			  add eax,37h
			.endif
		stosb
		rol bx,4
		mov ax,bx
		and eax,0fh
			.if eax<0ah
				add eax,30h
			.else
			  add eax,37h
			.endif
		stosb
		inc ecx
	.until ecx==ddSize
	xor al,al
	stosb
	popad 
	ret
UStr2HexStr endp

CheckSum:

		MOV ECX,[ESP+8h]
		MOV EAX,DWORD PTR [ESP+0Ch]
		LEA EDX,DWORD PTR [ECX+EAX]
		CMP ECX,EDX
		JNB SHORT L004DEC04
		MOV EAX,DWORD PTR [ESP+4h]
		PUSH ESI
		PUSH EDI
L004DEBE5:
		MOVZX EDI,BYTE PTR [ECX]
		MOVZX ESI,AL
		SHR AX,8h
		XOR ESI,EDI
		XOR AX,WORD PTR [ESI*02h+offset dwCheckSumTable]
		INC ECX
		MOVZX EAX,AX
		CMP ECX,EDX
		JB SHORT L004DEBE5
		POP EDI
		POP ESI
		RETN
L004DEC04:
		MOV AX,WORD PTR [ESP+4h]
		RETN

GenKey proc uses edi esi ebx
	
;				invoke lstrlenW,offset dbName
;				invoke CharUpperBuffW,offset dbName,eax
				invoke lstrlenW,offset dbName
				invoke UStr2HexStr,offset dbName,offset dbNameHex,eax
				invoke lstrlen,offset dbNameHex
				push eax
				push offset dbNameHex
				push 0
				call CheckSum
				add esp,0ch
				
		mov bx,ax
		rol bx,4
		mov ax,bx
		and ax,0fh
			.if ax<0ah
				add ax,30h
			.else
			  add ax,37h
			.endif
			mov ecx,offset dbKey2+4
		mov word ptr [ecx],ax
		rol bx,4
		mov ax,bx
		and eax,0fh
			.if al<0ah
				add eax,30h
			.else
			  add eax,37h
			.endif
			mov ecx,offset dbKey2+6
		mov word ptr [ecx],ax
		

		
		invoke lstrlenW,offset dbName
		xor ecx,ecx
		xor esi,esi
		.while ecx<eax
			movzx ebx,word ptr [ecx*2+offset dbName]
			add esi,ebx
			inc ecx
		.endw
		inc esi
		mov ecx,esi
		LEA ECX,DWORD PTR DS:[ECX+ECX*08h+0Ah];00001951
		MOV EAX,55555556h
		IMUL ECX
		MOV EAX,offset dbName
		SHR EAX,1Fh
		LEA ECX,DWORD PTR DS:[EDX+EAX+24h]
		AND ECX,8000000Fh
		JNS SHORT L004DF75A
		DEC ECX
		OR ECX,0FFFFFFF0h
		INC ECX
		PUSH ECX
L004DF75A:
			.if cl<0ah
				add ecx,30h
			.else
			  add ecx,37h
			.endif
			mov eax,offset dbKey2
			mov word ptr [eax+8],cx				
		
				invoke lstrlenW,offset dbKey2+4
;				invoke CharUpperBuffW,offset dbKey2,eax
;				invoke lstrlenW,offset dbKey2
				invoke UStr2HexStr,offset dbKey2+4,offset dbNameHex,eax
				invoke lstrlen,offset dbNameHex
				push eax
				push offset dbNameHex
				push 0
				call CheckSum
				add esp,0ch

				
		mov bx,ax
		rol bx,4
		mov ax,bx
		and ax,0fh
			.if ax<0ah
				add ax,30h
			.else
			  add ax,37h
			.endif
			mov ecx,offset dbKey2
		mov word ptr [ecx],ax
		rol bx,4
		mov ax,bx
		and eax,0fh
			.if al<0ah
				add eax,30h
			.else
			  add eax,37h
			.endif
			mov ecx,offset dbKey2+2
		mov word ptr [ecx],ax
		
				invoke TransFormKeyB,offset dbKey2
				ret
GenKey endp

DlgProc	proc	hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
	mov	eax,uMsg
	.if	eax==WM_INITDIALOG
		;initialization here
	.elseif	eax==WM_COMMAND
		mov edx,wParam
		movzx eax,dx
		shr edx,16
		.if edx==BN_CLICKED
			.if eax==IDOK
				invoke TransFormKey,offset dbKey2
				invoke GetDlgItemTextW,hWin,IDC_EDT_USER,offset dbName,sizeof dbName /2
				invoke GenKey
				invoke SetDlgItemTextW,hWin,IDC_EDT_KEY,offset dbKey2
			.elseif eax==IDCANCEL
				invoke	SendMessage,hWin,WM_CLOSE,NULL,NULL
			.endif
		.endif
	.elseif	eax==WM_CLOSE
		invoke	EndDialog,hWin,0
	.else
		mov	eax,FALSE
		ret
	.endif
	mov	eax,TRUE
	ret
DlgProc endp

end start

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
3yu3 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
chishingchan 发表于 2026-6-29 21:45
网上 4 5 6 的注册机都有!有的还在开源下载。楼主懂汇编,属高高手!
沙发
phiix52 发表于 2026-6-29 19:36
3#
zhanghj 发表于 2026-6-29 19:38
4#
Ming2001 发表于 2026-6-29 19:43
太强了,学习借鉴一下
5#
hsanren 发表于 2026-6-29 20:23
小白问用masm32可以编译吗?
6#
zongcheqi1 发表于 2026-6-29 21:10
膜拜一下~~
7#
cuituo 发表于 2026-6-29 21:30
52pojie    8GG46YLJ48E4CEACC-3626E-ECUAW     对吗  8GG46YLJ48E4CEACC-3626E-ECUAW   我是转换vb6  计算的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-6-30 00:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表