软件简介:04-07 15:01 更新 实现窗口化 添加窗口化用的 WinMu.dll 源码 不使用任何第三方控件 服务器添加可控制登陆器生成的执行文件名,MU窗口的标题 修正一个足以笑死人的BUG 准备彻底解决需要用户对SQL库再进行操作的问题 --------------------------------------------------------------------------------------------------------------------------------------- 期待着您的参与
DELPHI社群中开源项目少之又少,我们可不可以自己组织?我们可不可以一起探讨?小弟不才,斗胆写下几行代码,来这里期待抛砖引玉。
这样的工作是激动人心的,可是我也和大家一样,面临着手头上工作的压力,为了能够对得起那份薪水,我只能够在下班的时间里做这些。但一个人精力太有限了,我没有足够的时间也没有那么多精力去实现完全的防范外挂,于是在这份源代码里,您发现您可以非常容易的…… 一个人的力量太有限了,一个人的才智也太有限了,如果这个小生命在我一个人的手里,也许会因为得不到充足的阳光雨露而不能茁壮成长,但是如果有您的加入,多了您的呵护,相信我们的目标才更有可能实现。
如果您是高手,那么就在这里表现您的聪明才智吧。如果您是菜鸟,来这里汲取知识吧。如果您对编程一窍不通,那么请为参与者加油.并且及时的把BUG提出 所有的源代码都永久性公开,如果您有什么地方不清楚或者是有更好的建议,您也可以直接联系我。
- by HellFish
--------------------------------------------------------------------------------------------------------------------------------------
防外挂登陆器源码,服务器端验证版 C/S结构 by Hellfish Mail: sgfree@hotmail.com
环境:Delphi 7
功能: 窗口化MU 动态修改验证码,main.exe的标题 防止运行时重启系统获得.exe文件 检查内存中的外挂 杀死NP 等等................
处理: 登陆器发送用户名与密码到服务器后,服务器返回验证码与端口给登陆器,同时解封用户ID 登陆器收到验证码与端口后,确定可以连接后,启动游戏 当登陆器非正常关闭时发送数据给服务器 服务器马上封闭用户ID并修改用户登陆密码 这样一来你可以随时换验证码而不需要更改登陆器了 [以上数据包当然可以加密] [服务器端采用多线程处理] 在函数 decode 与 函数 encode 中,注意保持服务器端与客户端一致
注意: 服务器端还需要在SQL中加入一个触发器的哦,作用是当 MEMB_STAT表中的用户连接状态由1变0时重新封掉该用户ID,另外一个方法是修改用户离线的存储过程,下面有一个 编译登陆器前,请先执行 makeres.bat 生成资源文件
附: 你可以自行修改服务器端的过程 MyMainProc 处理更多的命令,也可以更换你的交互数据结构 目前的格式是FishCtrl作为入口,后面跟数据 数据包结构: #主命令$ %参数1^ &参数2* !参数3@
例子: FishCtrl#Login$%username^&password*!3042@
发这个源码的目的是希望大家多有探讨的机会,如果发现有人改头换面当自己的东西用于商业目的,以后偶再也不会公布任何代码
使用方法 把login.ini文件中的IP与端口改为与你服务器端一致,然后把login.ini,login.exe,winmu.dll放到mu游戏目录下就成
登陆服务器端一定要放在你的数据库服务器上,同时记得修改你的服务器的配置文件,把GS的验证码与登陆服务器端一致
版本号请改为 0.97.02如果你使用程自带的Main.exe的话
------------------------------------------------------------------------------------------------------------------------------------- Download: http://61.143.241.227/FishFan.rar
运行图
引用至 鸽子 的帖子里的,不知道可否
CREATE PROCEDURE WZ_DISCONNECT_MEMB
@uid varchar(20) AS Begin
BEGIN TRANSACTION
SET NOCOUNT ON
IF EXISTS ( SELECT memb___id FROM MEMB_STAT WITH (READUNCOMMITTED) WHERE memb___id = @uid ) Begin UPDATE MEMB_STAT SET DisConnectTM = (getdate()), connectstat = 0 WHERE memb___id = @uid UPDATE MEMB_INFO SET bloc_code =1 WHERE memb___id = @uid End ELSE Begin INSERT INTO MEMB_STAT ( memb___id,DisConnectTM,connectstat) valueS (@uid,(getdate)),0) End
IF(@@Error <> 0 ) ROLLBACK TRANSACTION ELSE COMMIT TRANSACTION
SET NOCOUNT OFF End
GO
|