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

📄 test.asm

📁 一个SHA加密库文件
💻 ASM
字号:
;MD5算法 Message-Digest Algorithm

.386
.Model Flat, StdCall
Option Casemap :None

include  windows.inc
include  user32.inc
include  kernel32.inc
include  gdi32.inc
include comdlg32.inc

includelib  user32.lib
includelib  kernel32.lib
includelib  gdi32.lib
includelib  comdlg32.lib

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;		包含函数库
include  sha1\sha1.inc
includelib  sha1\sha1.lib
;include  sha256\sha256.inc
;includelib  sha256\sha256.lib
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

IDC_BUTTON	equ 1
IDC_EDIT	equ 2

.code
WindowsName		db	"sha256计算例程",0
MainClassName		db	"WinASM_Class",0
.data?
hWndMain		dd	?
hInstance		dd	?
msg			MSG	<?>
hwEdit			dd	?
FileName	db	MAX_PATH dup (?)
.code
;===============
FileHash proc uses ebx esi edi
	local	@hFile,pSrcData,SrcSize,DecDat[8]
	local	TxtBuf[64]:byte
			invoke	CreateFileA,addr FileName,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
			mov	@hFile,eax
			inc	eax
			je	Result
			invoke	GetFileSize,eax,0
			mov	SrcSize,eax
			invoke	GlobalAlloc,GMEM_FIXED,eax
			mov	pSrcData,eax
			invoke	ReadFile,@hFile,pSrcData,SrcSize,addr SrcSize,0
			invoke	CloseHandle,@hFile
	;----------
			invoke	SHA1_GetCode,pSrcData,SrcSize,addr DecDat


			xor	esi,esi
ds01:			mov	al,byte ptr DecDat[esi]
			mov	ah,al
			shr	al,4
			and	ah,0Fh
			cmp	ah,9
			jbe	ds02
			add	ah,7
ds02:			cmp	al,9
			jbe	ds03
			add	al,7
ds03:			add	ax,3030h
			mov	word ptr TxtBuf[2*esi],ax
			inc	esi
			cmp	esi,20;32
			jb	ds01
			mov	TxtBuf[2*esi],0
			invoke	SetWindowText,hwEdit,addr TxtBuf
	;----------
			invoke	GlobalFree,pSrcData
Result:			ret

FileHash endp
;===============
FilterString	db	"全部文件(*.*)",0,"*.*",0,0
;-------------------------------------
OpenFileNameDlg	proc
	local	ofn:OPENFILENAME
			invoke	RtlZeroMemory,addr ofn,sizeof ofn
			mov	ofn.lStructSize,sizeof ofn
			push	hWndMain
			pop	ofn.hwndOwner
			push	hInstance
			pop	ofn.hInstance
			mov	ofn.lpstrFilter,offset FilterString
			mov	ofn.lpstrFile,offset FileName
			mov	byte ptr [FileName],0
			mov	ofn.nMaxFile,sizeof FileName
			mov	ofn.Flags,OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
			invoke	GetOpenFileName,addr ofn
			ret
OpenFileNameDlg	endp
;===============
OnMainCommand proc wParam
			cmp	wParam,IDC_BUTTON
			jnz	Result
			invoke	OpenFileNameDlg
			or	eax,eax
			jz	Result
			invoke	FileHash
Result:			ret
OnMainCommand endp

;==================================
szButton	db	"button",0
szEdit		db	"edit",0
szTest		db	"选择文件",0
OnMainCreat proc hWnd
	local	@font
	local	@rc:RECT
			invoke	GetStockObject,DEFAULT_GUI_FONT
			mov	@font,eax
			invoke	GetClientRect,hWnd,addr @rc
			invoke	CreateWindowEx,0,addr szButton,addr szTest,\
				WS_CHILD or WS_TABSTOP or WS_VISIBLE,\
				150,3,100,25,hWnd,IDC_BUTTON,hInstance,NULL
			invoke	SendMessage,eax,WM_SETFONT,@font,0
			mov	edx,@rc.bottom
			sub	edx,30
			invoke	CreateWindowEx,WS_EX_CLIENTEDGE,addr szEdit,0,\
				WS_CHILD or WS_TABSTOP or WS_VISIBLE or ES_MULTILINE,\
				0,30,@rc.right,edx,hWnd,IDC_EDIT,hInstance,NULL
			mov	hwEdit,eax
			ret
OnMainCreat endp
;=================================================
WndProc		proc hWnd,uMsg,wParam,lParam
			mov	eax,uMsg
Msg_Create:		cmp	eax,WM_CREATE
			jnz	Msg_Command
			invoke	OnMainCreat,hWnd
			jmp	RetFalse
Msg_Command:		cmp	eax,WM_COMMAND
			jnz	Msg_Destroy
			invoke	OnMainCommand,wParam
			jmp	RetFalse
Msg_Destroy:		cmp	eax,WM_DESTROY
			jnz	Msg_DefWin
			invoke	PostQuitMessage,NULL
			jmp	RetFalse
Msg_DefWin:		leave
			jmp	DefWindowProc
RetFalse:		sub	eax,eax
Result:			ret
WndProc		endp
;==================================
WinMain		proc uses ebx esi edi
		local	@rect1:RECT,@rect2:RECT
		local	@wc:WNDCLASSEX

			invoke	RtlZeroMemory,addr @wc,sizeof @wc
			mov	@wc.cbSize,sizeof WNDCLASSEX
			mov	@wc.style,CS_HREDRAW or CS_VREDRAW or CS_BYTEALIGNWINDOW
			mov	@wc.lpfnWndProc,offset WndProc
			push	hInstance
			pop	@wc.hInstance
			mov	@wc.hbrBackground,COLOR_BTNFACE+1
			mov	@wc.lpszMenuName,NULL
			mov	@wc.lpszClassName,offset MainClassName
			invoke	LoadIcon,0,7F05h
			mov	@wc.hIcon,eax
			invoke	LoadCursor,NULL,IDC_ARROW
			mov	@wc.hCursor,eax
			invoke	RegisterClassEx,addr @wc

			invoke	CreateWindowEx,NULL,addr MainClassName,addr WindowsName,\
			WS_CAPTION OR WS_SYSMENU OR WS_MINIMIZEBOX or WS_VISIBLE,\
			CW_USEDEFAULT,CW_USEDEFAULT,450,300,NULL,NULL,hInstance,NULL

			mov	hWndMain,eax

			ret
WinMain		endp
;=========================================
start:			invoke	GetModuleHandle,NULL
			mov	hInstance,eax
			call	WinMain
			invoke	UpdateWindow,hWndMain
StartLoop:		invoke	GetMessage,addr msg,NULL,0,0
			cmp	eax,0
			je	ExitLoop
			invoke	TranslateMessage,addr msg
			invoke	DispatchMessage,addr msg
			jmp	StartLoop
ExitLoop:		mov	eax,msg.wParam
			invoke	ExitProcess,eax
;=======================================
		end	start
Message-Digest Algorithm

B7ABA441912A91772E5441C76C361DE68EAB867C79017570D8470C59A244D1A2

⌨️ 快捷键说明

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