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

📄 b-win32.asm

📁 提供了很多种加密算法和CA认证及相关服务如CMP、OCSP等的开发
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	; Don't even think of reading this code
	; It was automatically generated by bf-586.pl
	; Which is a perl program used to generate the x86 assember for
	; any of elf, a.out, BSDI,Win32, or Solaris
	; eric <eay@cryptsoft.com>
	; 
	TITLE	bf-586.asm
        .486
.model FLAT
_TEXT	SEGMENT
PUBLIC	_BF_encrypt

_BF_encrypt PROC NEAR
	; 
	push	ebp
	push	ebx
	mov	ebx,		DWORD PTR 12[esp]
	mov	ebp,		DWORD PTR 16[esp]
	push	esi
	push	edi
	; Load the 2 words
	mov	edi,		DWORD PTR [ebx]
	mov	esi,		DWORD PTR 4[ebx]
	xor	eax,		eax
	mov	ebx,		DWORD PTR [ebp]
	xor	ecx,		ecx
	xor	edi,		ebx
	; 
	; Round 0
	mov	edx,		DWORD PTR 4[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 1
	mov	edx,		DWORD PTR 8[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	edi,		ebx
	; 
	; Round 2
	mov	edx,		DWORD PTR 12[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 3
	mov	edx,		DWORD PTR 16[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	edi,		ebx
	; 
	; Round 4
	mov	edx,		DWORD PTR 20[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 5
	mov	edx,		DWORD PTR 24[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	edi,		ebx
	; 
	; Round 6
	mov	edx,		DWORD PTR 28[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 7
	mov	edx,		DWORD PTR 32[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	edi,		ebx
	; 
	; Round 8
	mov	edx,		DWORD PTR 36[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 9
	mov	edx,		DWORD PTR 40[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	edi,		ebx
	; 
	; Round 10
	mov	edx,		DWORD PTR 44[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 11
	mov	edx,		DWORD PTR 48[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	edi,		ebx
	; 
	; Round 12
	mov	edx,		DWORD PTR 52[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 13
	mov	edx,		DWORD PTR 56[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	edi,		ebx
	; 
	; Round 14
	mov	edx,		DWORD PTR 60[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 15
	mov	edx,		DWORD PTR 64[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	; Load parameter 0 (16) enc=1
	mov	eax,		DWORD PTR 20[esp]
	xor	edi,		ebx
	mov	edx,		DWORD PTR 68[ebp]
	xor	esi,		edx
	mov	DWORD PTR 4[eax],edi
	mov	DWORD PTR [eax],esi
	pop	edi
	pop	esi
	pop	ebx
	pop	ebp
	ret
_BF_encrypt ENDP
_TEXT	ENDS
_TEXT	SEGMENT
PUBLIC	_BF_decrypt

_BF_decrypt PROC NEAR
	; 
	push	ebp
	push	ebx
	mov	ebx,		DWORD PTR 12[esp]
	mov	ebp,		DWORD PTR 16[esp]
	push	esi
	push	edi
	; Load the 2 words
	mov	edi,		DWORD PTR [ebx]
	mov	esi,		DWORD PTR 4[ebx]
	xor	eax,		eax
	mov	ebx,		DWORD PTR 68[ebp]
	xor	ecx,		ecx
	xor	edi,		ebx
	; 
	; Round 16
	mov	edx,		DWORD PTR 64[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 15
	mov	edx,		DWORD PTR 60[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	edi,		ebx
	; 
	; Round 14
	mov	edx,		DWORD PTR 56[ebp]
	mov	ebx,		edi
	xor	esi,		edx
	shr	ebx,		16
	mov	edx,		edi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]
	add	ebx,		edx
	xor	eax,		eax
	xor	esi,		ebx
	; 
	; Round 13
	mov	edx,		DWORD PTR 52[ebp]
	mov	ebx,		esi
	xor	edi,		edx
	shr	ebx,		16
	mov	edx,		esi
	mov	al,		bh
	and	ebx,		255
	mov	cl,		dh
	and	edx,		255
	mov	eax,		DWORD PTR 72[eax*4+ebp]
	mov	ebx,		DWORD PTR 1096[ebx*4+ebp]
	add	ebx,		eax
	mov	eax,		DWORD PTR 2120[ecx*4+ebp]
	xor	ebx,		eax
	mov	edx,		DWORD PTR 3144[edx*4+ebp]

⌨️ 快捷键说明

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