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

📄 ufstool.asm

📁 这可是一个重量级工具
💻 ASM
📖 第 1 页 / 共 5 页
字号:
include	UFSTool.inc

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
MainDlgFunc proto :HWND,:UINT,:WPARAM,:LPARAM
WriteThenRead proto  :DWORD,:DWORD,:DWORD,:DWORD
ReadBox proto :DWORD,:DWORD,:DWORD
ProgressDlgFunc proto :DWORD,:DWORD,:DWORD,:DWORD
FlashingFunc proto :DWORD
CalcActCode proto :DWORD,:DWORD,:DWORD,:DWORD,:LPSTR,:DWORD
CheckBoxType proto :DWORD
Random	proto :DWORD

include ufs2xx.inc
includelib UFS2XX.lib

include UFSToolData.inc

include UFSToolBBS.inc
 
.code

SHA1_EnCode proc

		pusha
		mov	ESP_Saved,esp
		cld
		mov	ecx,[esp+28h]
		mov	esi,[esp+2Ch]
		mov	Total_Length,ecx
		or		ComputeFlag,0FFFFFFFFh
		mov	Message_Length,ecx
		mov	Intermediate_Hash[00h],67452301h
		mov	Intermediate_Hash[04h],0EFCDAB89h
		mov	Intermediate_Hash[08h],98BADCFEh
		mov	Intermediate_Hash[0Ch],10325476h
		mov	Intermediate_Hash[10h],0C3D2E1F0h

	L1:	
		cmp	Message_Length,40h	;nSize必须以64字节(40h)对齐
		jb		@F
		mov	eax,Intermediate_Hash[00h]
		mov	ebx,Intermediate_Hash[04h]
		mov	ecx,Intermediate_Hash[08h]
		mov	edx,Intermediate_Hash[0Ch]
		mov	ebp,Intermediate_Hash[10h]
		
		SHA1FUNC1 Message_Block[00h],eax,ebp,ecx,edx,ebx
		SHA1FUNC1 Message_Block[04h],ebp,edx,ebx,ecx,eax
		SHA1FUNC1 Message_Block[08h],edx,ecx,eax,ebx,ebp
		SHA1FUNC1 Message_Block[0Ch],ecx,ebx,ebp,eax,edx
		SHA1FUNC1 Message_Block[10h],ebx,eax,edx,ebp,ecx
		
		SHA1FUNC1 Message_Block[14h],eax,ebp,ecx,edx,ebx
		SHA1FUNC1 Message_Block[18h],ebp,edx,ebx,ecx,eax
		SHA1FUNC1 Message_Block[1Ch],edx,ecx,eax,ebx,ebp
		SHA1FUNC1 Message_Block[20h],ecx,ebx,ebp,eax,edx
		SHA1FUNC1 Message_Block[24h],ebx,eax,edx,ebp,ecx
		
		SHA1FUNC1 Message_Block[28h],eax,ebp,ecx,edx,ebx
		SHA1FUNC1 Message_Block[2Ch],ebp,edx,ebx,ecx,eax
		SHA1FUNC1 Message_Block[30h],edx,ecx,eax,ebx,ebp
		SHA1FUNC1 Message_Block[34h],ecx,ebx,ebp,eax,edx
		SHA1FUNC1 Message_Block[38h],ebx,eax,edx,ebp,ecx
		
		SHA1FUNC1 Message_Block[3Ch],eax,ebp,ecx,edx,ebx
		
		SHA1FUNC2 Message_Block[34h],Message_Block[20h],Message_Block[08h],Message_Block[00h],ebp,edx,ebx,ecx,eax
		SHA1FUNC2 Message_Block[38h],Message_Block[24h],Message_Block[0Ch],Message_Block[04h],edx,ecx,eax,ebx,ebp
		SHA1FUNC2 Message_Block[3Ch],Message_Block[28h],Message_Block[10h],Message_Block[08h],ecx,ebx,ebp,eax,edx
		SHA1FUNC2 Message_Block[00h],Message_Block[2Ch],Message_Block[14h],Message_Block[0Ch],ebx,eax,edx,ebp,ecx
		
		SHA1FUNC3 Message_Block[04h],Message_Block[30h],Message_Block[18h],Message_Block[10h],eax,ebp,ebx,ecx,edx
		SHA1FUNC3 Message_Block[08h],Message_Block[34h],Message_Block[1Ch],Message_Block[14h],ebp,edx,eax,ebx,ecx
		SHA1FUNC3 Message_Block[0Ch],Message_Block[38h],Message_Block[20h],Message_Block[18h],edx,ecx,ebp,eax,ebx
		SHA1FUNC3 Message_Block[10h],Message_Block[3Ch],Message_Block[24h],Message_Block[1Ch],ecx,ebx,edx,ebp,eax
		SHA1FUNC3 Message_Block[14h],Message_Block[00h],Message_Block[28h],Message_Block[20h],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC3 Message_Block[18h],Message_Block[04h],Message_Block[2Ch],Message_Block[24h],eax,ebp,ebx,ecx,edx
		SHA1FUNC3 Message_Block[1Ch],Message_Block[08h],Message_Block[30h],Message_Block[28h],ebp,edx,eax,ebx,ecx
		SHA1FUNC3 Message_Block[20h],Message_Block[0Ch],Message_Block[34h],Message_Block[2Ch],edx,ecx,ebp,eax,ebx
		SHA1FUNC3 Message_Block[24h],Message_Block[10h],Message_Block[38h],Message_Block[30h],ecx,ebx,edx,ebp,eax
		SHA1FUNC3 Message_Block[28h],Message_Block[14h],Message_Block[3Ch],Message_Block[34h],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC3 Message_Block[2Ch],Message_Block[18h],Message_Block[00h],Message_Block[38h],eax,ebp,ebx,ecx,edx
		SHA1FUNC3 Message_Block[30h],Message_Block[1Ch],Message_Block[04h],Message_Block[3Ch],ebp,edx,eax,ebx,ecx
		SHA1FUNC3 Message_Block[34h],Message_Block[20h],Message_Block[08h],Message_Block[00h],edx,ecx,ebp,eax,ebx
		SHA1FUNC3 Message_Block[38h],Message_Block[24h],Message_Block[0Ch],Message_Block[04h],ecx,ebx,edx,ebp,eax
		SHA1FUNC3 Message_Block[3Ch],Message_Block[28h],Message_Block[10h],Message_Block[08h],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC3 Message_Block[00h],Message_Block[2Ch],Message_Block[14h],Message_Block[0Ch],eax,ebp,ebx,ecx,edx
		SHA1FUNC3 Message_Block[04h],Message_Block[30h],Message_Block[18h],Message_Block[10h],ebp,edx,eax,ebx,ecx
		SHA1FUNC3 Message_Block[08h],Message_Block[34h],Message_Block[1Ch],Message_Block[14h],edx,ecx,ebp,eax,ebx
		SHA1FUNC3 Message_Block[0Ch],Message_Block[38h],Message_Block[20h],Message_Block[18h],ecx,ebx,edx,ebp,eax
		SHA1FUNC3 Message_Block[10h],Message_Block[3Ch],Message_Block[24h],Message_Block[1Ch],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC4 Message_Block[14h],Message_Block[00h],Message_Block[28h],Message_Block[20h],eax,ebp,ebx,ecx,edx
		SHA1FUNC4 Message_Block[18h],Message_Block[04h],Message_Block[2Ch],Message_Block[24h],ebp,edx,eax,ebx,ecx
		SHA1FUNC4 Message_Block[1Ch],Message_Block[08h],Message_Block[30h],Message_Block[28h],edx,ecx,ebp,eax,ebx
		SHA1FUNC4 Message_Block[20h],Message_Block[0Ch],Message_Block[34h],Message_Block[2Ch],ecx,ebx,edx,ebp,eax
		SHA1FUNC4 Message_Block[24h],Message_Block[10h],Message_Block[38h],Message_Block[30h],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC4 Message_Block[28h],Message_Block[14h],Message_Block[3Ch],Message_Block[34h],eax,ebp,ebx,ecx,edx
		SHA1FUNC4 Message_Block[2Ch],Message_Block[18h],Message_Block[00h],Message_Block[38h],ebp,edx,eax,ebx,ecx
		SHA1FUNC4 Message_Block[30h],Message_Block[1Ch],Message_Block[04h],Message_Block[3Ch],edx,ecx,ebp,eax,ebx
		SHA1FUNC4 Message_Block[34h],Message_Block[20h],Message_Block[08h],Message_Block[00h],ecx,ebx,edx,ebp,eax
		SHA1FUNC4 Message_Block[38h],Message_Block[24h],Message_Block[0Ch],Message_Block[04h],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC4 Message_Block[3Ch],Message_Block[28h],Message_Block[10h],Message_Block[08h],eax,ebp,ebx,ecx,edx
		SHA1FUNC4 Message_Block[00h],Message_Block[2Ch],Message_Block[14h],Message_Block[0Ch],ebp,edx,eax,ebx,ecx
		SHA1FUNC4 Message_Block[04h],Message_Block[30h],Message_Block[18h],Message_Block[10h],edx,ecx,ebp,eax,ebx
		SHA1FUNC4 Message_Block[08h],Message_Block[34h],Message_Block[1Ch],Message_Block[14h],ecx,ebx,edx,ebp,eax
		SHA1FUNC4 Message_Block[0Ch],Message_Block[38h],Message_Block[20h],Message_Block[18h],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC4 Message_Block[10h],Message_Block[3Ch],Message_Block[24h],Message_Block[1Ch],eax,ebp,ebx,ecx,edx
		SHA1FUNC4 Message_Block[14h],Message_Block[00h],Message_Block[28h],Message_Block[20h],ebp,edx,eax,ebx,ecx
		SHA1FUNC4 Message_Block[18h],Message_Block[04h],Message_Block[2Ch],Message_Block[24h],edx,ecx,ebp,eax,ebx
		SHA1FUNC4 Message_Block[1Ch],Message_Block[08h],Message_Block[30h],Message_Block[28h],ecx,ebx,edx,ebp,eax
		SHA1FUNC4 Message_Block[20h],Message_Block[0Ch],Message_Block[34h],Message_Block[2Ch],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC5 Message_Block[24h],Message_Block[10h],Message_Block[38h],Message_Block[30h],eax,ebp,ebx,ecx,edx
		SHA1FUNC5 Message_Block[28h],Message_Block[14h],Message_Block[3Ch],Message_Block[34h],ebp,edx,eax,ebx,ecx
		SHA1FUNC5 Message_Block[2Ch],Message_Block[18h],Message_Block[00h],Message_Block[38h],edx,ecx,ebp,eax,ebx
		SHA1FUNC5 Message_Block[30h],Message_Block[1Ch],Message_Block[04h],Message_Block[3Ch],ecx,ebx,edx,ebp,eax
		SHA1FUNC5 Message_Block[34h],Message_Block[20h],Message_Block[08h],Message_Block[00h],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC5 Message_Block[38h],Message_Block[24h],Message_Block[0Ch],Message_Block[04h],eax,ebp,ebx,ecx,edx
		SHA1FUNC5 Message_Block[3Ch],Message_Block[28h],Message_Block[10h],Message_Block[08h],ebp,edx,eax,ebx,ecx
		SHA1FUNC5 Message_Block[00h],Message_Block[2Ch],Message_Block[14h],Message_Block[0Ch],edx,ecx,ebp,eax,ebx
		SHA1FUNC5 Message_Block[04h],Message_Block[30h],Message_Block[18h],Message_Block[10h],ecx,ebx,edx,ebp,eax
		SHA1FUNC5 Message_Block[08h],Message_Block[34h],Message_Block[1Ch],Message_Block[14h],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC5 Message_Block[0Ch],Message_Block[38h],Message_Block[20h],Message_Block[18h],eax,ebp,ebx,ecx,edx
		SHA1FUNC5 Message_Block[10h],Message_Block[3Ch],Message_Block[24h],Message_Block[1Ch],ebp,edx,eax,ebx,ecx
		SHA1FUNC5 Message_Block[14h],Message_Block[00h],Message_Block[28h],Message_Block[20h],edx,ecx,ebp,eax,ebx
		SHA1FUNC5 Message_Block[18h],Message_Block[04h],Message_Block[2Ch],Message_Block[24h],ecx,ebx,edx,ebp,eax
		SHA1FUNC5 Message_Block[1Ch],Message_Block[08h],Message_Block[30h],Message_Block[28h],ebx,eax,ecx,edx,ebp
		
		SHA1FUNC5 Message_Block[20h],Message_Block[0Ch],Message_Block[34h],Message_Block[2Ch],eax,ebp,ebx,ecx,edx
		SHA1FUNC5 Message_Block[24h],Message_Block[10h],Message_Block[38h],Message_Block[30h],ebp,edx,eax,ebx,ecx
		SHA1FUNC5 Message_Block[28h],Message_Block[14h],Message_Block[3Ch],Message_Block[34h],edx,ecx,ebp,eax,ebx
		SHA1FUNC5 Message_Block[2Ch],Message_Block[18h],Message_Block[00h],Message_Block[38h],ecx,ebx,edx,ebp,eax
		SHA1FUNC5 Message_Block[30h],Message_Block[1Ch],Message_Block[04h],Message_Block[3Ch],ebx,eax,ecx,edx,ebp
		
		add	Intermediate_Hash[00h],eax
		add	Intermediate_Hash[04h],ebx
		add	Intermediate_Hash[08h],ecx
		add	Intermediate_Hash[0Ch],edx
		add	Intermediate_Hash[10h],ebp
		sub	Message_Length,40h	;每次64字节
		jmp	L1
	@@:
		cmp	ComputeFlag,0
		jz		@F
		mov	esp,ESP_Saved
		call	SHATail
		jmp	L1
	@@:
		mov	esp,ESP_Saved
		mov	edi,[esp+24h]
		mov	esi,offset Intermediate_Hash[00h]
		mov	ecx,5
	@@:	
		mov	eax,[esi+ecx*4-4]
		bswap	eax
		mov	[edi+ecx*4-4],eax
		loop	@B
		mov	ecx,19h
		xor	eax,eax
		mov	edi,offset Message_Block[00h]
		rep stosd
		popa
		retn	0Ch
SHA1_EnCode	endp

SHATail	proc
		mov	ecx,Message_Length
		mov	ComputeFlag,0
		mov	Message_Length,40h
		mov	eax,ecx
		mov	edi,offset Message_Block[00h]
		test	eax,eax
		jz		@F
		rep movsb
	@@:
		mov	ecx,eax
		mov	byte ptr [edi],80h
		sub	ecx,37h
		inc	edi
		neg	ecx
		jz		L1
		jns	@F
		add	Message_Length,40h
		add	ecx,40h
	@@:
		xor	al,al
		rep stosb
	L1:
		xor	edx,edx
		mov	eax,Total_Length
		mul	multiplier
		bswap	eax
		bswap	edx
		mov	[edi],edx
		mov	[edi+4],eax
		mov	esi,offset Message_Block[00h]
		ret
SHATail	endp

multiplier dd 8

SHA2_EnCode proc

		pusha
		mov	ESP_Saved,esp
		cld
		mov	ecx,[esp+28h]
		mov	esi,[esp+2Ch]
		mov	Total_Length,ecx
		or		ComputeFlag,0FFFFFFFFh
		mov	Message_Length,ecx
		mov	Intermediate_Hash[00h],12A57023h
		mov	Intermediate_Hash[04h],3EC24F15h
		mov	Intermediate_Hash[08h],4641DCEFh
		mov	Intermediate_Hash[0Ch],72354168h
		mov	Intermediate_Hash[10h],55129475h
	L1:	
		cmp	Message_Length,40h
		jb		@F
		mov	eax,Intermediate_Hash[00h]
		mov	ebx,Intermediate_Hash[04h]
		mov	ecx,Intermediate_Hash[08h]
		mov	edx,Intermediate_Hash[0Ch]
		mov	ebp,Intermediate_Hash[10h]
		
		SHA2FUNC1 Message_Block[00h],eax,ebp,ecx,edx,ebx
		SHA2FUNC1 Message_Block[04h],ebp,edx,ebx,ecx,eax
		SHA2FUNC1 Message_Block[08h],edx,ecx,eax,ebx,ebp
		SHA2FUNC1 Message_Block[0Ch],ecx,ebx,ebp,eax,edx
		SHA2FUNC1 Message_Block[10h],ebx,eax,edx,ebp,ecx
		
		SHA2FUNC1 Message_Block[14h],eax,ebp,ecx,edx,ebx
		SHA2FUNC1 Message_Block[18h],ebp,edx,ebx,ecx,eax
		SHA2FUNC1 Message_Block[1Ch],edx,ecx,eax,ebx,ebp
		SHA2FUNC1 Message_Block[20h],ecx,ebx,ebp,eax,edx
		SHA2FUNC1 Message_Block[24h],ebx,eax,edx,ebp,ecx
		
		SHA2FUNC1 Message_Block[28h],eax,ebp,ecx,edx,ebx
		SHA2FUNC1 Message_Block[2Ch],ebp,edx,ebx,ecx,eax
		SHA2FUNC1 Message_Block[30h],edx,ecx,eax,ebx,ebp
		SHA2FUNC1 Message_Block[34h],ecx,ebx,ebp,eax,edx
		SHA2FUNC1 Message_Block[38h],ebx,eax,edx,ebp,ecx
		
		SHA2FUNC1 Message_Block[3Ch],eax,ebp,ecx,edx,ebx
		
		SHA2FUNC2 Message_Block[34h],Message_Block[20h],Message_Block[08h],Message_Block[00h],ebp,edx,ebx,ecx,eax
		SHA2FUNC2 Message_Block[38h],Message_Block[24h],Message_Block[0Ch],Message_Block[04h],edx,ecx,eax,ebx,ebp
		SHA2FUNC2 Message_Block[3Ch],Message_Block[28h],Message_Block[10h],Message_Block[08h],ecx,ebx,ebp,eax,edx
		SHA2FUNC2 Message_Block[00h],Message_Block[2Ch],Message_Block[14h],Message_Block[0Ch],ebx,eax,edx,ebp,ecx
		
		SHA2FUNC3 Message_Block[04h],Message_Block[30h],Message_Block[18h],Message_Block[10h],eax,ebp,ebx,ecx,edx
		SHA2FUNC3 Message_Block[08h],Message_Block[34h],Message_Block[1Ch],Message_Block[14h],ebp,edx,eax,ebx,ecx
		SHA2FUNC3 Message_Block[0Ch],Message_Block[38h],Message_Block[20h],Message_Block[18h],edx,ecx,ebp,eax,ebx
		SHA2FUNC3 Message_Block[10h],Message_Block[3Ch],Message_Block[24h],Message_Block[1Ch],ecx,ebx,edx,ebp,eax
		SHA2FUNC3 Message_Block[14h],Message_Block[00h],Message_Block[28h],Message_Block[20h],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC3 Message_Block[18h],Message_Block[04h],Message_Block[2Ch],Message_Block[24h],eax,ebp,ebx,ecx,edx
		SHA2FUNC3 Message_Block[1Ch],Message_Block[08h],Message_Block[30h],Message_Block[28h],ebp,edx,eax,ebx,ecx
		SHA2FUNC3 Message_Block[20h],Message_Block[0Ch],Message_Block[34h],Message_Block[2Ch],edx,ecx,ebp,eax,ebx
		SHA2FUNC3 Message_Block[24h],Message_Block[10h],Message_Block[38h],Message_Block[30h],ecx,ebx,edx,ebp,eax
		SHA2FUNC3 Message_Block[28h],Message_Block[14h],Message_Block[3Ch],Message_Block[34h],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC3 Message_Block[2Ch],Message_Block[18h],Message_Block[00h],Message_Block[38h],eax,ebp,ebx,ecx,edx
		SHA2FUNC3 Message_Block[30h],Message_Block[1Ch],Message_Block[04h],Message_Block[3Ch],ebp,edx,eax,ebx,ecx
		SHA2FUNC3 Message_Block[34h],Message_Block[20h],Message_Block[08h],Message_Block[00h],edx,ecx,ebp,eax,ebx
		SHA2FUNC3 Message_Block[38h],Message_Block[24h],Message_Block[0Ch],Message_Block[04h],ecx,ebx,edx,ebp,eax
		SHA2FUNC3 Message_Block[3Ch],Message_Block[28h],Message_Block[10h],Message_Block[08h],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC3 Message_Block[00h],Message_Block[2Ch],Message_Block[14h],Message_Block[0Ch],eax,ebp,ebx,ecx,edx
		SHA2FUNC3 Message_Block[04h],Message_Block[30h],Message_Block[18h],Message_Block[10h],ebp,edx,eax,ebx,ecx
		SHA2FUNC3 Message_Block[08h],Message_Block[34h],Message_Block[1Ch],Message_Block[14h],edx,ecx,ebp,eax,ebx
		SHA2FUNC3 Message_Block[0Ch],Message_Block[38h],Message_Block[20h],Message_Block[18h],ecx,ebx,edx,ebp,eax
		SHA2FUNC3 Message_Block[10h],Message_Block[3Ch],Message_Block[24h],Message_Block[1Ch],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC4 Message_Block[14h],Message_Block[00h],Message_Block[28h],Message_Block[20h],eax,ebp,ebx,ecx,edx
		SHA2FUNC4 Message_Block[18h],Message_Block[04h],Message_Block[2Ch],Message_Block[24h],ebp,edx,eax,ebx,ecx
		SHA2FUNC4 Message_Block[1Ch],Message_Block[08h],Message_Block[30h],Message_Block[28h],edx,ecx,ebp,eax,ebx
		SHA2FUNC4 Message_Block[20h],Message_Block[0Ch],Message_Block[34h],Message_Block[2Ch],ecx,ebx,edx,ebp,eax
		SHA2FUNC4 Message_Block[24h],Message_Block[10h],Message_Block[38h],Message_Block[30h],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC4 Message_Block[28h],Message_Block[14h],Message_Block[3Ch],Message_Block[34h],eax,ebp,ebx,ecx,edx
		SHA2FUNC4 Message_Block[2Ch],Message_Block[18h],Message_Block[00h],Message_Block[38h],ebp,edx,eax,ebx,ecx
		SHA2FUNC4 Message_Block[30h],Message_Block[1Ch],Message_Block[04h],Message_Block[3Ch],edx,ecx,ebp,eax,ebx
		SHA2FUNC4 Message_Block[34h],Message_Block[20h],Message_Block[08h],Message_Block[00h],ecx,ebx,edx,ebp,eax
		SHA2FUNC4 Message_Block[38h],Message_Block[24h],Message_Block[0Ch],Message_Block[04h],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC4 Message_Block[3Ch],Message_Block[28h],Message_Block[10h],Message_Block[08h],eax,ebp,ebx,ecx,edx
		SHA2FUNC4 Message_Block[00h],Message_Block[2Ch],Message_Block[14h],Message_Block[0Ch],ebp,edx,eax,ebx,ecx
		SHA2FUNC4 Message_Block[04h],Message_Block[30h],Message_Block[18h],Message_Block[10h],edx,ecx,ebp,eax,ebx
		SHA2FUNC4 Message_Block[08h],Message_Block[34h],Message_Block[1Ch],Message_Block[14h],ecx,ebx,edx,ebp,eax
		SHA2FUNC4 Message_Block[0Ch],Message_Block[38h],Message_Block[20h],Message_Block[18h],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC4 Message_Block[10h],Message_Block[3Ch],Message_Block[24h],Message_Block[1Ch],eax,ebp,ebx,ecx,edx
		SHA2FUNC4 Message_Block[14h],Message_Block[00h],Message_Block[28h],Message_Block[20h],ebp,edx,eax,ebx,ecx
		SHA2FUNC4 Message_Block[18h],Message_Block[04h],Message_Block[2Ch],Message_Block[24h],edx,ecx,ebp,eax,ebx
		SHA2FUNC4 Message_Block[1Ch],Message_Block[08h],Message_Block[30h],Message_Block[28h],ecx,ebx,edx,ebp,eax
		SHA2FUNC4 Message_Block[20h],Message_Block[0Ch],Message_Block[34h],Message_Block[2Ch],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC5 Message_Block[24h],Message_Block[10h],Message_Block[38h],Message_Block[30h],eax,ebp,ebx,ecx,edx
		SHA2FUNC5 Message_Block[28h],Message_Block[14h],Message_Block[3Ch],Message_Block[34h],ebp,edx,eax,ebx,ecx
		SHA2FUNC5 Message_Block[2Ch],Message_Block[18h],Message_Block[00h],Message_Block[38h],edx,ecx,ebp,eax,ebx
		SHA2FUNC5 Message_Block[30h],Message_Block[1Ch],Message_Block[04h],Message_Block[3Ch],ecx,ebx,edx,ebp,eax
		SHA2FUNC5 Message_Block[34h],Message_Block[20h],Message_Block[08h],Message_Block[00h],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC5 Message_Block[38h],Message_Block[24h],Message_Block[0Ch],Message_Block[04h],eax,ebp,ebx,ecx,edx
		SHA2FUNC5 Message_Block[3Ch],Message_Block[28h],Message_Block[10h],Message_Block[08h],ebp,edx,eax,ebx,ecx
		SHA2FUNC5 Message_Block[00h],Message_Block[2Ch],Message_Block[14h],Message_Block[0Ch],edx,ecx,ebp,eax,ebx
		SHA2FUNC5 Message_Block[04h],Message_Block[30h],Message_Block[18h],Message_Block[10h],ecx,ebx,edx,ebp,eax
		SHA2FUNC5 Message_Block[08h],Message_Block[34h],Message_Block[1Ch],Message_Block[14h],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC5 Message_Block[0Ch],Message_Block[38h],Message_Block[20h],Message_Block[18h],eax,ebp,ebx,ecx,edx
		SHA2FUNC5 Message_Block[10h],Message_Block[3Ch],Message_Block[24h],Message_Block[1Ch],ebp,edx,eax,ebx,ecx
		SHA2FUNC5 Message_Block[14h],Message_Block[00h],Message_Block[28h],Message_Block[20h],edx,ecx,ebp,eax,ebx
		SHA2FUNC5 Message_Block[18h],Message_Block[04h],Message_Block[2Ch],Message_Block[24h],ecx,ebx,edx,ebp,eax
		SHA2FUNC5 Message_Block[1Ch],Message_Block[08h],Message_Block[30h],Message_Block[28h],ebx,eax,ecx,edx,ebp
		
		SHA2FUNC5 Message_Block[20h],Message_Block[0Ch],Message_Block[34h],Message_Block[2Ch],eax,ebp,ebx,ecx,edx
		SHA2FUNC5 Message_Block[24h],Message_Block[10h],Message_Block[38h],Message_Block[30h],ebp,edx,eax,ebx,ecx
		SHA2FUNC5 Message_Block[28h],Message_Block[14h],Message_Block[3Ch],Message_Block[34h],edx,ecx,ebp,eax,ebx
		SHA2FUNC5 Message_Block[2Ch],Message_Block[18h],Message_Block[00h],Message_Block[38h],ecx,ebx,edx,ebp,eax
		SHA2FUNC5 Message_Block[30h],Message_Block[1Ch],Message_Block[04h],Message_Block[3Ch],ebx,eax,ecx,edx,ebp
		
		add	Intermediate_Hash[00h],eax
		add	Intermediate_Hash[04h],ebx
		add	Intermediate_Hash[08h],ecx
		add	Intermediate_Hash[0Ch],edx
		add	Intermediate_Hash[10h],ebp
		sub	Message_Length,40h
		jmp	L1
	@@:
		cmp	ComputeFlag,0
		jz		@F
		mov	esp,ESP_Saved
		call	SHATail
		jmp	L1

	@@:
		mov	esp,ESP_Saved
		mov	edi,[esp+24h]
		mov	esi,offset Intermediate_Hash[00h]
		mov	ecx,5

	@@:	
		mov	eax,[esi+ecx*4-4]
		bswap	eax
		mov	[edi+ecx*4-4],eax
		loop	@B
		mov	ecx,19h
		xor	eax,eax
		mov	edi,offset Message_Block[00h]
		rep 	stosd
		popa
		ret 0Ch
SHA2_EnCode	endp

; ---------------------------------------------------------------------------

start:
	invoke GetModuleHandle,NULL
	mov    hInstance,eax
	invoke GetCommandLine
	invoke InitCommonControls
	mov    CommandLine,eax
	invoke  LoadLibrary,addr LibFileName
	.if (eax)
		mov	hUFS2XXLibModule,eax
		invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
		.if (ftHandle)
			invoke FT_Close,ftHandle
		.endif
		invoke  FreeLibrary,hUFS2XXLibModule
	.else
		invoke  MessageBox,NULL,addr NoUFS2XX,addr szError,MB_OK or MB_ICONERROR
	.endif

	invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
	LOCAL wc:WNDCLASSEX
	LOCAL msg:MSG
	
	mov   wc.cbSize,SIZEOF WNDCLASSEX
	mov   wc.style,CS_HREDRAW or CS_VREDRAW
	mov   wc.lpfnWndProc,OFFSET MainDlgFunc
	mov   wc.cbClsExtra,NULL
	mov   wc.cbWndExtra,DLGWINDOWEXTRA
	push  hInst
	pop   wc.hInstance
	mov   wc.hbrBackground,COLOR_BTNFACE+1
	mov   wc.lpszMenuName,NULL
	mov   wc.lpszClassName,OFFSET ClassName
	
	invoke LoadIcon,hInstance,IDI_ICON
	mov   wc.hIcon,eax
	mov   wc.hIconSm,eax
	
	invoke LoadCursor,NULL,IDC_ARROW
	mov   wc.hCursor,eax
	
	invoke RegisterClassEx,addr wc
	invoke  CreateDialogParam,hInstance,IDC_MainDlg,NULL,addr MainDlgFunc,NULL
	mov   hWindow ,eax
	
	invoke ShowWindow,hWindow,SW_SHOWNORMAL

⌨️ 快捷键说明

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