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

📄 rcrc32.asm

📁 ASM 多种hash模块,汇编源码 MD2,4,5 SHA 等多种加密算法 还有其他赠送内容
💻 ASM
字号:
.686
.model flat,stdcall
option casemap:none

INIT_CRC32 equ 0
EXTERNDEF CRC32Table:DWORD

.code
CRC32 proto :DWORD,:DWORD,:DWORD

align 16
RCRC32 proc uses ebx esi edi pData:dword,dwDataLen:dword,dwOffset:dword,dwWantCrc:dword
	mov esi,pData
	invoke CRC32,esi,dwOffset,INIT_CRC32
	mov edx,dwDataLen
	mov edi,esi
	test edx,edx
	mov ecx,dwWantCrc
	jz @@Exit
	add esi,edx
	add edi,dwOffset
	mov [edi],eax
	xor ecx,-1
	xor eax,eax
	push ecx
	mov edx,4
	push eax
	; rcrc32(@wantcrc,4)
	.repeat
		mov al,[esp+edx+3]
		call @@GetTableEntry
		xor [esp+edx],eax
		xor [esp+edx-1],cl
		dec edx
	.until zero?
	add edi,4
	jmp @F
	; rcrc32(pData+dwOffset+4,dwDataLen-dwOffset))
	.repeat
		mov eax,[esp]
		sub esi,4
		xor ecx,ecx
		xor eax,[esi]
		mov [esp],ecx
		mov [esp+4],eax
		mov edx,4
		.repeat
			mov al,[esp+edx+3]
			call @@GetTableEntry
			xor [esp+edx],eax
			xor [esp+edx-1],cl
			dec edx
		.until zero?
@@:
	.until esi <= edi  
	pop eax
	xor eax,-1
	xor [edi-4],eax; dwRCRC xor crc32(pData,dwOffset,0)
	add esp,4
@@Exit:
	ret
@@GetTableEntry:
	xor ecx,ecx
	.repeat
		.break .if al == byte ptr [CRC32Table+ecx*4+3]
		inc cl
	.until zero?
	mov eax,[CRC32Table+ecx*4]
	retn
RCRC32 endp

end

⌨️ 快捷键说明

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