📄 ufstool.asm
字号:
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 + -