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

📄 d-win32.asm

📁 cryptlib安全工具包
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	mov	cl,		dh	shr	eax,		16	mov	ebp,		[_des_SPtrans+0100h+ebx]	xor	esi,		ebp	mov	bl,		ah	shr	edx,		16	mov	ebp,		[_des_SPtrans+0300h+ecx]	xor	esi,		ebp	mov	ebp,		[24+esp]	mov	cl,		dh	and	eax,		0ffh	and	edx,		0ffh	mov	ebx,		[_des_SPtrans+0600h+ebx]	xor	esi,		ebx	mov	ebx,		[_des_SPtrans+0700h+ecx]	xor	esi,		ebx	mov	ebx,		[_des_SPtrans+0400h+eax]	xor	esi,		ebx	mov	ebx,		[_des_SPtrans+0500h+edx]	xor	esi,		ebx	; 	; Round 3	mov	eax,		[24+ebp]	xor	ebx,		ebx	mov	edx,		[28+ebp]	xor	eax,		esi	xor	edx,		esi	and	eax,		0fcfcfcfch	and	edx,		0cfcfcfcfh	mov	bl,		al	mov	cl,		ah	ror	edx,		4	mov	ebp,		[_des_SPtrans+ebx]	mov	bl,		dl	xor	edi,		ebp	mov	ebp,		[_des_SPtrans+0200h+ecx]	xor	edi,		ebp	mov	cl,		dh	shr	eax,		16	mov	ebp,		[_des_SPtrans+0100h+ebx]	xor	edi,		ebp	mov	bl,		ah	shr	edx,		16	mov	ebp,		[_des_SPtrans+0300h+ecx]	xor	edi,		ebp	mov	ebp,		[24+esp]	mov	cl,		dh	and	eax,		0ffh	and	edx,		0ffh	mov	ebx,		[_des_SPtrans+0600h+ebx]	xor	edi,		ebx	mov	ebx,		[_des_SPtrans+0700h+ecx]	xor	edi,		ebx	mov	ebx,		[_des_SPtrans+0400h+eax]	xor	edi,		ebx	mov	ebx,		[_des_SPtrans+0500h+edx]	xor	edi,		ebx	; 	; Round 2	mov	eax,		[16+ebp]	xor	ebx,		ebx	mov	edx,		[20+ebp]	xor	eax,		edi	xor	edx,		edi	and	eax,		0fcfcfcfch	and	edx,		0cfcfcfcfh	mov	bl,		al	mov	cl,		ah	ror	edx,		4	mov	ebp,		[_des_SPtrans+ebx]	mov	bl,		dl	xor	esi,		ebp	mov	ebp,		[_des_SPtrans+0200h+ecx]	xor	esi,		ebp	mov	cl,		dh	shr	eax,		16	mov	ebp,		[_des_SPtrans+0100h+ebx]	xor	esi,		ebp	mov	bl,		ah	shr	edx,		16	mov	ebp,		[_des_SPtrans+0300h+ecx]	xor	esi,		ebp	mov	ebp,		[24+esp]	mov	cl,		dh	and	eax,		0ffh	and	edx,		0ffh	mov	ebx,		[_des_SPtrans+0600h+ebx]	xor	esi,		ebx	mov	ebx,		[_des_SPtrans+0700h+ecx]	xor	esi,		ebx	mov	ebx,		[_des_SPtrans+0400h+eax]	xor	esi,		ebx	mov	ebx,		[_des_SPtrans+0500h+edx]	xor	esi,		ebx	; 	; Round 1	mov	eax,		[8+ebp]	xor	ebx,		ebx	mov	edx,		[12+ebp]	xor	eax,		esi	xor	edx,		esi	and	eax,		0fcfcfcfch	and	edx,		0cfcfcfcfh	mov	bl,		al	mov	cl,		ah	ror	edx,		4	mov	ebp,		[_des_SPtrans+ebx]	mov	bl,		dl	xor	edi,		ebp	mov	ebp,		[_des_SPtrans+0200h+ecx]	xor	edi,		ebp	mov	cl,		dh	shr	eax,		16	mov	ebp,		[_des_SPtrans+0100h+ebx]	xor	edi,		ebp	mov	bl,		ah	shr	edx,		16	mov	ebp,		[_des_SPtrans+0300h+ecx]	xor	edi,		ebp	mov	ebp,		[24+esp]	mov	cl,		dh	and	eax,		0ffh	and	edx,		0ffh	mov	ebx,		[_des_SPtrans+0600h+ebx]	xor	edi,		ebx	mov	ebx,		[_des_SPtrans+0700h+ecx]	xor	edi,		ebx	mov	ebx,		[_des_SPtrans+0400h+eax]	xor	edi,		ebx	mov	ebx,		[_des_SPtrans+0500h+edx]	xor	edi,		ebx	; 	; Round 0	mov	eax,		[ebp]	xor	ebx,		ebx	mov	edx,		[4+ebp]	xor	eax,		edi	xor	edx,		edi	and	eax,		0fcfcfcfch	and	edx,		0cfcfcfcfh	mov	bl,		al	mov	cl,		ah	ror	edx,		4	mov	ebp,		[_des_SPtrans+ebx]	mov	bl,		dl	xor	esi,		ebp	mov	ebp,		[_des_SPtrans+0200h+ecx]	xor	esi,		ebp	mov	cl,		dh	shr	eax,		16	mov	ebp,		[_des_SPtrans+0100h+ebx]	xor	esi,		ebp	mov	bl,		ah	shr	edx,		16	mov	ebp,		[_des_SPtrans+0300h+ecx]	xor	esi,		ebp	mov	ebp,		[24+esp]	mov	cl,		dh	and	eax,		0ffh	and	edx,		0ffh	mov	ebx,		[_des_SPtrans+0600h+ebx]	xor	esi,		ebx	mov	ebx,		[_des_SPtrans+0700h+ecx]	xor	esi,		ebx	mov	ebx,		[_des_SPtrans+0400h+eax]	xor	esi,		ebx	mov	ebx,		[_des_SPtrans+0500h+edx]	xor	esi,		ebx$L003end:	; 	; Fixup	ror	edi,		3	mov	eax,		[20+esp]	ror	esi,		3	mov	[eax],		edi	mov	[4+eax],	esi	pop	ebp	pop	ebx	pop	edi	pop	esi	retglobal	_des_encrypt3_des_encrypt3:	push	ebx	mov	ebx,		[8+esp]	push	ebp	push	esi	push	edi	; 	; Load the data words	mov	edi,		[ebx]	mov	esi,		[4+ebx]	sub	esp,		12	; 	; IP	rol	edi,		4	mov	edx,		edi	xor	edi,		esi	and	edi,		0f0f0f0f0h	xor	edx,		edi	xor	esi,		edi	; 	rol	esi,		20	mov	edi,		esi	xor	esi,		edx	and	esi,		0fff0000fh	xor	edi,		esi	xor	edx,		esi	; 	rol	edi,		14	mov	esi,		edi	xor	edi,		edx	and	edi,		033333333h	xor	esi,		edi	xor	edx,		edi	; 	rol	edx,		22	mov	edi,		edx	xor	edx,		esi	and	edx,		003fc03fch	xor	edi,		edx	xor	esi,		edx	; 	rol	edi,		9	mov	edx,		edi	xor	edi,		esi	and	edi,		0aaaaaaaah	xor	edx,		edi	xor	esi,		edi	; 	ror	edx,		3	ror	esi,		2	mov	[4+ebx],	esi	mov	eax,		[36+esp]	mov	[ebx],		edx	mov	edi,		[40+esp]	mov	esi,		[44+esp]	mov	[8+esp],	DWORD 1	mov	[4+esp],	eax	mov	[esp],		ebx	call	_des_encrypt2	mov	[8+esp],	DWORD 0	mov	[4+esp],	edi	mov	[esp],		ebx	call	_des_encrypt2	mov	[8+esp],	DWORD 1	mov	[4+esp],	esi	mov	[esp],		ebx	call	_des_encrypt2	add	esp,		12	mov	edi,		[ebx]	mov	esi,		[4+ebx]	; 	; FP	rol	esi,		2	rol	edi,		3	mov	eax,		edi	xor	edi,		esi	and	edi,		0aaaaaaaah	xor	eax,		edi	xor	esi,		edi	; 	rol	eax,		23	mov	edi,		eax	xor	eax,		esi	and	eax,		003fc03fch	xor	edi,		eax	xor	esi,		eax	; 	rol	edi,		10	mov	eax,		edi	xor	edi,		esi	and	edi,		033333333h	xor	eax,		edi	xor	esi,		edi	; 	rol	esi,		18	mov	edi,		esi	xor	esi,		eax	and	esi,		0fff0000fh	xor	edi,		esi	xor	eax,		esi	; 	rol	edi,		12	mov	esi,		edi	xor	edi,		eax	and	edi,		0f0f0f0f0h	xor	esi,		edi	xor	eax,		edi	; 	ror	eax,		4	mov	[ebx],		eax	mov	[4+ebx],	esi	pop	edi	pop	esi	pop	ebp	pop	ebx	retglobal	_des_decrypt3_des_decrypt3:	push	ebx	mov	ebx,		[8+esp]	push	ebp	push	esi	push	edi	; 	; Load the data words	mov	edi,		[ebx]	mov	esi,		[4+ebx]	sub	esp,		12	; 	; IP	rol	edi,		4	mov	edx,		edi	xor	edi,		esi	and	edi,		0f0f0f0f0h	xor	edx,		edi	xor	esi,		edi	; 	rol	esi,		20	mov	edi,		esi	xor	esi,		edx	and	esi,		0fff0000fh	xor	edi,		esi	xor	edx,		esi	; 	rol	edi,		14	mov	esi,		edi	xor	edi,		edx	and	edi,		033333333h	xor	esi,		edi	xor	edx,		edi	; 	rol	edx,		22	mov	edi,		edx	xor	edx,		esi	and	edx,		003fc03fch	xor	edi,		edx	xor	esi,		edx	; 	rol	edi,		9	mov	edx,		edi	xor	edi,		esi	and	edi,		0aaaaaaaah	xor	edx,		edi	xor	esi,		edi	; 	ror	edx,		3	ror	esi,		2	mov	[4+ebx],	esi	mov	esi,		[36+esp]	mov	[ebx],		edx	mov	edi,		[40+esp]	mov	eax,		[44+esp]	mov	[8+esp],	DWORD 0	mov	[4+esp],	eax	mov	[esp],		ebx	call	_des_encrypt2	mov	[8+esp],	DWORD 1	mov	[4+esp],	edi	mov	[esp],		ebx	call	_des_encrypt2	mov	[8+esp],	DWORD 0	mov	[4+esp],	esi	mov	[esp],		ebx	call	_des_encrypt2	add	esp,		12	mov	edi,		[ebx]	mov	esi,		[4+ebx]	; 	; FP	rol	esi,		2	rol	edi,		3	mov	eax,		edi	xor	edi,		esi	and	edi,		0aaaaaaaah	xor	eax,		edi	xor	esi,		edi	; 	rol	eax,		23	mov	edi,		eax	xor	eax,		esi	and	eax,		003fc03fch	xor	edi,		eax	xor	esi,		eax	; 	rol	edi,		10	mov	eax,		edi	xor	edi,		esi	and	edi,		033333333h	xor	eax,		edi	xor	esi,		edi	; 	rol	esi,		18	mov	edi,		esi	xor	esi,		eax	and	esi,		0fff0000fh	xor	edi,		esi	xor	eax,		esi	; 	rol	edi,		12	mov	esi,		edi	xor	edi,		eax	and	edi,		0f0f0f0f0h	xor	esi,		edi	xor	eax,		edi	; 	ror	eax,		4	mov	[ebx],		eax	mov	[4+ebx],	esi	pop	edi	pop	esi	pop	ebp	pop	ebx	retglobal	_des_ncbc_encrypt_des_ncbc_encrypt:	; 	push	ebp	push	ebx	push	esi	push	edi	mov	ebp,		[28+esp]	; getting iv ptr from parameter 4	mov	ebx,		[36+esp]	mov	esi,		[ebx]	mov	edi,		[4+ebx]	push	edi	push	esi	push	edi	push	esi	mov	ebx,		esp	mov	esi,		[36+esp]	mov	edi,		[40+esp]	; getting encrypt flag from parameter 5	mov	ecx,		[56+esp]	; get and push parameter 5	push	ecx	; get and push parameter 3	mov	eax,		[52+esp]	push	eax	push	ebx	cmp	ecx,		0	jz NEAR	$L004decrypt	and	ebp,		4294967288	mov	eax,		[12+esp]	mov	ebx,		[16+esp]	jz NEAR	$L005encrypt_finishL006encrypt_loop:	mov	ecx,		[esi]	mov	edx,		[4+esi]	xor	eax,		ecx	xor	ebx,		edx	mov	[12+esp],	eax	mov	[16+esp],	ebx	call	_des_encrypt1	mov	eax,		[12+esp]	mov	ebx,		[16+esp]	mov	[edi],		eax	mov	[4+edi],	ebx	add	esi,		8	add	edi,		8	sub	ebp,		8	jnz NEAR	L006encrypt_loop$L005encrypt_finish:	mov	ebp,		[56+esp]	and	ebp,		7	jz NEAR	$L007finish	xor	ecx,		ecx	xor	edx,		edx	mov	ebp,		[$L008cbc_enc_jmp_table+ebp*4]	jmp	 ebpL009ej7:	mov	dh,		[6+esi]	shl	edx,		8L010ej6:	mov	dh,		[5+esi]L011ej5:	mov	dl,		[4+esi]L012ej4:	mov	ecx,		[esi]	jmp	$L013ejendL014ej3:	mov	ch,		[2+esi]	shl	ecx,		8L015ej2:	mov	ch,		[1+esi]L016ej1:	mov	cl,		[esi]$L013ejend:	xor	eax,		ecx	xor	ebx,		edx	mov	[12+esp],	eax	mov	[16+esp],	ebx	call	_des_encrypt1	mov	eax,		[12+esp]	mov	ebx,		[16+esp]	mov	[edi],		eax	mov	[4+edi],	ebx	jmp	$L007finish$L004decrypt:	and	ebp,		4294967288	mov	eax,		[20+esp]	mov	ebx,		[24+esp]	jz NEAR	$L017decrypt_finishL018decrypt_loop:	mov	eax,		[esi]	mov	ebx,		[4+esi]	mov	[12+esp],	eax	mov	[16+esp],	ebx	call	_des_encrypt1	mov	eax,		[12+esp]	mov	ebx,		[16+esp]	mov	ecx,		[20+esp]	mov	edx,		[24+esp]	xor	ecx,		eax	xor	edx,		ebx	mov	eax,		[esi]	mov	ebx,		[4+esi]	mov	[edi],		ecx	mov	[4+edi],	edx	mov	[20+esp],	eax	mov	[24+esp],	ebx	add	esi,		8	add	edi,		8	sub	ebp,		8	jnz NEAR	L018decrypt_loop$L017decrypt_finish:	mov	ebp,		[56+esp]	and	ebp,		7	jz NEAR	$L007finish	mov	eax,		[esi]	mov	ebx,		[4+esi]	mov	[12+esp],	eax	mov	[16+esp],	ebx	call	_des_encrypt1	mov	eax,		[12+esp]	mov	ebx,		[16+esp]	mov	ecx,		[20+esp]	mov	edx,		[24+esp]	xor	ecx,		eax	xor	edx,		ebx	mov	eax,		[esi]	mov	ebx,		[4+esi]L019dj7:	ror	edx,		16	mov	[6+edi],	dl	shr	edx,		16L020dj6:	mov	[5+edi],	dhL021dj5:	mov	[4+edi],	dlL022dj4:	mov	[edi],		ecx	jmp	$L023djendL024dj3:	ror	ecx,		16	mov	[2+edi],	cl	shl	ecx,		16L025dj2:	mov	[1+esi],	chL026dj1:	mov	[esi],		cl$L023djend:	jmp	$L007finish$L007finish:	mov	ecx,		[64+esp]	add	esp,		28	mov	[ecx],		eax	mov	[4+ecx],	ebx	pop	edi	pop	esi	pop	ebx	pop	ebp	ret$L008cbc_enc_jmp_table:	DD	0	DD	L016ej1	DD	L015ej2	DD	L014ej3	DD	L012ej4	DD	L011ej5	DD	L010ej6	DD	L009ej7L027cbc_dec_jmp_table:	DD	0	DD	L026dj1	DD	L025dj2	DD	L024dj3	DD	L022dj4	DD	L021dj5	DD	L020dj6	DD	L019dj7global	_des_ede3_cbc_encrypt_des_ede3_cbc_encrypt:	; 	push	ebp	push	ebx	push	esi	push	edi	mov	ebp,		[28+esp]	; getting iv ptr from parameter 6	mov	ebx,		[44+esp]	mov	esi,		[ebx]	mov	edi,		[4+ebx]	push	edi	push	esi	push	edi	push	esi	mov	ebx,		esp	mov	esi,		[36+esp]	mov	edi,		[40+esp]	; getting encrypt flag from parameter 7	mov	ecx,		[64+esp]	; get and push parameter 5	mov	eax,		[56+esp]	push	eax	; get and push parameter 4	mov	eax,		[56+esp]	push	eax	; get and push parameter 3	mov	eax,		[56+esp]	push	eax	push	ebx	cmp	ecx,		0	jz NEAR	$L028decrypt	and	ebp,		4294967288	mov	eax,		[16+esp]	mov	ebx,		[20+esp]	jz NEAR	$L029encrypt_finishL030encrypt_loop:	mov	ecx,		[esi]	mov	edx,		[4+esi]	xor	eax,		ecx	xor	ebx,		edx	mov	[16+esp],	eax	mov	[20+esp],	ebx	call	_des_encrypt3	mov	eax,		[16+esp]	mov	ebx,		[20+esp]	mov	[edi],		eax	mov	[4+edi],	ebx	add	esi,		8	add	edi,		8	sub	ebp,		8	jnz NEAR	L030encrypt_loop$L029encrypt_finish:	mov	ebp,		[60+esp]	and	ebp,		7	jz NEAR	$L031finish	xor	ecx,		ecx	xor	edx,		edx	mov	ebp,		[$L032cbc_enc_jmp_table+ebp*4]	jmp	 ebpL033ej7:	mov	dh,		[6+esi]	shl	edx,		8L034ej6:	mov	dh,		[5+esi]L035ej5:	mov	dl,		[4+esi]L036ej4:	mov	ecx,		[esi]	jmp	$L037ejendL038ej3:	mov	ch,		[2+esi]	shl	ecx,		8L039ej2:	mov	ch,		[1+esi]L040ej1:	mov	cl,		[esi]$L037ejend:	xor	eax,		ecx	xor	ebx,		edx	mov	[16+esp],	eax	mov	[20+esp],	ebx	call	_des_encrypt3	mov	eax,		[16+esp]	mov	ebx,		[20+esp]	mov	[edi],		eax	mov	[4+edi],	ebx	jmp	$L031finish$L028decrypt:	and	ebp,		4294967288	mov	eax,		[24+esp]	mov	ebx,		[28+esp]	jz NEAR	$L041decrypt_finishL042decrypt_loop:	mov	eax,		[esi]	mov	ebx,		[4+esi]	mov	[16+esp],	eax	mov	[20+esp],	ebx	call	_des_decrypt3	mov	eax,		[16+esp]	mov	ebx,		[20+esp]	mov	ecx,		[24+esp]	mov	edx,		[28+esp]	xor	ecx,		eax	xor	edx,		ebx	mov	eax,		[esi]	mov	ebx,		[4+esi]	mov	[edi],		ecx	mov	[4+edi],	edx	mov	[24+esp],	eax	mov	[28+esp],	ebx	add	esi,		8	add	edi,		8	sub	ebp,		8	jnz NEAR	L042decrypt_loop$L041decrypt_finish:	mov	ebp,		[60+esp]	and	ebp,		7	jz NEAR	$L031finish	mov	eax,		[esi]	mov	ebx,		[4+esi]	mov	[16+esp],	eax	mov	[20+esp],	ebx	call	_des_decrypt3	mov	eax,		[16+esp]	mov	ebx,		[20+esp]	mov	ecx,		[24+esp]	mov	edx,		[28+esp]	xor	ecx,		eax	xor	edx,		ebx	mov	eax,		[esi]	mov	ebx,		[4+esi]L043dj7:	ror	edx,		16	mov	[6+edi],	dl	shr	edx,		16L044dj6:	mov	[5+edi],	dhL045dj5:	mov	[4+edi],	dlL046dj4:	mov	[edi],		ecx	jmp	$L047djendL048dj3:	ror	ecx,		16	mov	[2+edi],	cl	shl	ecx,		16L049dj2:	mov	[1+esi],	chL050dj1:	mov	[esi],		cl$L047djend:	jmp	$L031finish$L031finish:	mov	ecx,		[76+esp]	add	esp,		32	mov	[ecx],		eax	mov	[4+ecx],	ebx	pop	edi	pop	esi	pop	ebx	pop	ebp	ret$L032cbc_enc_jmp_table:	DD	0	DD	L040ej1	DD	L039ej2	DD	L038ej3	DD	L036ej4	DD	L035ej5	DD	L034ej6	DD	L033ej7L051cbc_dec_jmp_table:	DD	0	DD	L050dj1	DD	L049dj2	DD	L048dj3	DD	L046dj4	DD	L045dj5	DD	L044dj6	DD	L043dj7

⌨️ 快捷键说明

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