| 
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                     
                                        
                                     
                                    
                                        
                                        - 博士后
 
                                        
                                        - 728264
 
                                        - 3503
 
                                        - 18
 
                                        - 1900 朵
 
                                        - 27455 个
 
                                        - 1719 个
 
                                        - 82980
 
                                        - 2011-08-04
 
                                     
                                    
                                    
                                    
                                 | 
                                
                                    
                                        
                                            
                                                
                                                1#
                                                
                                            
                                        
                                        
                                            
                                                
                                                
                                                t
                                                T
                                             
                                            
                                            
                                            
                                                
                                                发表于 2022-03-30 01:37
                                            
                                                                                        
                                            | 
                                            
                                            
                                            |只看楼主
                                            
                                         
                                     
                                    
                                    
                
                
                
                
                    
                    
                    
                   
                    
                        
                        
                        解密界面:  解密提示:     思路:游戏解密需要输入0~999内的数字,不限制输入次数。每次输入一个数字点击“开锁”会弹出提示,告诉你输入的数字是比正确密码大还是小。1、从0开始输入,提示密码更大就保存当前数字,每次递增100,直至提示密码更小。2、然后把上次保存的数字输入,提示密码更大就保存当前数字,每次递增10,直至提示密码更小。3、继续把上次保存的数字输入,提示密码更大就保存当前数字,每次递增1,直至提示密码正确。 以上方法最多输入30次密码,即可测出正确密码。当然你也可以穷举密码,但是那样最多需要输入1000次密码,才能测出正确密码。相比穷举法,以上方法效率要高得多。模拟游戏解密场景源码:- Dim 答案
  
- 答案 = 生成随机数(0, 999)
  
- TracePrint "答案:" & 答案
  
- Dim 当前数字, 递增值, 循环次数, 探测值
  
- 当前数字 = 0
  
- 循环次数 = 1
  
- 递增值 = 100
  
- Dim 操作次数
  
- 操作次数 = 0
  
- Do
  
- 操作次数 = 操作次数 + 1
  
- TracePrint "当前数字:" & 当前数字
  
- If 答案 > 当前数字 Then 
  
- 探测值 = 当前数字
  
- ElseIf 答案 < 当前数字 Then
  
- 当前数字 = 探测值
  
- 循环次数 = 循环次数 + 1
  
- ElseIf 答案 = 当前数字 Then
  
- TracePrint "答案匹配"
  
- Exit Do
  
- End If
  
- If 循环次数 = 2 Then
  
- 递增值 = 10
  
- ElseIf 循环次数 = 3 Then
  
- 递增值 = 1
  
- End If
  
- 当前数字 = 当前数字 + 递增值
  
- If 当前数字 > 999 Then 
  
- 当前数字 = 999
  
- End If
  
- Loop
  
- TracePrint "操作次数:" & 操作次数
  
- Function 生成随机数(最小值, 最大值)
  
- Randomize
  
- 生成随机数 = Int((最大值 - 最小值 + 1) * Rnd + 最小值)
  
- End Function
  
  复制代码 实战源码:
 - //游戏分辨率为1024X768 窗口模式
  
- Public Declare Function SetDllPathW Lib ".\plugin\dmreg.dll" Alias "SetDllPathW" (ByVal path As String, ByVal mode As Long) As Long
  
- Dim 脚本ID, 脚本文件存放路径
  
- 脚本ID = GetMacroID()
  
- 脚本文件存放路径 = "C:\释厄英雄宝箱猜数字\" & 脚本ID & "\"
  
- Call 创建文件夹Ex(脚本文件存放路径)
  
- Call 释放文件
  
- Call 注册大漠插件到系统
  
- Call 创建大漠对象
  
- Call 设置大漠相对路径(脚本文件存放路径)
  
- Dim hwnd
  
- hwnd = dm.FindWindow("GLFW30", "释厄英雄")
  
- If hwnd = 0 Then 
  
- MessageBox "未能找到游戏窗口!"
  
- ExitScript
  
- End If
  
- dm_ret = dm.BindWindowEx(hwnd, "normal", "normal", "normal", "", 0)
  
- If dm_ret = 0 Then 
  
- MessageBox "游戏绑定失败,错误代码:" & dm.GetLastError()
  
- ExitScript
  
- End If
  
- Dim ksan_ret
  
- ksan_ret = 是否找到了开锁按钮(1, 50, true)
  
- If ksan_ret(0) = - 1 Then 
  
- MessageBox "未找到开锁界面!"
  
- ExitScript 
  
- End If
  
- Dim 当前数字, 递增值, 循环次数, 探测值
  
- 当前数字 = 0
  
- 循环次数 = 1
  
- 递增值 = 100
  
- Dim tjks_ret
  
- Do
  
- Call 输入数字(hwnd, ksan_ret, 当前数字)
  
- tjks_ret = 提交开锁(ksan_ret)
  
- Call 关闭开锁结果提示
  
- If tjks_ret = 1 Then //密码更大
  
- 探测值 = 当前数字
  
- ElseIf tjks_ret = 2 Then //密码更小
  
- 当前数字 = 探测值
  
- 循环次数 = 循环次数 + 1
  
- ElseIf tjks_ret = 0 Then //密码匹配
  
- TracePrint "答案匹配"
  
- Exit Do
  
- End If
  
- If 循环次数 = 2 Then
  
- 递增值 = 10
  
- ElseIf 循环次数 = 3 Then
  
- 递增值 = 1
  
- End If
  
- 当前数字 = 当前数字 + 递增值
  
- If 当前数字 > 999 Then 
  
- 当前数字 = 999
  
- End If
  
- TracePrint "当前数字:" & 当前数字
  
- Loop
  
- MessageBox "开锁成功!"
  
- Function 输入数字(hwnd, ksan_ret, str)
  
- Call 移动左单击(ksan_ret(1) + 1, ksan_ret(2) - 463 + 生成随机数(2, 2))
  
- Delay 50
  
- dm.SendString hwnd, str
  
- Delay 100
  
- End Function
  
- Function 提交开锁(ksan_ret)
  
- Dim ret
  
- Do 
  
- Call 移动左单击(ksan_ret(1) + 生成随机数(2, 2), ksan_ret(2) + 生成随机数(2, 2))
  
- Delay 50
  
- ret = 是否找到了开锁结果(20, 50, true)
  
- If ret(0) <> - 1 Then 
  
- Exit Do 
  
- End If
  
- loop 
  
- 提交开锁 = ret(0)
  
- End Function
  
- Function 是否找到了开锁按钮(查找次数, 查找间隔, 返回条件)
  
- 是否找到了开锁按钮 = 循环查找指定图片E_扩展(0, 0, 1023, 767, "开锁按钮.bmp", "101010", 0.95, 0, 查找次数, 查找间隔, 返回条件)
  
- End Function
  
- Function 是否找到了开锁结果(查找次数, 查找间隔, 返回条件)
  
- 是否找到了开锁结果 = 循环查找指定图片E_扩展(403,372,569,398, "没错.bmp|密码更大.bmp|密码更小.bmp", "101010", 0.9, 0, 查找次数, 查找间隔, 返回条件)
  
- End Function
  
- Function 关闭开锁结果提示
  
- Do 
  
- Call 移动左单击(823 + 生成随机数(2, 2), 382 + 生成随机数(2, 2))
  
- Delay 50
  
- If 是否找到了开锁结果(20, 50, false)(0) = - 1 Then 
  
- Exit Do 
  
- End If
  
- Loop 
  
- End Function
  
- Function 移动左单击(x, y)
  
- dm.Moveto x, y
  
- Delay 10
  
- dm.LeftClick 
  
- End Function
  
- Function 生成随机数(最小值, 最大值)
  
- Randomize
  
- 生成随机数 = Int((最大值 - 最小值 + 1) * Rnd + 最小值)
  
- End Function
  
- Function 循环查找指定图片E(x1, y1, x2, y2, 图片名, 查找次数, 查找间隔, 返回条件)
  
- Dim ret
  
- For 查找次数
  
- ret = dm.FindPicE(x1, y1, x2, y2, 图片名, "000000", 0.9, 0)
  
- If 返回条件 = true Then 
  
- If ret <> "-1|-1|-1" Then 
  
- Exit For
  
- End If
  
- End If
  
- If 返回条件 = false Then 
  
- If ret = "-1|-1|-1" Then 
  
- Exit For
  
- End If
  
- End If
  
- delay 查找间隔
  
- Next
  
- ret = Split(ret, "|")
  
- 循环查找指定图片E = Array(CLng(ret(0)), CLng(ret(1)), CLng(ret(2)))
  
- End Function
  
- Function 循环查找指定图片E_扩展(x1, y1, x2, y2, 图片名, 偏色, 精准度, 查找方向, 查找次数, 查找间隔, 返回条件)
  
- Dim ret
  
- For 查找次数
  
- ret = dm.FindPicE(x1, y1, x2, y2, 图片名, 偏色, 精准度, 查找方向)
  
- If 返回条件 = true Then 
  
- If ret <> "-1|-1|-1" Then 
  
- Exit For
  
- End If
  
- End If
  
- If 返回条件 = false Then 
  
- If ret = "-1|-1|-1" Then 
  
- Exit For
  
- End If
  
- End If
  
- Delay 查找间隔
  
- Next
  
- ret = Split(ret, "|")
  
- 循环查找指定图片E_扩展 = Array(CLng(ret(0)), CLng(ret(1)), CLng(ret(2)))
  
- End Function
  
- Sub OnScriptExit()
  
- Call dm.UnBindWindow()
  
- End Sub
  
- Sub 释放文件
  
- PutAttachment 脚本文件存放路径, "*.*"
  
- PutAttachment ".\plugin", "dmreg.dll"
  
- End Sub
  
- Sub 创建大漠对象
  
- Set dm = createobject("dm.dmsoft")
  
- End Sub
  
- Sub 设置大漠相对路径(路径)
  
- dm_ret = dm.SetPath(路径)
  
- End Sub
  
- Sub 注册大漠插件到系统()
  
- Dim ver, need_ver
  
- need_ver="3.1233"
  
- Call SetDllPathW(脚本文件存放路径 & "dm.dll", 0)
  
- Set dm = createobject("dm.dmsoft")
  
- ver = dm.ver()
  
- If ver = "" Then 
  
- MessageBox "插件对象创建失败!"
  
- ElseIf ver <> need_ver Then
  
- MessageBox "插件版本错误,当前使用的版本是:" & ver & ",插件所在目录是:" & dm.GetBasePath()
  
- End If
  
- End Sub
  
- Sub 创建文件夹Ex(路径)
  
- Dim 当前路径
  
- If 获取路径基本名称(路径) <> "" Then 
  
- 当前路径 = 路径
  
- 路径 = 获取路径父文件夹(路径)
  
- Call 创建文件夹Ex(路径)
  
- Call 创建文件夹(当前路径) 
  
- End If
  
- End Sub
  
- Function 获取路径父文件夹(DriveSpec) 
  
- Dim fso
  
- Set fso = CreateObject("Scripting.FileSystemObject")
  
- 获取路径父文件夹 = fso.GetParentFolderName(Drivespec)
  
- set fso = nothing
  
- End Function
  
- Function 获取路径基本名称(filespec)
  
- Dim fso
  
- Set fso = CreateObject("Scripting.FileSystemObject")
  
- 获取路径基本名称 = fso.GetBaseName(filespec)
  
- set fso = nothing
  
- End Function
  
- Sub 创建文件夹(路径)
  
- Dim fso
  
- Set fso = CreateObject("Scripting.FileSystemObject")
  
- fso.CreateFolder 路径
  
- set fso = nothing
  
- End Sub
  
  复制代码 实战源文件: - test.zip                                                                                                                                                                                                                                                       (, 下载次数:435)
    
                        
                     
                    
                    
                    
                    
                    
                    
                    
                    
                        
                        
                     
                     |