📄 call.asm
字号:
CallGetUserName proc lpName:DWORD,lpPass:DWORD
LOCAL TmpBuff[600]:BYTE
LOCAL PassBuff[20]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke wsprintf,addr TmpBuff,STEXT("EXEC by_CheckUser @User='%s',@Pass='%s',@type=0"),lpName,addr PassBuff
invoke ShellSqlQueryDword,addr TmpBuff
.if eax != -1
.if eax == 0
invoke wsprintf,addr TmpBuff,STEXT("DELETE FROM T_Single WHERE (Name='%s')AND(Password='%s')"),lpName,addr PassBuff
invoke ShellSqlExecCommand,addr TmpBuff
or eax,-1
.else
xor eax,eax
.endif
.endif
.else
or eax,-1
.endif
ret
CallGetUserName endp
CallGetNetName proc lpName:DWORD,lpPass:DWORD,lpIp:DWORD,lpSupply:DWORD
LOCAL TmpBuff[600]:BYTE
LOCAL PassBuff[20]:BYTE
LOCAL IpBuff[20]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke inet_ntoa,lpPass
invoke wsprintf,addr TmpBuff,STEXT("EXEC by_CheckUser @User='%s',@LocalIp='%s',@type=1"),lpName,eax
invoke ShellSqlQueryUserSource,addr TmpBuff,lpSupply,addr IpBuff
.if eax != -1
mov dl,byte ptr lpIp+3
.if dl >= al && dl <= ah
invoke inet_addr,addr IpBuff
and eax,0ffffffh
and lpIp,0ffffffh
.if eax == lpIp
invoke wsprintf,addr TmpBuff,STEXT("SELECT AgentName FROM T_Agent WHERE (AgentId='%s')"),lpSupply
invoke ShellSqlFindUser,addr TmpBuff,lpSupply
xor eax,eax
.else
or eax,-1
.endif
.else
or eax,-1
.endif
.elseif eax == 0
invoke inet_addr,addr IpBuff
.if eax == lpIp
invoke wsprintf,addr TmpBuff,STEXT("SELECT AgentName FROM T_Agent WHERE (AgentId='%s')"),lpSupply
invoke ShellSqlFindUser,addr TmpBuff,lpSupply
xor eax,eax
.else
or eax,-1
.endif
.endif
.else
or eax,-1
.endif
ret
CallGetNetName endp
CallGetUserInfo proc lpName:DWORD,lpPass:DWORD
LOCAL TmpBuff[MAX_PATH]:BYTE
LOCAL PassBuff[20]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke wsprintf,addr TmpBuff,STEXT("SELECT Number FROM T_Single WHERE (Name='%s')AND(Password='%s')"),lpName,addr PassBuff
invoke ShellSqlQueryUser,addr TmpBuff
.else
or eax,-1
.endif
ret
CallGetUserInfo endp
CallGetNetInfo proc lpName:DWORD,lpPass:DWORD
LOCAL TmpBuff[MAX_PATH]:BYTE
LOCAL PassBuff[20]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke wsprintf,addr TmpBuff,STEXT("SELECT Number FROM T_Net WHERE (Name='%s')AND(Password='%s')"),lpName,addr PassBuff
invoke ShellSqlQueryUser,addr TmpBuff
.else
or eax,-1
.endif
ret
CallGetNetInfo endp
CallModifyUserPass proc lpName:DWORD,lpPass:DWORD,nPass:DWORD
LOCAL TmpBuff[MAX_PATH]:BYTE
LOCAL PassBuff[20]:BYTE
LOCAL nPassBuff[20]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke wsprintf,addr nPassBuff,STEXT('%lu'),nPass
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Single SET Password='%s' WHERE (UserName='%s')AND(Password='%s')"),addr nPassBuff,lpName,addr PassBuff
invoke ShellSqlExecCommand,addr TmpBuff
.else
or eax,-1
.endif
ret
CallModifyUserPass endp
CallModifyNetPass proc lpName:DWORD,lpPass:DWORD,nPass:DWORD
LOCAL TmpBuff[MAX_PATH]:BYTE
LOCAL PassBuff[20]:BYTE
LOCAL nPassBuff[20]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke wsprintf,addr nPassBuff,STEXT('%lu'),nPass
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Password='%s' WHERE (UserName='%s')AND(Password='%s')"),addr nPassBuff,lpName,addr PassBuff
invoke ShellSqlExecCommand,addr TmpBuff
.else
or eax,-1
.endif
ret
CallModifyNetPass endp
CallSetUserValidate proc lpName:DWORD,lpPass:DWORD,lpIp:DWORD,lpValidate:DWORD
LOCAL TmpBuff[MAX_PATH]:BYTE
LOCAL PassBuff[20]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke inet_ntoa,lpIp
mov edx,eax
.if lpValidate != 0
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Validate=1,LocalIp='%s' WHERE (Name='%s')AND(Password='%s')"),edx,lpName,addr PassBuff
.else
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Validate=0,LocalIp=NULL WHERE (Name='%s')AND(Password='%s')"),lpName,addr PassBuff
.endif
invoke ShellSqlExecCommand,addr TmpBuff
.else
or eax,-1
.endif
ret
CallSetUserValidate endp
CallSetUserSingle proc lpName:DWORD,lpPass:DWORD,lpSingle:DWORD
LOCAL TmpBuff[MAX_PATH]:BYTE
LOCAL PassBuff[20]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
.if lpSingle != 0
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Single=1 WHERE (Name='%s')AND(Password='%s')"),lpName,addr PassBuff
.else
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Single=0 WHERE (Name='%s')AND(Password='%s')"),lpName,addr PassBuff
.endif
invoke ShellSqlExecCommand,addr TmpBuff
.else
or eax,-1
.endif
ret
CallSetUserSingle endp
CallModifyUserIp proc uses ebx,lpName:DWORD,lpPass:DWORD,lpIp:DWORD,lpArea:DWORD
LOCAL TmpBuff[MAX_PATH]:BYTE
LOCAL PassBuff[20]:BYTE
LOCAL IpBuff[20]:BYTE
LOCAL hIpBegin[10]:BYTE
LOCAL hIpEnd[10]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke inet_ntoa,lpIp
mov ebx,eax
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
movzx ecx,byte ptr lpArea
movzx edx,byte ptr lpArea+2
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET IpAddr='%s',IpSecBegin=%lu,IpSecEnd=%lu WHERE (Name='%s')AND(Password='%s')"),ebx,ecx,edx,lpName,addr PassBuff
invoke ShellSqlExecCommand,addr TmpBuff
.else
or eax,-1
.endif
ret
CallModifyUserIp endp
CallUpdateUserNum proc lpName:DWORD,lpPass:DWORD
LOCAL TmpBuff[400]:BYTE
LOCAL PassBuff[20]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Single SET Number=Number-1 WHERE (Name='%s')AND(Password='%s')AND(Number<>0)AND(State=0 OR State IS NULL)"),lpName,addr PassBuff
invoke ShellSqlExecCommand,addr TmpBuff
.else
or eax,-1
.endif
ret
CallUpdateUserNum endp
CallUpdateNetNum proc lpName:DWORD,lpIp:DWORD
LOCAL TmpBuff[400]:BYTE
invoke lstrlen,lpName
.if eax < 50
invoke inet_ntoa,lpIp
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Number=Number-1 WHERE (Name='%s')AND(Number<>0)AND(State=0 OR State IS NULL)AND((Validate<>1)OR(LocalIp='%s'))"),lpName,eax
invoke ShellSqlExecCommand,addr TmpBuff
.else
or eax,-1
.endif
ret
CallUpdateNetNum endp
CallSupplySingle proc uses ebx,lpName:DWORD,lpPass:DWORD,lpCrdName:DWORD,lpCrdPass:DWORD,lpType:DWORD
LOCAL TmpBuff[400]:BYTE
LOCAL PassBuff[20]:BYTE
LOCAL CrdBuff[20]:BYTE
LOCAL CarBuff[50]:BYTE
LOCAL TimeBuff[20]:BYTE
LOCAL hTime:SYSTEMTIME
LOCAL hNum:DWORD
or ebx,-1
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr CrdBuff,STEXT('%lu'),lpCrdPass
invoke wsprintf,addr TmpBuff,STEXT("SELECT COUNT(*) FROM T_Car WHERE (CarID='%s')AND(CarPassword='%s')AND(CarState IS NULL)"),lpCrdName,addr CrdBuff
invoke ShellSqlQueryUser,addr TmpBuff
.if eax == 1 ; 判断卡号是否存在
invoke wsprintf,addr TmpBuff,STEXT("SELECT Source FROM T_Single WHERE (Name='%s')"),lpName
invoke ShellSqlFindUser,addr TmpBuff,addr CarBuff ; 判断用户名是否存在
.if lpType == 1 ; 新建用户
.if eax == -1
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke GetLocalTime,addr hTime
invoke TimeToStr,addr hTime,addr TimeBuff
invoke wsprintf,addr TmpBuff,STEXT("INSERT INTO T_Single (Name,Password,Number,SupplyTime,Source,CreateTime) VALUES ('%s','%s',200,'%s','%s','%s')"),lpName,addr PassBuff,addr TimeBuff,lpCrdName,addr TimeBuff
invoke ShellSqlExecCommand,addr TmpBuff
.if eax == 0
invoke wsprintf,addr TmpBuff,STEXT("DELETE FROM T_Car WHERE (CarID='%s')"),lpCrdName
invoke ShellSqlExecCommand,addr TmpBuff
mov ebx,200
.endif
.else
mov ebx,-2
.endif
.else
.if eax == 0 ; 已存在的用户
invoke CallIsValidateCrd,addr CarBuff,lpCrdName
.if eax == 0
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke GetLocalTime,addr hTime
invoke TimeToStr,addr hTime,addr TimeBuff
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Single SET Number=Number+200,SupplyTime='%s',Source='%s' WHERE ((Name='%s')AND(Password=%s)AND(State=0 OR State IS NULL))"),addr TimeBuff,lpCrdName,lpName,addr PassBuff
invoke ShellSqlExecCommand,addr TmpBuff
.if eax == 0
invoke wsprintf,addr TmpBuff,STEXT("DELETE FROM T_Car WHERE (CarID='%s')"),lpCrdName
invoke ShellSqlExecCommand,addr TmpBuff
invoke wsprintf,addr TmpBuff,STEXT("SELECT Number FROM T_Single WHERE(Name='%s')"),lpName
invoke ShellSqlQueryDword,addr TmpBuff
mov ebx,eax
.endif
.else
mov ebx,-4
.endif
.else
mov ebx,-3
.endif
.endif
.endif
.endif
mov eax,ebx
ret
CallSupplySingle endp
CallSupplyNetwork proc uses ebx,lpName:DWORD,lpPass:DWORD,lpCrdName:DWORD,lpCrdPass:DWORD,lpType:DWORD,lpNum:DWORD
LOCAL TmpBuff[400]:BYTE
LOCAL PassBuff[20]:BYTE
LOCAL CrdBuff[20]:BYTE
LOCAL TimeBuff[20]:BYTE
LOCAL CarBuff[50]:BYTE
LOCAL hTime1:SYSTEMTIME
LOCAL hTime2:SYSTEMTIME
LOCAL hNum:DWORD
or ebx,-1
invoke lstrlen,lpName
.if eax < 50
invoke wsprintf,addr CrdBuff,STEXT('%lu'),lpCrdPass
invoke wsprintf,addr TmpBuff,STEXT("SELECT COUNT(*) FROM T_Car WHERE (CarID='%s')AND(CarPassword='%s')AND(CarState IS NULL)"),lpCrdName,addr CrdBuff
invoke ShellSqlQueryUser,addr TmpBuff
.if eax == 1 ; 判断卡号是否存在
invoke wsprintf,addr TmpBuff,STEXT("SELECT LastTime,Cumulate,Source FROM T_Net WHERE (Name='%s')"),lpName
invoke ShellSqlQueryTime,addr TmpBuff,addr hTime1,addr hNum,addr CarBuff
.if eax != -1 ; 判断用户名是否存在
.if lpType == 1 ; 新建用户
.if eax == 1
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke GetLocalTime,addr hTime2
invoke TimeToStr,addr hTime2,addr TimeBuff
.if lpNum == 1000
invoke wsprintf,addr TmpBuff,STEXT("INSERT INTO T_Net (Name,Password,Number,IpAddr,LastTime,PrevTime,Source,Totalize) VALUES ('%s','%s',%d,'127.0.0.1','%s','%s','%s',%d)"),lpName,addr PassBuff,lpNum,addr TimeBuff,addr TimeBuff,lpCrdName,lpNum
.else
invoke wsprintf,addr TmpBuff,STEXT("INSERT INTO T_Net (Name,Password,Number,IpAddr,LastTime,PrevTime,Source,Cumulate,Totalize) VALUES ('%s','%s',%d,'127.0.0.1','%s','%s','%s',%d,%d)"),lpName,addr PassBuff,lpNum,addr TimeBuff,addr TimeBuff,lpCrdName,lpNum,lpNum
.endif
invoke ShellSqlExecCommand,addr TmpBuff
.if eax == 0
invoke wsprintf,addr TmpBuff,STEXT("DELETE FROM T_Car WHERE (CarID='%s')"),lpCrdName
invoke ShellSqlExecCommand,addr TmpBuff
mov ebx,lpNum
.endif
.else
mov ebx,-2
.endif
.else ; 已存在的用户
.if eax == 0
invoke CallIsValidateCrd,addr CarBuff,lpCrdName
.if eax == 0
invoke wsprintf,addr PassBuff,STEXT('%lu'),lpPass
invoke GetLocalTime,addr hTime2
invoke TimeToStr,addr hTime2,addr TimeBuff
invoke CallCmpTimeSize,addr hTime2,addr hTime1,3
.if eax == 0
.if hNum == 0
.if lpNum == 1000
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Number=Number+%d,LastTime='%s',PrevTime=LastTime,Source='%s',Totalize=Totalize+%d,Cumulate=0 WHERE ((Name='%s')AND(Password='%s')AND(State=0 OR State IS NULL))"),lpNum,addr TimeBuff,lpCrdName,lpNum,lpName,addr PassBuff
.else
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Number=Number+%d,LastTime='%s',PrevTime=LastTime,Source='%s',Totalize=Totalize+%d,Cumulate=%d WHERE ((Name='%s')AND(Password='%s')AND(State=0 OR State IS NULL))"),lpNum,addr TimeBuff,lpCrdName,lpNum,lpNum,lpName,addr PassBuff
.endif
.else
.if lpNum == 1000
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Number=Number+%d,LastTime='%s',PrevTime=LastTime,Source='%s',Totalize=Totalize+%d,Cumulate=0 WHERE ((Name='%s')AND(Password='%s')AND(State=0 OR State IS NULL))"),lpNum,addr TimeBuff,lpCrdName,lpNum,lpName,addr PassBuff
.else
invoke StrCmpNI,addr CarBuff,lpCrdName,2
.if eax == 0
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Number=Number+Cumulate+%d,LastTime='%s',PrevTime=LastTime,Source='%s',Totalize=Totalize+Cumulate+%d,Cumulate=0 WHERE ((Name='%s')AND(Password='%s')AND(State=0 OR State IS NULL))"),lpNum,addr TimeBuff,lpCrdName,lpNum,lpName,addr PassBuff
.else
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Number=Number+2000+%d,LastTime='%s',PrevTime=LastTime,Source='%s',Totalize=Totalize+2000+%d,Cumulate=0 WHERE ((Name='%s')AND(Password='%s')AND(State=0 OR State IS NULL))"),lpNum,addr TimeBuff,lpCrdName,lpNum,lpName,addr PassBuff
.endif
.endif
.endif
.else
.if lpNum == 1000
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Number=Number+%d,LastTime='%s',PrevTime=LastTime,Source='%s',Totalize=Totalize+%d,Cumulate=0 WHERE ((Name='%s')AND(Password='%s')AND(State=0 OR State IS NULL))"),lpNum,addr TimeBuff,lpCrdName,lpNum,lpName,addr PassBuff
.else
invoke wsprintf,addr TmpBuff,STEXT("UPDATE T_Net SET Number=Number+%d,LastTime='%s',PrevTime=LastTime,Source='%s',Totalize=Totalize+%d,Cumulate=%d WHERE ((Name='%s')AND(Password='%s')AND(State=0 OR State IS NULL))"),lpNum,addr TimeBuff,lpCrdName,lpNum,lpNum,lpName,addr PassBuff
.endif
.endif
invoke ShellSqlExecCommand,addr TmpBuff
.if eax == 0
invoke wsprintf,addr TmpBuff,STEXT("DELETE FROM T_Car WHERE (CarID='%s')"),lpCrdName
invoke ShellSqlExecCommand,addr TmpBuff
invoke wsprintf,addr TmpBuff,STEXT("SELECT Number FROM T_Net WHERE(Name='%s')"),lpName
invoke ShellSqlQueryDword,addr TmpBuff
mov ebx,eax
.endif
.else
mov ebx,-4
.endif
.else
mov ebx,-3
.endif
.endif
.endif
.endif
.endif
mov eax,ebx
ret
CallSupplyNetwork endp
CallSupplyNetToSingle proc uses ebx,lpNetName:DWORD,lpNetPass:DWORD,lpName:DWORD,lpNum:DWORD,lpType:DWORD
LOCAL TmpBuff[400]:BYTE
LOCAL PassBuff[20]:BYTE
LOCAL NetBuff[20]:BYTE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -