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

📄 r4_win32.asm

📁 RC4加密算法 目前工人最安全的加密算法之一 包括初始化算法和伪随机子密码生成算法两大部分
💻 ASM
字号:
	; Don't even think of reading this code
	; It was automatically generated by rc4-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>
	; 
	TITLE	rc4-586.asm
        .386
.model FLAT
_TEXT	SEGMENT
PUBLIC	_RC4

_RC4 PROC NEAR
	; 
	push	ebp
	push	ebx
	mov	ebp,		DWORD PTR 12[esp]
	mov	ebx,		DWORD PTR 16[esp]
	push	esi
	push	edi
	mov	ecx,		DWORD PTR [ebp]
	mov	edx,		DWORD PTR 4[ebp]
	mov	esi,		DWORD PTR 28[esp]
	inc	ecx
	sub	esp,		12
	add	ebp,		8
	and	ecx,		255
	lea	ebx,		DWORD PTR [esi+ebx-8]
	mov	edi,		DWORD PTR 44[esp]
	mov	DWORD PTR 8[esp],ebx
	mov	eax,		DWORD PTR [ecx*4+ebp]
	cmp	ebx,		esi
	jl	$L000end
$L001start:
	add	esi,		8
	; Round 0
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	BYTE PTR [esp],	bl
	; Round 1
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	BYTE PTR 1[esp],bl
	; Round 2
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	BYTE PTR 2[esp],bl
	; Round 3
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	BYTE PTR 3[esp],bl
	; Round 4
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	BYTE PTR 4[esp],bl
	; Round 5
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	BYTE PTR 5[esp],bl
	; Round 6
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	BYTE PTR 6[esp],bl
	; Round 7
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	add	edi,		8
	mov	BYTE PTR 7[esp],bl
	; apply the cipher text
	mov	eax,		DWORD PTR [esp]
	mov	ebx,		DWORD PTR [esi-8]
	xor	eax,		ebx
	mov	ebx,		DWORD PTR [esi-4]
	mov	DWORD PTR [edi-8],eax
	mov	eax,		DWORD PTR 4[esp]
	xor	eax,		ebx
	mov	ebx,		DWORD PTR 8[esp]
	mov	DWORD PTR [edi-4],eax
	mov	eax,		DWORD PTR [ecx*4+ebp]
	cmp	esi,		ebx
	jle	$L001start
$L000end:
	; Round 0
	add	ebx,		8
	inc	esi
	cmp	ebx,		esi
	jl	$L002finished
	mov	DWORD PTR 8[esp],ebx
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	bh,		BYTE PTR [esi-1]
	xor	bl,		bh
	mov	BYTE PTR [edi],	bl
	; Round 1
	mov	ebx,		DWORD PTR 8[esp]
	cmp	ebx,		esi
	jle	$L002finished
	inc	esi
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	bh,		BYTE PTR [esi-1]
	xor	bl,		bh
	mov	BYTE PTR 1[edi],bl
	; Round 2
	mov	ebx,		DWORD PTR 8[esp]
	cmp	ebx,		esi
	jle	$L002finished
	inc	esi
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	bh,		BYTE PTR [esi-1]
	xor	bl,		bh
	mov	BYTE PTR 2[edi],bl
	; Round 3
	mov	ebx,		DWORD PTR 8[esp]
	cmp	ebx,		esi
	jle	$L002finished
	inc	esi
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	bh,		BYTE PTR [esi-1]
	xor	bl,		bh
	mov	BYTE PTR 3[edi],bl
	; Round 4
	mov	ebx,		DWORD PTR 8[esp]
	cmp	ebx,		esi
	jle	$L002finished
	inc	esi
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	bh,		BYTE PTR [esi-1]
	xor	bl,		bh
	mov	BYTE PTR 4[edi],bl
	; Round 5
	mov	ebx,		DWORD PTR 8[esp]
	cmp	ebx,		esi
	jle	$L002finished
	inc	esi
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	eax,		DWORD PTR [ecx*4+ebp]
	mov	bh,		BYTE PTR [esi-1]
	xor	bl,		bh
	mov	BYTE PTR 5[edi],bl
	; Round 6
	mov	ebx,		DWORD PTR 8[esp]
	cmp	ebx,		esi
	jle	$L002finished
	inc	esi
	add	edx,		eax
	and	edx,		255
	inc	ecx
	mov	ebx,		DWORD PTR [edx*4+ebp]
	mov	DWORD PTR [ecx*4+ebp-4],ebx
	add	ebx,		eax
	and	ecx,		255
	and	ebx,		255
	mov	DWORD PTR [edx*4+ebp],eax
	nop
	mov	ebx,		DWORD PTR [ebx*4+ebp]
	mov	bh,		BYTE PTR [esi-1]
	xor	bl,		bh
	mov	BYTE PTR 6[edi],bl
$L002finished:
	dec	ecx
	add	esp,		12
	mov	DWORD PTR [ebp-4],edx
	mov	BYTE PTR [ebp-8],cl
	pop	edi
	pop	esi
	pop	ebx
	pop	ebp
	ret
_RC4 ENDP
_TEXT	ENDS
END

⌨️ 快捷键说明

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