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

📄 r5-win32.asm

📁 老外写的加密库cryptlib(版本3.1)
💻 ASM
字号:
	; Don't even think of reading this code	; It was automatically generated by rc5-586.pl	; Which is a perl program used to generate the x86 assember for	; any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris	; eric <eay@cryptsoft.com>	; segment .textglobal	_RC5_32_encrypt_RC5_32_encrypt:	; 	push	ebp	push	esi	push	edi	mov	edx,		[16+esp]	mov	ebp,		[20+esp]	; Load the 2 words	mov	edi,		[edx]	mov	esi,		[4+edx]	push	ebx	mov	ebx,		[ebp]	add	edi,		[4+ebp]	add	esi,		[8+ebp]	xor	edi,		esi	mov	eax,		[12+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[16+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[20+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[24+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[28+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[32+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[36+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[40+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[44+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[48+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[52+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[56+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[60+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[64+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[68+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[72+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	cmp	ebx,		8	je NEAR	$L000rc5_exit	xor	edi,		esi	mov	eax,		[76+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[80+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[84+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[88+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[92+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[96+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[100+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[104+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	cmp	ebx,		12	je NEAR	$L000rc5_exit	xor	edi,		esi	mov	eax,		[108+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[112+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[116+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[120+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[124+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[128+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax	xor	edi,		esi	mov	eax,		[132+ebp]	mov	ecx,		esi	rol	edi,		cl	add	edi,		eax	xor	esi,		edi	mov	eax,		[136+ebp]	mov	ecx,		edi	rol	esi,		cl	add	esi,		eax$L000rc5_exit:	mov	[edx],		edi	mov	[4+edx],	esi	pop	ebx	pop	edi	pop	esi	pop	ebp	retglobal	_RC5_32_decrypt_RC5_32_decrypt:	; 	push	ebp	push	esi	push	edi	mov	edx,		[16+esp]	mov	ebp,		[20+esp]	; Load the 2 words	mov	edi,		[edx]	mov	esi,		[4+edx]	push	ebx	mov	ebx,		[ebp]	cmp	ebx,		12	je NEAR	$L001rc5_dec_12	cmp	ebx,		8	je NEAR	$L002rc5_dec_8	mov	eax,		[136+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[132+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[128+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[124+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[120+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[116+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[112+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[108+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi$L001rc5_dec_12:	mov	eax,		[104+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[100+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[96+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[92+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[88+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[84+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[80+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[76+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi$L002rc5_dec_8:	mov	eax,		[72+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[68+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[64+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[60+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[56+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[52+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[48+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[44+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[40+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[36+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[32+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[28+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[24+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[20+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	mov	eax,		[16+ebp]	sub	esi,		eax	mov	ecx,		edi	ror	esi,		cl	xor	esi,		edi	mov	eax,		[12+ebp]	sub	edi,		eax	mov	ecx,		esi	ror	edi,		cl	xor	edi,		esi	sub	esi,		[8+ebp]	sub	edi,		[4+ebp]L003rc5_exit:	mov	[edx],		edi	mov	[4+edx],	esi	pop	ebx	pop	edi	pop	esi	pop	ebp	retglobal	_RC5_32_cbc_encrypt_RC5_32_cbc_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 3	mov	eax,		[48+esp]	push	eax	push	ebx	cmp	ecx,		0	jz NEAR	$L004decrypt	and	ebp,		4294967288	mov	eax,		[8+esp]	mov	ebx,		[12+esp]	jz NEAR	$L005encrypt_finishL006encrypt_loop:	mov	ecx,		[esi]	mov	edx,		[4+esi]	xor	eax,		ecx	xor	ebx,		edx	mov	[8+esp],	eax	mov	[12+esp],	ebx	call	_RC5_32_encrypt	mov	eax,		[8+esp]	mov	ebx,		[12+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,		[52+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	[8+esp],	eax	mov	[12+esp],	ebx	call	_RC5_32_encrypt	mov	eax,		[8+esp]	mov	ebx,		[12+esp]	mov	[edi],		eax	mov	[4+edi],	ebx	jmp	$L007finish$L004decrypt:	and	ebp,		4294967288	mov	eax,		[16+esp]	mov	ebx,		[20+esp]	jz NEAR	$L017decrypt_finishL018decrypt_loop:	mov	eax,		[esi]	mov	ebx,		[4+esi]	mov	[8+esp],	eax	mov	[12+esp],	ebx	call	_RC5_32_decrypt	mov	eax,		[8+esp]	mov	ebx,		[12+esp]	mov	ecx,		[16+esp]	mov	edx,		[20+esp]	xor	ecx,		eax	xor	edx,		ebx	mov	eax,		[esi]	mov	ebx,		[4+esi]	mov	[edi],		ecx	mov	[4+edi],	edx	mov	[16+esp],	eax	mov	[20+esp],	ebx	add	esi,		8	add	edi,		8	sub	ebp,		8	jnz NEAR	L018decrypt_loop$L017decrypt_finish:	mov	ebp,		[52+esp]	and	ebp,		7	jz NEAR	$L007finish	mov	eax,		[esi]	mov	ebx,		[4+esi]	mov	[8+esp],	eax	mov	[12+esp],	ebx	call	_RC5_32_decrypt	mov	eax,		[8+esp]	mov	ebx,		[12+esp]	mov	ecx,		[16+esp]	mov	edx,		[20+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,		[60+esp]	add	esp,		24	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	L019dj7

⌨️ 快捷键说明

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