- 主题
- 0
- 积分
- 0
- 贝壳
- 0 个
- 注册时间
- 2006-11-29
- 最后登录
- 2006-11-29
|
VB搞定完美世界国际版双开
有个朋友在玩这游戏。说刚出的没双开外挂。。。
其实双开原理也不复杂。就看它用的是哪种。。
1:最简单的限制,窗口查找,如果找到自己窗口一致的(通过类名,或者窗口标题),就提示重复打开。
解决方法:通过窗口标题的,可以用SetWindowText修改掉窗口标题。听过类名的,简单的把FindWindow(Ex)后面的判断跳转修改下就ok了。
2:通过命名的内核对象来防止重复打开。
解决方法:把查找内核对象后面的非零判断跳转修改下就ok了。
3:通过独占文件访问来防止重复打开。
解决方法:1-修改程序,阻止独占访问
2-复制客户端到另外的文件夹,在另外的文件夹打开~
4:通过绑定特定的通讯端口,阻止重复启动客户端
解决方法:把绑定端口的那部分去掉
经查,这里的完美国际是用的第一种 :16: :16: 他们的程序员偷懒噢。。。
Form1(主窗体,上面有一个TIMER控件,间隔为1000ms,并把Enabled设为true)Private Sub Timer1_Timer()
Dim lHwnd As Long
Dim TitleModify As String * 256
TimesNow = Now()
TitleModify = "CodeWorld" & TimesNow
lHwnd = FindWindow(vbNullString, "Element Client")
SetWindowText lHwnd, TitleModify
End Sub 类模块Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long |
|