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

📄 ufstool.asm

📁 这可是一个重量级工具
💻 ASM
📖 第 1 页 / 共 5 页
字号:
EEPROM:
		invoke	IsDlgButtonChecked,hWindow,IDC_CHK_EEPROM
		cmp	eax,BST_CHECKED
		jnz	EE93c46
		invoke	SetDlgItemText,hWnd,IDC_LBL_ReadAddr,addr szFlashingEEProm
		invoke	SendDlgItemMessage,hWnd,IDC_PGB_Flash,PBM_SETRANGE,0,1C00000h
		invoke	SendDlgItemMessage,hWnd,IDC_PGB_Flash,PBM_SETPOS,0,0
		xor	ecx,ecx

		.Repeat
			mov	eax,FlashNoCompleted
			or		eax,eax
			jnz	ErrDone
			mov	CKSum,0
			push	ecx
			lea	edi,FTOutBuf
			mov	byte ptr [edi],50h
			mov	[edi+1],ch
			mov	[edi+2],cl
			movzx	eax,ch
			add	CKSum,eax
			movzx	eax,cl
			add	CheckSum,eax
			mov	byte ptr [edi+3],10h
			add	CKSum,10h
			lea	esi,EEPROMBuffer
			add	esi,ecx
			add	edi,4
			pusha
			invoke	SendDlgItemMessage,hWnd,IDC_PGB_Flash,PBM_SETPOS,ecx,0
			popa
			mov	ecx,10h
			xor	eax,eax
			cld
		@@:	
			lodsb
			add	CKSum,eax
			stosb
			loop	@B
			xor	eax,eax
			sub	eax,CKSum
			mov	[edi],al
			invoke	WriteThenRead,21,1,1000,1
			pop	ecx
			lea	eax,FTInBuf
			movzx	eax,byte ptr [eax]
			cmp	al,3Eh
			jz		@F
			invoke	MessageBox,hWnd,addr szErrFlashingEEPROM,addr szError,MB_OK or MB_ICONERROR
			jmp	ErrDone
		@@:
			or		ecx,ecx
			jnz	@F
			mov	eax,RestoreOrFix
			or		eax,eax
			jnz	@F
			add	ecx,0F0h
		@@:
			add	ecx,10h
		.Until (ecx >= 200h)

EE93c46:
		invoke	IsDlgButtonChecked,hWindow,IDC_CHK_93c46
		cmp	eax,BST_CHECKED
		jnz	OKDone
		mov	eax,RestoreOrFix
		or		eax,eax
		jz		@F
		lea	eax,Manufacturer
		mov	pProgramData.Manufacturer,eax
		lea	eax,ManufacturerID
		mov	pProgramData.ManufacturerID,eax
		lea	eax,Description
		mov	pProgramData.Description,eax
		lea	eax,SerialNumber
		mov	pProgramData.SerialNumber,eax
		lea	eax,pProgramData
		mov	dword ptr [eax],0	;Signature1
		mov	dword ptr [eax+4],0FFFFFFFFh	;Signature2
		mov	dword ptr [eax+8],0	;Version
		invoke	FT_EE_Read,ftHandle,eax
		or		eax,eax
		jnz	ErrDone
		lea	eax,szUfs3	
		mov	pProgramData.Manufacturer,eax
		lea	eax,szUfs3Sarassoft
		mov	pProgramData.Description,eax
		lea	eax,FTDeviceStrSN
		mov	pProgramData.SerialNumber,eax
		movzx	eax,word ptr [eax]
		mov	dword ptr ManufacturerID,eax
		lea	eax,pProgramData
		mov	dword ptr [eax],0	;Signature1
		mov	dword ptr [eax+4],0FFFFFFFFh	;Signature2
		mov	dword ptr [eax+8],0	;Version
		invoke	FT_EE_Program,ftHandle,eax 
		or	eax,eax
		jnz	ErrDone
		jmp	short OKDone
	@@:	
		invoke	SetDlgItemText,hWnd,IDC_LBL_ReadAddr,addr szFlashing93c46
		xor	ecx,ecx
		lea	edi,EE93c46Buffer

		.Repeat
			push	ecx
			mov	ax,[edi+ecx*2]
			invoke	FT_WriteEE,ftHandle,ecx,eax
			pop	ecx
			or	eax,eax
			jnz	ErrDone
			inc	ecx
		.Until (ecx >= 40h)

OKDone:	
		mov	eax,1
		jmp	short loc_405FE9

ErrDone:	
		xor	eax,eax

loc_405FE9:
		push	eax	
		invoke	MessageBeep,MB_OK
		pop	eax
		invoke	SendMessage,hWnd,WM_CLOSE,NULL,eax
		invoke	ExitThread,0
		ret
FlashingFunc	endp

CalcActCode proc arg_0:DWORD,SN:DWORD,Seed:DWORD,arg_C:DWORD,lpBuffer:LPSTR,Ver:DWORD

	LOCAL var_4:DWORD
	LOCAL EEP_SN:DWORD
	LOCAL SN_EXT:DWORD
	
		pusha
		mov	SN_EXT,0
		mov	eax,SN
		mov	EEP_SN,eax
		and	eax,0FFFFFFh
		mov	ecx,0FDE8h
		cdq
		idiv	ecx
		mov	SN_EXT,eax
		mov	EEP_SN,edx
		mov	eax,Seed
		mov	var_4,eax
		mov	eax,Ver
		or		eax,eax
		jz		@F
		mov	eax,SN
		lea	edi,FTInBuf
		mov	[edi],eax
		shr	eax,18h
		mov	ecx,arg_C
		add	ecx,SN_EXT
		xor	eax,ecx
		mov	[edi+3],al
		mov	eax,arg_0
		shr	eax,5
		mov	[edi+4],al
		mov	eax,arg_0
		xor	al,0CAh
		mov	[edi+5],al
		mov	eax,arg_0
		shr	eax,11h
		mov	[edi+6],al
		mov	eax,arg_0
		shr	eax,17h
		mov	ecx,arg_C
		add	ecx,SN_EXT
		xor	eax,ecx
		xor	al,0DAh
		mov	[edi+7],al
		push	edi
		push	8
		push	edi
		call	SHA2_EnCode
		mov	ebx,arg_C
		add	ebx,SN_EXT
		imul	ebx,4217853h
		xor	[edi],ebx
		shr	ebx,0Fh
		xor	[edi+7],bl
		mov	al,[edi+2]
		shl	eax,8
		mov	al,[edi+1]
		shl	eax,8
		mov	al,[edi]
		shl	eax,8
		mov	al,[edi+7]
		xor	eax,Seed
		mov	var_4,eax
	@@:
		mov	eax,EEP_SN
		mov	ebx,0FFh
		sub	bl,ah
		xor	bl,al
		movzx	eax,bl
		mov	ecx,8
	Lop1:	
		shr	eax,1
		jnb	@F
		xor	eax,var_4
	@@:
		loop	Lop1
		lea	edi,dword_40D8DC
		mov	[edi],eax
		mov	ebx,eax
		mov	eax,arg_C
		mov	[edi+8],al
		mov	eax,EEP_SN
		movzx	eax,al
		mov	ecx,8
	Lop2:	
		shr	eax,1
		jnb	@F
		xor	eax,var_4
	@@:
		loop	Lop2
		mov	[edi+4],eax
		mov	edx,lpBuffer
		or		edx,edx
		jz		@F
		mov	ecx,arg_C
		and	ecx,0FFh
		bswap	ebx
		bswap	eax
		invoke	wsprintf,lpBuffer,addr szFmt2,ecx,ebx,eax
@@:
		popa
		ret
CalcActCode	endp

FBICalc	proc 

	LOCAL var_4:dword

		mov	OFNA .lStructSize,SIZEOF OPENFILENAMEA
		push	hWindow
		pop	OFNA .hwndOwner
		push	hInstance
		pop	OFNA .hInstance
		mov	OFNA .lpstrFilter,offset szReqFile ; "Request files (*.req)"
		mov	OFNA .nFilterIndex,0
		mov	OFNA .lpstrFile,offset FileName
		mov	OFNA .nMaxFile,104h
		mov	OFNA .Flags,OFN_LONGNAMES or OFN_EXPLORER or OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_HIDEREADONLY
		invoke	GetOpenFileName,addr OFNA 
		cmp	eax,1
		jnz	Done
		invoke	CreateFile,addr FileName,GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL
		cmp	eax,-1
		jz		ErrorCreateFile
		mov	hFile,eax
		invoke	GetFileSize,hFile,0
		cmp	eax,100h
		jz		@F
		invoke	CloseHandle,hFile
		invoke 	MessageBox,hWindow,addr szErrBadSizeOfReqFile,addr szError,MB_ICONERROR or MB_OK
		jmp	Done

@@:
		invoke	ReadFile,hFile,addr ReqFileBuffer,100h,addr NumberOfBytesRead,0
		invoke	CloseHandle,hFile
		lea	esi,ReqFileBuffer+0A0h
		lea	edi,FTInBuf
		xor	ecx,ecx

@@:
		mov	al,[ecx+esi]
		lea	ebx,byte_40819F
		movzx	ebx,byte ptr [ecx+ebx]
		mov	[ebx+edi],al
		inc	ecx
		cmp	ecx,20h
		jb		@B
		lea	esi,byte_40805F
		lea	edi,FTInBuf
		movzx	ebx,byte ptr [edi+0Ah]
		add	esi,ebx
		xor	ecx,ecx

@@:	
		mov	al,[ecx+esi]
		xor	[ecx+edi],al
		inc	ecx
		cmp	ecx,20h
		jb		@B
		mov	[edi+0Ah],bl
		lea	esi,FTInBuf
		lea	edi,ReqFileBuffer+0A0h
		mov	ecx,20h
		cld
		rep 	movsb
		lea	eax,FTInBuf
		push	eax
		push	0Ch
		add	eax,0Ch
		push	eax
		call	SHA1_EnCode
		lea	esi,ReqFileBuffer+0A0h
		lea	edi,FTInBuf
		mov	ecx,20h
		repe 	cmpsb
		jz		@F
		invoke 	MessageBox,hWindow,addr szErrReqFileCorrupted,addr szError,MB_ICONERROR or MB_OK
		jmp	Done

@@:
		lea	esi,ReqFileBuffer+40h
		lea	edi,FTInBuf
		xor	ecx,ecx

@@:	
		mov	al,[ecx+esi]
		lea	ebx,byte_40815F
		movzx	ebx,byte ptr [ecx+ebx]
		mov	[ebx+edi],al
		inc	ecx
		cmp	ecx,40h
		jb		@B
		lea	esi,byte_40805F
		lea	edi,FTInBuf
		movzx	ebx,byte ptr [edi+16h]
		add	esi,ebx
		xor	ecx,ecx

@@:	
		mov	al,[ecx+esi]
		xor	[ecx+edi],al
		inc	ecx
		cmp	ecx,40h
		jb		@B
		mov	[edi+16h],bl
		lea	esi,FTInBuf
		lea	edi,ReqFileBuffer+40h
		mov	ecx,40h
		cld
		rep 	movsb
		lea	eax,FTInBuf
		push	eax
		push	2Ch
		add	eax,2Ch
		push	eax
		call	SHA2_EnCode
		lea	esi,ReqFileBuffer+40h
		lea	edi,FTInBuf
		mov	ecx,40h
		repe 	cmpsb
		jz		@F
		invoke 	MessageBox,hWindow,addr szErrReqFileCorrupted,addr szError,MB_ICONERROR or MB_OK
		jmp	Done

@@:	
		lea	esi,ReqFileBuffer+0A0h
		lea	edi,FTInBuf
		mov	eax,[esi]
		mov	[edi],eax
		mov	eax,[esi+4]
		mov	[edi+8],eax
		movzx	ebx,ax
		movzx	eax,byte ptr [esi+6]
		imul	eax,0FDE8h
		add	eax,ebx
		mov	[ebp+var_4],eax
		mov	ax,[esi+8]
		mov	[edi+12h],ax
		lea	esi,ReqFileBuffer+40h
		mov	eax,[esi+1Bh]
		mov	[edi+4],eax
		mov	eax,[esi+6]
		mov	[edi+0Ch],eax
		mov	byte ptr [edi+0Fh],5Ah
		mov	ax,[esi+4]
		mov	[edi+10h],ax
		lea	eax,FTInBuf
		push	eax
		push	14h
		add	eax,14h
		push	eax
		call	SHA1_EnCode
		lea	eax,FTInBuf
		push	eax
		push	28h
		add	eax,28h
		push	eax
		call	SHA2_EnCode
		lea	esi,dword_410768
		lea	edi,FTInBuf
		mov	ecx,14h
		cld
		rep movsb

Lop1:
		call	GetTickCount
		mov	RandomSeed,eax
		lea	edi,FTOutBuf
		mov	ecx,100h

@@:
		invoke	Random,100h
		or		al,al
		jz		@B
		mov	[ecx+edi-1],al
		loop	@B
		lea	edi,FTOutBuf
		movzx	ecx,b

⌨️ 快捷键说明

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