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

📄 win.asm

📁 用ASM实现Server及sql操作
💻 ASM
📖 第 1 页 / 共 2 页
字号:
			.endif
		.elseif ax==FD_ACCEPT
			mov addrsize,sizeof addrsock
			.if uMsg == WM_SOCKET_LOGON1
				invoke accept,sSockLogon1,addr addrsock,addr addrsize
				invoke CallChangeSockAttrib,eax
			.elseif uMsg == WM_SOCKET_LOGON2
				invoke accept,sSockLogon2,addr addrsock,addr addrsize
				invoke CallChangeSockAttrib,eax
			.elseif uMsg == WM_SOCKET_LOGON3
				invoke accept,sSockLogon3,addr addrsock,addr addrsize
				invoke CallChangeSockAttrib,eax
			.elseif uMsg == WM_SOCKET_LOGON4
				invoke accept,sSockLogon4,addr addrsock,addr addrsize
				invoke CallChangeSockAttrib,eax
			.endif
		.elseif ax==FD_READ
			invoke recv,wParam,addr TmpBuff,128,0
			.if eax != 128
				invoke CallCloseSocket,wParam,hWin
				ret
			.endif
			invoke CallCrypt,addr TmpBuff,63,2eh,0d9h
			.if TmpBuff != 15h && TmpBuff != 25h && TmpBuff != 26h && TmpBuff != 36h
				invoke CallCloseSocket,wParam,hWin
				ret
			.endif
			.if TmpBuff == 15h
				invoke CallGetUserName,addr TmpBuff+1,dword ptr TmpBuff+51
			.elseif TmpBuff == 25h
				mov addrsize,sizeof addrsock
				invoke getpeername,wParam,addr addrsock,addr addrsize
				invoke MemCopy,addr addrsock.sa_data+2,addr TmpBuff+55,4
				invoke CallGetNetName,addr TmpBuff+1,dword ptr TmpBuff+51,dword ptr TmpBuff+55,addr TmpBuff+100
			.elseif TmpBuff == 26h
				invoke CallUnCalcProc,addr TmpBuff+1,63
				invoke CallUpdateUserNum,addr TmpBuff+5,dword ptr TmpBuff+55
			.elseif TmpBuff == 36h
				mov addrsize,sizeof addrsock
				invoke getpeername,wParam,addr addrsock,addr addrsize
				invoke CallUnCalcProc,addr TmpBuff+1,63
				invoke CallUpdateNetNum,addr TmpBuff+5,dword ptr addrsock.sa_data+2
			.endif
			.if eax == 0
				.if TmpBuff == 15h || TmpBuff == 25h
					.if TmpBuff == 15h
						mov TmpBuff+64,26h
					.else
						mov TmpBuff+64,36h
					.endif
					invoke lstrcpy,addr TmpBuff+69,addr TmpBuff+1
					invoke lstrcpy,addr TmpBuff+10,addr TmpBuff+100
					invoke MemCopy,addr TmpBuff+51,addr TmpBuff+119,4
					invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
					invoke GetTickCount
					invoke CallCalcProc,addr TmpBuff+65,63,eax
					invoke CallUnCrypt,addr TmpBuff+64,63,2eh,0d9h
					invoke CallUnCrypt,addr TmpBuff,63,2eh,0d9h
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
					invoke ShellSqlGetTipInfo,STEXT('SELECT ShowTip,TipText FROM T_TipInfo'),addr TmpBuff+10
					mov TmpBuff+9,al
					invoke GetTickCount
					mov edx,dword ptr TmpBuff+101
					xor edx,eax
					mov dword ptr TmpBuff+98,edx
					xor eax,999h
					mov dword ptr TmpBuff+102,eax
				.endif
			.else
				invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名或密码。')
				invoke CallUnCrypt,addr TmpBuff,63,2eh,0d9h
			.endif
			invoke send,wParam,addr TmpBuff,128,0
			invoke CallCloseSocket,wParam,hWin
		.elseif ax == FD_CLOSE
			invoke CallCloseSocket,wParam,hWin
		.endif
		xor eax,eax
		ret
	.elseif eax == WM_SOCKET_QUERY			; 查询次数/密码验证/个人登录
		mov eax,lParam
		mov edx,eax
		shr edx,16
		.if dx != 0
			.if ax == FD_ACCEPT
				invoke closesocket,wParam
			.else
				invoke CallCloseSocket,wParam,hWin
			.endif
		.elseif ax==FD_ACCEPT
			mov addrsize,sizeof addrsock
			invoke accept,sSockQuery,addr addrsock,addr addrsize
			invoke CallChangeSockAttrib,eax
		.elseif ax==FD_READ
			invoke recv,wParam,addr TmpBuff,128,0
			.if eax != 128
				invoke CallCloseSocket,wParam,hWin
				ret
			.endif
			invoke CallCrypt,addr TmpBuff,56,2eh,0d9h
			.if TmpBuff != 12h && TmpBuff != 22h && TmpBuff != 23h && TmpBuff != 34h
				invoke CallCloseSocket,wParam,hWin
				ret
			.endif
			.if TmpBuff == 12h				; 查询次数
				invoke CallGetUserInfo,addr TmpBuff+1,dword ptr TmpBuff+51
				.if eax != -1
					mov dword ptr TmpBuff+37,eax
					invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名或密码。')
					mov TmpBuff,55h
				.endif
			.elseif TmpBuff == 22h			; 查询次数
				invoke CallGetNetInfo,addr TmpBuff+1,dword ptr TmpBuff+51
				.if eax != -1
					mov dword ptr TmpBuff+37,eax
					invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名或密码。')
					mov TmpBuff,55h
				.endif
			.elseif TmpBuff == 23h			; 密码验证
				movzx eax,TmpBuff+50
				invoke CallSetUserValidate,addr TmpBuff+1,dword ptr TmpBuff+51,dword ptr TmpBuff+61,eax
				.if eax == 0
					invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
					.if TmpBuff+50 == 0
						invoke lstrcpy,addr TmpBuff+10,STEXT('修改成功,当前关闭密码验证!')
					.else
						invoke lstrcpy,addr TmpBuff+10,STEXT('修改成功,当前要求密码验证!')
					.endif
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名或密码。')
					mov TmpBuff,55h
				.endif
			.elseif TmpBuff == 34h			; 个人登录
				movzx eax,TmpBuff+50
				invoke CallSetUserSingle,addr TmpBuff+1,dword ptr TmpBuff+51,eax
				.if eax == 0
					invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
					.if TmpBuff+50 == 0
						invoke lstrcpy,addr TmpBuff+10,STEXT('修改成功,当前禁止个人版登录!')
					.else
						invoke lstrcpy,addr TmpBuff+10,STEXT('修改成功,当前允许个人版登录!')
					.endif
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名或密码。')
					mov TmpBuff,55h
				.endif
			.endif
			invoke CallUnCrypt,addr TmpBuff,42,2eh,0d9h
			invoke send,wParam,addr TmpBuff,128,0
			invoke CallCloseSocket,wParam,hWin
		.elseif ax == FD_CLOSE
			invoke CallCloseSocket,wParam,hWin
		.endif
		xor eax,eax
		ret
	.elseif eax == WM_SOCKET_PASS			; 修改密码/修改IP
		mov eax,lParam
		mov edx,eax
		shr edx,16
		.if dx != 0
			.if ax == FD_ACCEPT
				invoke closesocket,wParam
			.else
				invoke CallCloseSocket,wParam,hWin
			.endif
		.elseif ax==FD_ACCEPT
			mov addrsize,sizeof addrsock
			invoke accept,sSockPass,addr addrsock,addr addrsize
			invoke CallChangeSockAttrib,eax
		.elseif ax==FD_READ
			invoke recv,wParam,addr TmpBuff,128,0
			.if eax != 128
				invoke CallCloseSocket,wParam,hWin
				ret
			.endif
			invoke CallCrypt,addr TmpBuff,61,2eh,0d9h
			.if TmpBuff != 24h && TmpBuff != 13h && TmpBuff != 14h
				invoke CallCloseSocket,wParam,hWin
				ret
			.endif
			.if TmpBuff == 14h				; 个人修改密码
				invoke CallModifyUserPass,addr TmpBuff+1,dword ptr TmpBuff+51,dword ptr TmpBuff+55
				.if eax == 0
					invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名或密码。')
					mov TmpBuff,55h
				.endif
			.elseif TmpBuff == 24h			; 网吧修改密码
				invoke CallModifyNetPass,addr TmpBuff+1,dword ptr TmpBuff+51,dword ptr TmpBuff+55
				.if eax == 0
					invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的网吧名或密码。')
					mov TmpBuff,55h
				.endif
			.elseif TmpBuff == 13h			; 修改IP
				mov addrsize,sizeof addrsock
				invoke getpeername,wParam,addr addrsock,addr addrsize
				invoke MemCopy,addr addrsock.sa_data+2,addr TmpBuff+59,4
				invoke CallModifyUserIp,addr TmpBuff+1,dword ptr TmpBuff+51,dword ptr TmpBuff+59,dword ptr TmpBuff+55
				.if eax == 0
					invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名或密码。')
					mov TmpBuff,55h
				.endif
			.endif
			invoke CallUnCrypt,addr TmpBuff,34,2eh,0d9h
			invoke send,wParam,addr TmpBuff,128,0
			invoke CallCloseSocket,wParam,hWin
		.elseif ax == FD_CLOSE
			invoke CallCloseSocket,wParam,hWin
		.endif
		xor eax,eax
		ret
	.elseif eax == WM_SOCKET_SUPPLY			; 个人版/网吧版卡号充值
		mov eax,lParam
		mov edx,eax
		shr edx,16
		.if dx != 0
			.if ax == FD_ACCEPT
				invoke closesocket,wParam
			.else
				invoke CallCloseSocket,wParam,hWin
			.endif
		.elseif ax==FD_ACCEPT
			mov addrsize,sizeof addrsock
			invoke accept,sSockSupply,addr addrsock,addr addrsize
			invoke CallChangeSockAttrib,eax
		.elseif ax==FD_READ
			invoke recv,wParam,addr TmpBuff,128,0
			.if eax != 128
				invoke CallCloseSocket,wParam,hWin
				ret
			.endif
			invoke CallCrypt,addr TmpBuff,111,2eh,0d9h
			.if TmpBuff != 33h && TmpBuff != 22h && TmpBuff != 11h
				invoke CallCloseSocket,wParam,hWin
				ret
			.endif
			.if TmpBuff == 33h				; 个人版卡号充值
				invoke CharUpper,addr TmpBuff+55
				invoke StrCmpN,addr TmpBuff+55,STEXT('GY'),2
				.if eax == 0
					movzx eax,TmpBuff+109
					invoke CallSupplySingle,addr TmpBuff+1,dword ptr TmpBuff+51,addr TmpBuff+55,dword ptr TmpBuff+105,eax
					.if eax == -2
						invoke lstrcpy,addr TmpBuff+1,STEXT('用户名已经存在或卡号、密码错误!')
						mov TmpBuff,55h
					.elseif eax == -3
						invoke lstrcpy,addr TmpBuff+1,STEXT('用户名不存在或卡号、密码错误!')
						mov TmpBuff,55h
					.elseif eax == -4
						invoke lstrcpy,addr TmpBuff+1,STEXT('充值卡号与所在地不符!')
						mov TmpBuff,55h
					.elseif eax == -1
						invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名、卡号或密码!')
						mov TmpBuff,55h
					.else
						mov dword ptr TmpBuff+37,eax
						mov al,TmpBuff+109
						mov TmpBuff,al
						invoke MemCopy,addr TmpBuff+51,addr TmpBuff+33,4
						invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
					.endif
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名、卡号或密码!')
					mov TmpBuff,55h
				.endif
			.elseif TmpBuff == 22h				; 网吧版卡号充值
				invoke CharUpper,addr TmpBuff+55
				or ebx,-1
				invoke StrCmpN,addr TmpBuff+55,STEXT('BY'),2
				.if eax == 0
					mov ebx,2000
				.else
					invoke StrCmpN,addr TmpBuff+55,STEXT('PY'),2
					.if eax == 0
						mov ebx,4000
					.else
						invoke StrCmpN,addr TmpBuff+55,STEXT('LY'),2
						.if eax == 0
							mov ebx,1000
						.else
							invoke StrCmpN,addr TmpBuff+55,STEXT('LYBYWG'),6
							.if eax == 0
								mov ebx,1000
							.endif
						.endif
					.endif
				.endif
				.if ebx != -1
					movzx eax,TmpBuff+109
					invoke CallSupplyNetwork,addr TmpBuff+1,dword ptr TmpBuff+51,addr TmpBuff+55,dword ptr TmpBuff+105,eax,ebx
					.if eax == -2
						invoke lstrcpy,addr TmpBuff+1,STEXT('用户名已经存在或卡号、密码错误!')
						mov TmpBuff,55h
					.elseif eax == -3
						invoke lstrcpy,addr TmpBuff+1,STEXT('用户名不存在或卡号、密码错误!')
						mov TmpBuff,55h
					.elseif eax == -4
						invoke lstrcpy,addr TmpBuff+1,STEXT('充值卡号与所在地不符!')
						mov TmpBuff,55h
					.elseif eax == -1
						invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名、卡号或密码!')
						mov TmpBuff,55h
					.else
						mov dword ptr TmpBuff+37,eax
						mov al,TmpBuff+109
						mov TmpBuff,al
						invoke MemCopy,addr TmpBuff+51,addr TmpBuff+33,4
						invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
					.endif
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名、卡号或密码!')
					mov TmpBuff,55h
				.endif
			.elseif TmpBuff == 11h				; 网吧版向个人版充值
				mov edx,dword ptr TmpBuff+105
				.if edx == 1
					mov edx,200
				.elseif edx == 2
					mov edx,400
				.elseif edx == 3
					mov edx,600
				.elseif edx == 4
					mov edx,800
				.elseif edx == 5
					mov edx,1000
				.else
					or edx,-1
				.endif
				.if edx != -1
					movzx eax,TmpBuff+109
					invoke CallSupplyNetToSingle,addr TmpBuff+1,dword ptr TmpBuff+51,addr TmpBuff+55,edx,eax
					.if eax == -2
						invoke lstrcpy,addr TmpBuff+1,STEXT('用户名已经存在或网吧名、密码错误!')
						mov TmpBuff,55h
					.elseif eax == -3
						invoke lstrcpy,addr TmpBuff+1,STEXT('用户名不存在或网吧名、密码错误!')
						mov TmpBuff,55h
					.elseif eax == -1
						invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名、网吧名或密码!')
						mov TmpBuff,55h
					.else
						mov dword ptr TmpBuff+37,eax
						mov al,TmpBuff+109
						mov TmpBuff,al
						invoke lstrcpy,addr TmpBuff+1,STEXT('OK')
					.endif
				.else
					invoke lstrcpy,addr TmpBuff+1,STEXT('错误的用户名、网吧名或密码!')
					mov TmpBuff,55h
				.endif
			.endif
			invoke CallUnCrypt,addr TmpBuff,42,2eh,0d9h
			invoke send,wParam,addr TmpBuff,128,0
			invoke CallCloseSocket,wParam,hWin
		.elseif ax == FD_CLOSE
			invoke CallCloseSocket,wParam,hWin
		.endif
		xor eax,eax
		ret
	.else
		xor eax,eax
	.endif
	ret
ConfigDialogProc	endp

⌨️ 快捷键说明

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