• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[昨夜星辰] 【实战+大漠+过检测+源码】网游AEZG原地挂机 [复制链接]

1#
界面:


脚本比较简单,仅为分享游戏的大漠后台模式和过检测方法,以下源码均在Windows7 64环境下运行。

大漠后台分析:
display 图色:
仅能使用参数"dx.graphic.3d",否则游戏画面获取黑屏。

mouse 鼠标:
参数"dx.mouse.position.lock.api"必填,只需要鼠标移动点击的话,就不需要填写其他参数了。过多的绑定参数会影响绑定速度及目标进程稳定性。但游戏限制操作速度,所以移动、鼠标按住和鼠标弹起之间需要加延迟,建议50毫秒以上,否则可能操作无效。

keypad 键盘:
参数"dx.keypad.api"必填,键盘用不到组合键,就不需要填写其他参数了。同鼠标一样,建议键盘按住和弹起的延迟保持50毫秒以上。

public 公共:
参数"dx.public.active.message"必填,否则后台操作会导致游戏被激活至前台。参数"dx.public.graphic.protect"必填,否则游戏画面获取黑屏。

mode 模式:

大漠提供的参数均可使用,这里推荐101,会隐藏目标进程中的大漠插件。

完整参数:
dm_ret = dm.BindWindowEx(hwnd,"dx.graphic.3d","dx.mouse.position.lock.api","dx.keypad.api","dx.public.active.message|dx.public.graphic.protect",101)

过检测分析:
经过一系列测试,得知游戏检测按键精灵的方法有2项,其中一项被检测到都不行
1、检测电脑中是否曾经打开过按键精灵。
2、检测电脑中是否正在运行按键精灵。

方法1检测效果:
只要你运行过按键精灵,打开游戏之前按键精灵进程不存在,游戏开启后也会检测到按键精灵。

应对方案:
1、隐藏或保护按键精灵所在目录。
2、清除电脑中运行过按键精灵的痕迹。
方案1,难度大,操作复杂,弃用。
方案2,可使用插件进行清除,十分简单。
可参考我的帖子:
【源码】清除系统使用痕迹
http://bbs.anjian.com/showtopic-701289-1.aspx

方法2检测效果:
只要电脑当前运行进程中有符合按键精灵特征的程序,即便不启动脚本,也会被检测到。

应对方案:
1、保护进程,如按键神盾、大漠防护盾。
2、修改按键精灵特征,如神盾补丁。
以上方案均可,本人采用的是大漠防护盾b2,即dm.DmGuard 1,"b2",需要注意的是在使用大漠防护盾时,由于涉及驱动加载,会有概率触发电脑蓝屏,请确保重要的文件已保存,否则可能导致文件丢失

源码:
  1. Declare Function SetDllPathW Lib ".\plugin\dmreg.dll" Alias "SetDllPathW" (ByVal path As String, ByVal mode As Long) As Long
  2. Dimenv 脚本资源目录, 注册返回值, 是否已开启保护盾
  3. Dimenv 临时文件目录, 自身文件路径
  4. If 注册返回值 <> 1 Then
  5. MessageBox "脚本不可运行!"
  6. ExitScript
  7. End If
  8. Call 创建大漠对象
  9. Call 设置大漠相对路径(脚本资源目录)
  10. Dim hwnd, dm_ret
  11. hwnd = dm.FindWindow("Direct3DWindowClass", "Elsword")
  12. dm_ret = dm.SetWindowState(hwnd,12)
  13. dm_ret = dm.BindWindowEx(hwnd,"dx.graphic.3d","dx.mouse.position.lock.api","dx.keypad.api","dx.public.active.message|dx.public.graphic.protect",101)
  14. If dm_ret = 0 Then
  15. MessageBox "绑定失败,错误代码:" & dm.GetLastError()
  16. ExitScript
  17. End If
  18. Delay 1000
  19. Dim 技能数组最大下标
  20. 技能数组最大下标 = - 1
  21. Redim 技能数组(技能数组最大下标)
  22. Dim 技能热键1选项, 技能热键2选项, 技能热键3选项, 技能热键4选项, 技能热键5选项
  23. 技能热键1选项 = Main.技能热键1.ListIndex
  24. 技能热键2选项 = Main.技能热键2.ListIndex
  25. 技能热键3选项 = Main.技能热键3.ListIndex
  26. 技能热键4选项 = Main.技能热键4.ListIndex
  27. 技能热键5选项 = Main.技能热键5.ListIndex
  28. If 技能热键1选项 <> 0 Then
  29. 技能数组最大下标 = 技能数组最大下标 + 1
  30. Redim Preserve 技能数组(技能数组最大下标)
  31. 技能数组(技能数组最大下标) = Array(Asc(Split(Main.技能热键1.List, "|")(技能热键1选项)), CDbl(Main.使用间隔1.Text) * 1000, CDbl(Main.使用等待1.Text) * 1000)
  32. End If
  33. If 技能热键2选项 <> 0 Then
  34. 技能数组最大下标 = 技能数组最大下标 + 1
  35. Redim Preserve 技能数组(技能数组最大下标)
  36. 技能数组(技能数组最大下标) = Array(Asc(Split(Main.技能热键2.List, "|")(技能热键2选项)), CDbl(Main.使用间隔2.Text) * 1000, CDbl(Main.使用等待2.Text) * 1000)
  37. End If
  38. If 技能热键3选项 <> 0 Then
  39. 技能数组最大下标 = 技能数组最大下标 + 1
  40. Redim Preserve 技能数组(技能数组最大下标)
  41. 技能数组(技能数组最大下标) = Array(Asc(Split(Main.技能热键3.List, "|")(技能热键3选项)), CDbl(Main.使用间隔3.Text) * 1000, CDbl(Main.使用等待3.Text) * 1000)
  42. End If
  43. If 技能热键4选项 <> 0 Then
  44. 技能数组最大下标 = 技能数组最大下标 + 1
  45. Redim Preserve 技能数组(技能数组最大下标)
  46. 技能数组(技能数组最大下标) = Array(Asc(Split(Main.技能热键4.List, "|")(技能热键4选项)), CDbl(Main.使用间隔4.Text) * 1000, CDbl(Main.使用等待4.Text) * 1000)
  47. End If
  48. If 技能热键5选项 <> 0 Then
  49. 技能数组最大下标 = 技能数组最大下标 + 1
  50. Redim Preserve 技能数组(技能数组最大下标)
  51. 技能数组(技能数组最大下标) = Array(Asc(Split(Main.技能热键5.List, "|")(技能热键5选项)), CDbl(Main.使用间隔5.Text) * 1000, CDbl(Main.使用等待5.Text) * 1000)
  52. End If
  53. Dim 人物左侧移动时长下限,人物左侧移动时长上限,人物右侧移动时长下限,人物右侧移动时长上限
  54. 人物左侧移动时长下限 = CDbl(Main.人物左侧移动时长下限.Text) * 1000
  55. 人物左侧移动时长上限 = CDbl(Main.人物左侧移动时长上限.Text) * 1000
  56. 人物右侧移动时长下限 = CDbl(Main.人物右侧移动时长下限.Text) * 1000
  57. 人物右侧移动时长上限 = CDbl(Main.人物右侧移动时长上限.Text) * 1000
  58. Redim 技能计时数组(技能数组最大下标)
  59. Dim 人物移动数组(1)
  60. 人物移动数组(0) = Array(37, 人物左侧移动时长下限, 人物左侧移动时长上限)
  61. 人物移动数组(1) = Array(39, 人物右侧移动时长下限, 人物右侧移动时长上限)
  62. Dim i, k
  63. For i = 0 To 技能数组最大下标
  64. 技能计时数组(i) = - 1
  65. Next
  66. Dim 施放当前技能,人物开始移动时间,人物移动时长,是否已弹起人物移动按键
  67. Do
  68. For k = 1 To 0 Step - 1
  69. 人物移动时长 = 生成随机数(人物移动数组(k)(1), 人物移动数组(k)(2))
  70. 人物开始移动时间 = Plugin.Sys.GetTime()
  71. 是否已弹起人物移动按键 = 1
  72. Do
  73. If Plugin.Sys.GetTime() - 人物开始移动时间 >= 人物移动时长 Then
  74. If 是否已弹起人物移动按键 = 0 Then
  75. dm.KeyUp 人物移动数组(k)(0)
  76. Delay 生成随机数(10, 30)
  77. End If
  78. Exit Do
  79. Else
  80. If 是否已弹起人物移动按键 = 1 Then
  81. dm.KeyDown 人物移动数组(k)(0)
  82. Delay 生成随机数(5, 10)
  83. dm.KeyUp 人物移动数组(k)(0)
  84. Delay 生成随机数(5, 10)
  85. dm.KeyDown 人物移动数组(k)(0)
  86. Delay 生成随机数(10, 30)
  87. 是否已弹起人物移动按键 = 0
  88. End If
  89. End If
  90. For i = 0 To 技能数组最大下标
  91. 施放当前技能 = 0
  92. If 技能计时数组(i) = - 1 Then
  93. 施放当前技能 = 1
  94. ElseIf Plugin.Sys.GetTime() - 技能计时数组(i) >= 技能数组(i)(1) Then
  95. 施放当前技能 = 1
  96. End If
  97. If 施放当前技能 = 1 Then
  98. If 是否已弹起人物移动按键 = 0 Then
  99. dm.KeyUp 人物移动数组(k)(0)
  100. Delay 生成随机数(10, 30)
  101. 是否已弹起人物移动按键 = 1
  102. End If
  103. 技能计时数组(i) = Plugin.Sys.GetTime()
  104. KeyPressEx 技能数组(i)(0)
  105. Delay 生成随机数(10, 30)
  106. If 技能数组(i)(2) <> 0 Then
  107. Delay 技能数组(i)(2)
  108. End If
  109. End If
  110. Next
  111. Loop
  112. Next
  113. Delay 10
  114. Loop
  115. Function 生成随机数(Num1, Num2)
  116. Dim 最小值, 最大值
  117. If Num1 > Num2 Then
  118. 最小值 = Num2
  119. 最大值 = Num1
  120. Else
  121. 最小值 = Num1
  122. 最大值 = Num2
  123. End If
  124. Randomize
  125. 生成随机数 = Int((最大值 - 最小值 + 1) * Rnd + 最小值)
  126. End Function
  127. Sub 移动左单击(x, y)
  128. dm.Moveto x, y
  129. Delay 生成随机数(50, 100)
  130. dm.LeftDown
  131. Delay 生成随机数(50, 100)
  132. dm.LeftUp
  133. End Sub
  134. Sub KeyPressEx(key_code)
  135. dm.KeyDown key_code
  136. Delay 生成随机数(50, 100)
  137. dm.KeyUp key_code
  138. End Sub
  139. Sub 释放文件
  140. PutAttachment 脚本资源目录, "*.*"
  141. PutAttachment ".\plugin", "dmreg.dll"
  142. PutAttachment ".\plugin", "lxj_Plug.dll"
  143. End Sub
  144. Sub 创建大漠对象
  145. Set dm = createobject("dm.dmsoft")
  146. End Sub
  147. Sub 设置大漠相对路径(路径)
  148. dm_ret = dm.SetPath(路径)
  149. End Sub
  150. Sub 注册大漠插件到系统
  151. Dim ver, need_ver
  152. need_ver = "7.2213"
  153. set ws=nothing
  154. Call SetDllPathW(脚本资源目录 & "dm.dll", 0)
  155. set dm = createobject("dm.dmsoft")
  156. ver = dm.ver()
  157. If ver = "" Then
  158. MessageBox "插件对象创建失败!"
  159. ElseIf ver <> need_ver Then
  160. MessageBox "插件版本错误,当前使用的版本是:" & ver & ",插件所在目录是:" & dm.GetBasePath()
  161. End If
  162. End Sub
  163. Sub OnScriptExit()
  164. Dim typename_dm
  165. typename_dm = typename(dm)
  166. If typename_dm <> "Empty" And typename_dm <> "Nothing" Then
  167. Call dm.UnBindWindow()
  168. Set dm = Nothing
  169. End If
  170. End Sub
  171. Event Main.Load
  172. 脚本资源目录 = "C:\艾尔之光\" & GetMacroID() & "\"
  173. Call 创建文件夹Ex(脚本资源目录)
  174. Call 释放文件
  175. Call 从注册表中清除开始菜单最近打开的程序记录
  176. Call 注册大漠插件到系统
  177. 注册返回值 = dm.Reg("这里输入你自己的注册码", "")
  178. if 注册返回值 <> 1 then
  179. If 注册返回值 = - 1 Then
  180. MessageBox "无法连接网络,请检查后重新启动本软件!"
  181. ElseIf 注册返回值 = - 2 Then
  182. MessageBox "权限不够,请关闭本软件后以管理员模式重新启动本软件!"
  183. ElseIf 注册返回值 = 0 Then
  184. MessageBox "未知错误,联系作者进行解决!"
  185. ElseIf 注册返回值 = 2 Then
  186. MessageBox "错误代码2,联系作者进行解决!"
  187. ElseIf 注册返回值 = 4 Then
  188. MessageBox "注册码错误!"
  189. ElseIf 注册返回值 = 5 Then
  190. MessageBox "你的机器或者IP在黑名单列表中或者不在白名单列表中,联系作者解决!"
  191. ElseIf 注册返回值 = 6 Then
  192. MessageBox "错误代码6,联系作者进行解决!"
  193. ElseIf 注册返回值 = 7 Then
  194. MessageBox "错误代码7,联系作者进行解决!"
  195. End If
  196. End If
  197. 是否已开启保护盾 = 0
  198. Dim b2_ret
  199. If 注册返回值 = 1 Then
  200. b2_ret = dm.DmGuard(1, "b2")
  201. If b2_ret <> 1 Then
  202. MessageBox "保护盾开启失败,错误代码:" & b2_ret
  203. Else
  204. 是否已开启保护盾 = 1
  205. End If
  206. End If
  207. End Event
  208. Sub 创建文件夹Ex(路径)
  209. Dim 当前路径
  210. If 获取路径基本名称(路径) <> "" Then
  211. 当前路径 = 路径
  212. 路径 = 获取路径父文件夹(路径)
  213. Call 创建文件夹Ex(路径)
  214. Call 创建文件夹(当前路径)
  215. End If
  216. End Sub
  217. Function 获取路径父文件夹(DriveSpec)
  218. Dim fso
  219. Set fso = CreateObject("Scripting.FileSystemObject")
  220. 获取路径父文件夹 = fso.GetParentFolderName(Drivespec)
  221. set fso = nothing
  222. End Function
  223. Function 获取路径基本名称(filespec)
  224. Dim fso
  225. Set fso = CreateObject("Scripting.FileSystemObject")
  226. 获取路径基本名称 = fso.GetBaseName(filespec)
  227. set fso = nothing
  228. End Function
  229. Sub 创建文件夹(路径)
  230. Dim fso
  231. Set fso = CreateObject("Scripting.FileSystemObject")
  232. fso.CreateFolder 路径
  233. set fso = nothing
  234. End Sub
  235. Event Main.UnLoad
  236. If 是否已开启保护盾 = 1 Then
  237. Call dm.DmGuard(0, "b2")
  238. End If
  239. Dim typename_dm
  240. typename_dm = typename(dm)
  241. If typename_dm <> "Empty" And typename_dm <> "Nothing" Then
  242. Set dm = Nothing
  243. End If
  244. End Event
  245. Function EnumKeyEx(项全名)
  246. Dim EnumKey_ret, Keys, SubKeys
  247. Keys = ""
  248. SubKeys = ""
  249. Dim i, 新项全名
  250. 新项全名 = 项全名
  251. EnumKey_ret = Plugin.LXJ_PLUG.lxj_EnumKey(新项全名)
  252. If EnumKey_ret(0) <> 0 Then
  253. For i = 1 To EnumKey_ret(0)
  254. 新项全名 = 项全名 & "\" & EnumKey_ret(i)
  255. If Keys = "" Then
  256. Keys = 新项全名
  257. Else
  258. Keys = Keys & "|" & 新项全名
  259. End If
  260. SubKeys = EnumKeyEx(新项全名)
  261. If SubKeys <> "" Then
  262. Keys = Keys & "|" & EnumKeyEx(新项全名)
  263. End If
  264. Next
  265. End If
  266. EnumKeyEx = Keys
  267. End Function
  268. Function 从注册表中清除开始菜单最近打开的程序记录
  269. Dim Keys, i, KeyValues, k
  270. Keys = Split(EnumKeyEx("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\USERASSIST"), "|")
  271. U_Keys = UBound(Keys)
  272. For i = 0 To U_Keys
  273. KeyValues = Plugin.LXJ_PLUG.lxj_EnumValue(Keys(i))
  274. For k = 1 To KeyValues(0)
  275. If KeyValues(k) <> "Version" Then
  276. Call Plugin.LXJ_PLUG.lxj_DelValue(Keys(i), KeyValues(k))
  277. End If
  278. Next
  279. Next
  280. End Function
  281. Event Main.技能热键1.SelectChange
  282. If Main.技能热键1.ListIndex = 0 Then
  283. Main.使用间隔1.Enabled = false
  284. Main.使用等待1.Enabled = false
  285. Else
  286. Main.使用间隔1.Enabled = true
  287. Main.使用等待1.Enabled = true
  288. End If
  289. End Event
  290. Event Main.技能热键2.SelectChange
  291. If Main.技能热键2.ListIndex = 0 Then
  292. Main.使用间隔2.Enabled = false
  293. Main.使用等待2.Enabled = false
  294. Else
  295. Main.使用间隔2.Enabled = true
  296. Main.使用等待2.Enabled = true
  297. End If
  298. End Event
  299. Event Main.技能热键3.SelectChange
  300. If Main.技能热键3.ListIndex = 0 Then
  301. Main.使用间隔3.Enabled = false
  302. Main.使用等待3.Enabled = false
  303. Else
  304. Main.使用间隔3.Enabled = true
  305. Main.使用等待3.Enabled = true
  306. End If
  307. End Event
  308. Event Main.技能热键4.SelectChange
  309. If Main.技能热键4.ListIndex = 0 Then
  310. Main.使用间隔4.Enabled = false
  311. Main.使用等待4.Enabled = false
  312. Else
  313. Main.使用间隔4.Enabled = true
  314. Main.使用等待4.Enabled = true
  315. End If
  316. End Event
  317. Event Main.技能热键5.SelectChange
  318. If Main.技能热键5.ListIndex = 0 Then
  319. Main.使用间隔5.Enabled = false
  320. Main.使用等待5.Enabled = false
  321. Else
  322. Main.使用间隔5.Enabled = true
  323. Main.使用等待5.Enabled = true
  324. End If
  325. End Event
复制代码

源文件:

temp.zip (, 下载次数:388)



注:大漠功能涉及插件付费,需要在软件中自行替换为自己的大漠注册码。

最后编辑昨夜星辰 最后编辑于 2022-07-27 17:33:47
近期制作:
传奇私服各种反外挂插件版本挂机软件,可教可售
原神加速、连发辅助工具
天下3自动钓大鱼辅助工具

承接脚本定制,点击下方联系
QQ:250039815

交流群:101296478

2#

11111111111111

3#

66666

4#

学习一下下

学习一下下

5#

学习

6#

学习一下

7#

66666666

8#

观摩观摩安安安安安安

9#

6666顶一下

10#

学习

11#

1adadfa

12#

1111111111

13#

444444444666666666学习学习

14#

111111111111111

15#

666666

16#

看看

17#

look look 谢谢

18#

学习

19#

学习一下

20#

导致文件

发新话题 回复该主题