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

📄 c-win32.asm

📁 提供了很多种加密算法和CA认证及相关服务如CMP、OCSP等的开发
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	esi,		ecx
	; round 11
	mov	edx,		DWORD PTR 88[ebp]
	mov	ecx,		DWORD PTR 92[ebp]
	sub	edx,		esi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	edi,		ecx
	; round 10
	mov	edx,		DWORD PTR 80[ebp]
	mov	ecx,		DWORD PTR 84[ebp]
	xor	edx,		edi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	esi,		ecx
	; round 9
	mov	edx,		DWORD PTR 72[ebp]
	mov	ecx,		DWORD PTR 76[ebp]
	add	edx,		esi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	edi,		ecx
	; round 8
	mov	edx,		DWORD PTR 64[ebp]
	mov	ecx,		DWORD PTR 68[ebp]
	sub	edx,		edi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	esi,		ecx
	; round 7
	mov	edx,		DWORD PTR 56[ebp]
	mov	ecx,		DWORD PTR 60[ebp]
	xor	edx,		esi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	edi,		ecx
	; round 6
	mov	edx,		DWORD PTR 48[ebp]
	mov	ecx,		DWORD PTR 52[ebp]
	add	edx,		edi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	esi,		ecx
	; round 5
	mov	edx,		DWORD PTR 40[ebp]
	mov	ecx,		DWORD PTR 44[ebp]
	sub	edx,		esi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	edi,		ecx
	; round 4
	mov	edx,		DWORD PTR 32[ebp]
	mov	ecx,		DWORD PTR 36[ebp]
	xor	edx,		edi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	esi,		ecx
	; round 3
	mov	edx,		DWORD PTR 24[ebp]
	mov	ecx,		DWORD PTR 28[ebp]
	add	edx,		esi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	xor	edi,		ecx
	; round 2
	mov	edx,		DWORD PTR 16[ebp]
	mov	ecx,		DWORD PTR 20[ebp]
	sub	edx,		edi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	sub	ecx,		ebx
	xor	esi,		ecx
	; round 1
	mov	edx,		DWORD PTR 8[ebp]
	mov	ecx,		DWORD PTR 12[ebp]
	xor	edx,		esi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	add	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	xor	ecx,		ebx
	xor	edi,		ecx
	; round 0
	mov	edx,		DWORD PTR [ebp]
	mov	ecx,		DWORD PTR 4[ebp]
	add	edx,		edi
	rol	edx,		cl
	mov	ebx,		edx
	xor	ecx,		ecx
	mov	cl,		dh
	and	ebx,		255
	shr	edx,		16
	xor	eax,		eax
	mov	al,		dh
	and	edx,		255
	mov	ecx,		DWORD PTR _CAST_S_table0[ecx*4]
	mov	ebx,		DWORD PTR _CAST_S_table1[ebx*4]
	xor	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table2[eax*4]
	sub	ecx,		ebx
	mov	ebx,		DWORD PTR _CAST_S_table3[edx*4]
	add	ecx,		ebx
	mov	eax,		DWORD PTR 20[esp]
	xor	esi,		ecx
	nop
	mov	DWORD PTR 4[eax],edi
	mov	DWORD PTR [eax],esi
	pop	edi
	pop	esi
	pop	ebx
	pop	ebp
	ret
_CAST_decrypt ENDP
_TEXT	ENDS
_TEXT	SEGMENT
PUBLIC	_CAST_cbc_encrypt

_CAST_cbc_encrypt PROC NEAR
	; 
	push	ebp
	push	ebx
	push	esi
	push	edi
	mov	ebp,		DWORD PTR 28[esp]
	; getting iv ptr from parameter 4
	mov	ebx,		DWORD PTR 36[esp]
	mov	esi,		DWORD PTR [ebx]
	mov	edi,		DWORD PTR 4[ebx]
	push	edi
	push	esi
	push	edi
	push	esi
	mov	ebx,		esp
	mov	esi,		DWORD PTR 36[esp]
	mov	edi,		DWORD PTR 40[esp]
	; getting encrypt flag from parameter 5
	mov	ecx,		DWORD PTR 56[esp]
	; get and push parameter 3
	mov	eax,		DWORD PTR 48[esp]
	push	eax
	push	ebx
	cmp	ecx,		0
	jz	$L000decrypt
	and	ebp,		4294967288
	mov	eax,		DWORD PTR 8[esp]
	mov	ebx,		DWORD PTR 12[esp]
	jz	$L001encrypt_finish
L002encrypt_loop:
	mov	ecx,		DWORD PTR [esi]
	mov	edx,		DWORD PTR 4[esi]
	xor	eax,		ecx
	xor	ebx,		edx
	bswap	eax
	bswap	ebx
	mov	DWORD PTR 8[esp],eax
	mov	DWORD PTR 12[esp],ebx
	call	_CAST_encrypt
	mov	eax,		DWORD PTR 8[esp]
	mov	ebx,		DWORD PTR 12[esp]
	bswap	eax
	bswap	ebx
	mov	DWORD PTR [edi],eax
	mov	DWORD PTR 4[edi],ebx
	add	esi,		8
	add	edi,		8
	sub	ebp,		8
	jnz	L002encrypt_loop
$L001encrypt_finish:
	mov	ebp,		DWORD PTR 52[esp]
	and	ebp,		7
	jz	$L003finish
	xor	ecx,		ecx
	xor	edx,		edx
	mov	ebp,		DWORD PTR $L004cbc_enc_jmp_table[ebp*4]
	jmp	 ebp
L005ej7:
	xor	edx,		edx
	mov	dh,		BYTE PTR 6[esi]
	shl	edx,		8
L006ej6:
	mov	dh,		BYTE PTR 5[esi]
L007ej5:
	mov	dl,		BYTE PTR 4[esi]
L008ej4:
	mov	ecx,		DWORD PTR [esi]
	jmp	$L009ejend
L010ej3:
	mov	ch,		BYTE PTR 2[esi]
	xor	ecx,		ecx
	shl	ecx,		8
L011ej2:
	mov	ch,		BYTE PTR 1[esi]
L012ej1:
	mov	cl,		BYTE PTR [esi]
$L009ejend:
	xor	eax,		ecx
	xor	ebx,		edx
	bswap	eax
	bswap	ebx
	mov	DWORD PTR 8[esp],eax
	mov	DWORD PTR 12[esp],ebx
	call	_CAST_encrypt
	mov	eax,		DWORD PTR 8[esp]
	mov	ebx,		DWORD PTR 12[esp]
	bswap	eax
	bswap	ebx
	mov	DWORD PTR [edi],eax
	mov	DWORD PTR 4[edi],ebx
	jmp	$L003finish
$L000decrypt:
	and	ebp,		4294967288
	mov	eax,		DWORD PTR 16[esp]
	mov	ebx,		DWORD PTR 20[esp]
	jz	$L013decrypt_finish
L014decrypt_loop:
	mov	eax,		DWORD PTR [esi]
	mov	ebx,		DWORD PTR 4[esi]
	bswap	eax
	bswap	ebx
	mov	DWORD PTR 8[esp],eax
	mov	DWORD PTR 12[esp],ebx
	call	_CAST_decrypt
	mov	eax,		DWORD PTR 8[esp]
	mov	ebx,		DWORD PTR 12[esp]
	bswap	eax
	bswap	ebx
	mov	ecx,		DWORD PTR 16[esp]
	mov	edx,		DWORD PTR 20[esp]
	xor	ecx,		eax
	xor	edx,		ebx
	mov	eax,		DWORD PTR [esi]
	mov	ebx,		DWORD PTR 4[esi]
	mov	DWORD PTR [edi],ecx
	mov	DWORD PTR 4[edi],edx
	mov	DWORD PTR 16[esp],eax
	mov	DWORD PTR 20[esp],ebx
	add	esi,		8
	add	edi,		8
	sub	ebp,		8
	jnz	L014decrypt_loop
$L013decrypt_finish:
	mov	ebp,		DWORD PTR 52[esp]
	and	ebp,		7
	jz	$L003finish
	mov	eax,		DWORD PTR [esi]
	mov	ebx,		DWORD PTR 4[esi]
	bswap	eax
	bswap	ebx
	mov	DWORD PTR 8[esp],eax
	mov	DWORD PTR 12[esp],ebx
	call	_CAST_decrypt
	mov	eax,		DWORD PTR 8[esp]
	mov	ebx,		DWORD PTR 12[esp]
	bswap	eax
	bswap	ebx
	mov	ecx,		DWORD PTR 16[esp]
	mov	edx,		DWORD PTR 20[esp]
	xor	ecx,		eax
	xor	edx,		ebx
	mov	eax,		DWORD PTR [esi]
	mov	ebx,		DWORD PTR 4[esi]
L015dj7:
	ror	edx,		16
	mov	BYTE PTR 6[edi],dl
	shr	edx,		16
L016dj6:
	mov	BYTE PTR 5[edi],dh
L017dj5:
	mov	BYTE PTR 4[edi],dl
L018dj4:
	mov	DWORD PTR [edi],ecx
	jmp	$L019djend
L020dj3:
	ror	ecx,		16
	mov	BYTE PTR 2[edi],cl
	shl	ecx,		16
L021dj2:
	mov	BYTE PTR 1[esi],ch
L022dj1:
	mov	BYTE PTR [esi],	cl
$L019djend:
	jmp	$L003finish
$L003finish:
	mov	ecx,		DWORD PTR 60[esp]
	add	esp,		24
	mov	DWORD PTR [ecx],eax
	mov	DWORD PTR 4[ecx],ebx
	pop	edi
	pop	esi
	pop	ebx
	pop	ebp
	ret
$L004cbc_enc_jmp_table:
	DD	0
	DD	L012ej1
	DD	L011ej2
	DD	L010ej3
	DD	L008ej4
	DD	L007ej5
	DD	L006ej6
	DD	L005ej7
L023cbc_dec_jmp_table:
	DD	0
	DD	L022dj1
	DD	L021dj2
	DD	L020dj3
	DD	L018dj4
	DD	L017dj5
	DD	L016dj6
	DD	L015dj7
_CAST_cbc_encrypt ENDP
_TEXT	ENDS
END

⌨️ 快捷键说明

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