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

软件版本: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

快捷导航

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

发新话题 回复该主题

[昨夜星辰] 【实战+源码+思路】网游SEYX宝箱猜数字 [复制链接]

1#
解密界面:

解密提示:



思路:
游戏解密需要输入0~999内的数字,不限制输入次数。每次输入一个数字点击“开锁”会弹出提示,告诉你输入的数字是比正确密码大还是小。
1、从0开始输入,提示密码更大就保存当前数字,每次递增100,直至提示密码更小。
2、然后把上次保存的数字输入,提示密码更大就保存当前数字,每次递增10,直至提示密码更小。
3、继续把上次保存的数字输入,提示密码更大就保存当前数字,每次递增1,直至提示密码正确。

以上方法最多输入30次密码,即可测出正确密码。当然你也可以穷举密码,但是那样最多需要输入1000次密码,才能测出正确密码。相比穷举法,以上方法效率要高得多。

模拟游戏解密场景源码:
  1. Dim 答案
  2. 答案 = 生成随机数(0, 999)
  3. TracePrint "答案:" & 答案
  4. Dim 当前数字, 递增值, 循环次数, 探测值
  5. 当前数字 = 0
  6. 循环次数 = 1
  7. 递增值 = 100
  8. Dim 操作次数
  9. 操作次数 = 0
  10. Do
  11. 操作次数 = 操作次数 + 1
  12. TracePrint "当前数字:" & 当前数字
  13. If 答案 > 当前数字 Then
  14. 探测值 = 当前数字
  15. ElseIf 答案 < 当前数字 Then
  16. 当前数字 = 探测值
  17. 循环次数 = 循环次数 + 1
  18. ElseIf 答案 = 当前数字 Then
  19. TracePrint "答案匹配"
  20. Exit Do
  21. End If
  22. If 循环次数 = 2 Then
  23. 递增值 = 10
  24. ElseIf 循环次数 = 3 Then
  25. 递增值 = 1
  26. End If
  27. 当前数字 = 当前数字 + 递增值
  28. If 当前数字 > 999 Then
  29. 当前数字 = 999
  30. End If
  31. Loop
  32. TracePrint "操作次数:" & 操作次数
  33. Function 生成随机数(最小值, 最大值)
  34. Randomize
  35. 生成随机数 = Int((最大值 - 最小值 + 1) * Rnd + 最小值)
  36. End Function
复制代码
实战源码:
  1. //游戏分辨率为1024X768 窗口模式
  2. Public Declare Function SetDllPathW Lib ".\plugin\dmreg.dll" Alias "SetDllPathW" (ByVal path As String, ByVal mode As Long) As Long
  3. Dim 脚本ID, 脚本文件存放路径
  4. 脚本ID = GetMacroID()
  5. 脚本文件存放路径 = "C:\释厄英雄宝箱猜数字\" & 脚本ID & "\"
  6. Call 创建文件夹Ex(脚本文件存放路径)
  7. Call 释放文件
  8. Call 注册大漠插件到系统
  9. Call 创建大漠对象
  10. Call 设置大漠相对路径(脚本文件存放路径)
  11. Dim hwnd
  12. hwnd = dm.FindWindow("GLFW30", "释厄英雄")
  13. If hwnd = 0 Then
  14. MessageBox "未能找到游戏窗口!"
  15. ExitScript
  16. End If
  17. dm_ret = dm.BindWindowEx(hwnd, "normal", "normal", "normal", "", 0)
  18. If dm_ret = 0 Then
  19. MessageBox "游戏绑定失败,错误代码:" & dm.GetLastError()
  20. ExitScript
  21. End If
  22. Dim ksan_ret
  23. ksan_ret = 是否找到了开锁按钮(1, 50, true)
  24. If ksan_ret(0) = - 1 Then
  25. MessageBox "未找到开锁界面!"
  26. ExitScript
  27. End If
  28. Dim 当前数字, 递增值, 循环次数, 探测值
  29. 当前数字 = 0
  30. 循环次数 = 1
  31. 递增值 = 100
  32. Dim tjks_ret
  33. Do
  34. Call 输入数字(hwnd, ksan_ret, 当前数字)
  35. tjks_ret = 提交开锁(ksan_ret)
  36. Call 关闭开锁结果提示
  37. If tjks_ret = 1 Then //密码更大
  38. 探测值 = 当前数字
  39. ElseIf tjks_ret = 2 Then //密码更小
  40. 当前数字 = 探测值
  41. 循环次数 = 循环次数 + 1
  42. ElseIf tjks_ret = 0 Then //密码匹配
  43. TracePrint "答案匹配"
  44. Exit Do
  45. End If
  46. If 循环次数 = 2 Then
  47. 递增值 = 10
  48. ElseIf 循环次数 = 3 Then
  49. 递增值 = 1
  50. End If
  51. 当前数字 = 当前数字 + 递增值
  52. If 当前数字 > 999 Then
  53. 当前数字 = 999
  54. End If
  55. TracePrint "当前数字:" & 当前数字
  56. Loop
  57. MessageBox "开锁成功!"
  58. Function 输入数字(hwnd, ksan_ret, str)
  59. Call 移动左单击(ksan_ret(1) + 1, ksan_ret(2) - 463 + 生成随机数(2, 2))
  60. Delay 50
  61. dm.SendString hwnd, str
  62. Delay 100
  63. End Function
  64. Function 提交开锁(ksan_ret)
  65. Dim ret
  66. Do
  67. Call 移动左单击(ksan_ret(1) + 生成随机数(2, 2), ksan_ret(2) + 生成随机数(2, 2))
  68. Delay 50
  69. ret = 是否找到了开锁结果(20, 50, true)
  70. If ret(0) <> - 1 Then
  71. Exit Do
  72. End If
  73. loop
  74. 提交开锁 = ret(0)
  75. End Function
  76. Function 是否找到了开锁按钮(查找次数, 查找间隔, 返回条件)
  77. 是否找到了开锁按钮 = 循环查找指定图片E_扩展(0, 0, 1023, 767, "开锁按钮.bmp", "101010", 0.95, 0, 查找次数, 查找间隔, 返回条件)
  78. End Function
  79. Function 是否找到了开锁结果(查找次数, 查找间隔, 返回条件)
  80. 是否找到了开锁结果 = 循环查找指定图片E_扩展(403,372,569,398, "没错.bmp|密码更大.bmp|密码更小.bmp", "101010", 0.9, 0, 查找次数, 查找间隔, 返回条件)
  81. End Function
  82. Function 关闭开锁结果提示
  83. Do
  84. Call 移动左单击(823 + 生成随机数(2, 2), 382 + 生成随机数(2, 2))
  85. Delay 50
  86. If 是否找到了开锁结果(20, 50, false)(0) = - 1 Then
  87. Exit Do
  88. End If
  89. Loop
  90. End Function
  91. Function 移动左单击(x, y)
  92. dm.Moveto x, y
  93. Delay 10
  94. dm.LeftClick
  95. End Function
  96. Function 生成随机数(最小值, 最大值)
  97. Randomize
  98. 生成随机数 = Int((最大值 - 最小值 + 1) * Rnd + 最小值)
  99. End Function
  100. Function 循环查找指定图片E(x1, y1, x2, y2, 图片名, 查找次数, 查找间隔, 返回条件)
  101. Dim ret
  102. For 查找次数
  103. ret = dm.FindPicE(x1, y1, x2, y2, 图片名, "000000", 0.9, 0)
  104. If 返回条件 = true Then
  105. If ret <> "-1|-1|-1" Then
  106. Exit For
  107. End If
  108. End If
  109. If 返回条件 = false Then
  110. If ret = "-1|-1|-1" Then
  111. Exit For
  112. End If
  113. End If
  114. delay 查找间隔
  115. Next
  116. ret = Split(ret, "|")
  117. 循环查找指定图片E = Array(CLng(ret(0)), CLng(ret(1)), CLng(ret(2)))
  118. End Function
  119. Function 循环查找指定图片E_扩展(x1, y1, x2, y2, 图片名, 偏色, 精准度, 查找方向, 查找次数, 查找间隔, 返回条件)
  120. Dim ret
  121. For 查找次数
  122. ret = dm.FindPicE(x1, y1, x2, y2, 图片名, 偏色, 精准度, 查找方向)
  123. If 返回条件 = true Then
  124. If ret <> "-1|-1|-1" Then
  125. Exit For
  126. End If
  127. End If
  128. If 返回条件 = false Then
  129. If ret = "-1|-1|-1" Then
  130. Exit For
  131. End If
  132. End If
  133. Delay 查找间隔
  134. Next
  135. ret = Split(ret, "|")
  136. 循环查找指定图片E_扩展 = Array(CLng(ret(0)), CLng(ret(1)), CLng(ret(2)))
  137. End Function
  138. Sub OnScriptExit()
  139. Call dm.UnBindWindow()
  140. End Sub
  141. Sub 释放文件
  142. PutAttachment 脚本文件存放路径, "*.*"
  143. PutAttachment ".\plugin", "dmreg.dll"
  144. End Sub
  145. Sub 创建大漠对象
  146. Set dm = createobject("dm.dmsoft")
  147. End Sub
  148. Sub 设置大漠相对路径(路径)
  149. dm_ret = dm.SetPath(路径)
  150. End Sub
  151. Sub 注册大漠插件到系统()
  152. Dim ver, need_ver
  153. need_ver="3.1233"
  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 创建文件夹Ex(路径)
  164. Dim 当前路径
  165. If 获取路径基本名称(路径) <> "" Then
  166. 当前路径 = 路径
  167. 路径 = 获取路径父文件夹(路径)
  168. Call 创建文件夹Ex(路径)
  169. Call 创建文件夹(当前路径)
  170. End If
  171. End Sub
  172. Function 获取路径父文件夹(DriveSpec)
  173. Dim fso
  174. Set fso = CreateObject("Scripting.FileSystemObject")
  175. 获取路径父文件夹 = fso.GetParentFolderName(Drivespec)
  176. set fso = nothing
  177. End Function
  178. Function 获取路径基本名称(filespec)
  179. Dim fso
  180. Set fso = CreateObject("Scripting.FileSystemObject")
  181. 获取路径基本名称 = fso.GetBaseName(filespec)
  182. set fso = nothing
  183. End Function
  184. Sub 创建文件夹(路径)
  185. Dim fso
  186. Set fso = CreateObject("Scripting.FileSystemObject")
  187. fso.CreateFolder 路径
  188. set fso = nothing
  189. End Sub
复制代码


实战源文件:

test.zip (, 下载次数:16)


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

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

交流群:101296478

2#

认真学习

3#

666666

4#

学习一下。。

5#

,

学习学习

6#

666

7#

30次还是太多了,最快的解法是每次取中间值。

8#

感谢分享

9#

感谢分享,支持大佬

10#

认真学习

11#

,

学习学习

12#

认真学习

13#

猜数字

发新话题 回复该主题