大漠插件常用问题解答

更新时间:2023-06-24 18:33:04 阅读: 评论:0

⼤漠插件常⽤问题解答
VB语法
1常见问题
1 LoadPic和FreePic什么时候调⽤
LoadPic是把指定的图⽚加载⼊插件内部缓存(内存),这样在调⽤FindPic等等所有和图⽚相关的函数时,都不需要再从⽂件加载图⽚,这样相当于加快了函数执⾏的效率. FreePic是把加载⼊内部缓存(内存)的图⽚释放.
事实上,插件内部在你调⽤所有的和图⽚相关的函数,⽐如FindPic等函数后,会⾃动把你调⽤过的相关图⽚加⼊缓存(内存),就相当于你调⽤了LoadPic。所以如果不是对性能有太苛刻的要求,⼀般不需要调⽤LoadPic,除⾮有特别⽤途.
2 Regsvr32出现常见错误
部分精简GHOST系统有。原因是把系统DLL给精简掉导致的。
解决办法开始->运⾏->Regsvr32 atl.dll 即可
0x8002801c:
系统没有关闭UAC. 主要在win7 vista 2008系统出现.
解决办法,⼿动关闭UAC或者regsvr32⽤管理员权限启动,或者调⽤RegDll的进程必须有管理员权限.
⼿动关闭UAC的⽅法
控制⾯版-⽤户帐号-更改⽤户帐户控制设置
3 VBS调⽤规范command com
,建议⼤家⽤VBS的⽅式来调⽤,具体调⽤规范如下,两种⽅式可以结合使⽤
1.    ⽆返回值的不能带括号 ,或者说⽆括号不能带返回值,例如
dm.FindStr 0,0,2000,2000,"长安","aaaaa-00000",1.0,intX,intY
dm.MoveTo intX,intY
dm.LeftClick
dm.SetPath "c:\xxxx"
dm.SetDict 0,""
dm.LoadPic "*.bmp"
等等,这些都是不需要返回值的,那么不需要加括号,当然,你也可以加括号,但是就必须遵循规则2
2.有返回值的必须带括号,或者说,有括号必须有返回值,例如
dm_ret = dm.FindStr(0,0,2000,2000,"长安","aaaaa-00000",1.0,intX,intY)
dm_ret = dm.MoveTo(intX,intY)
dm_ret = dm.LeftClick()
dm_ret = dm.SetPath("c:\xxxx")
dm_ret = dm.SetDict(0,"")
dm_ret = dm.LoadPic("*.bmp")
有些函数,是必须有返回值的,那么就必须带括号,⽐如Ocr函数等
ss = dm.Ocr(0,0,2000,2000,"aaaaaa-000000",1.0)
4按键多线程调⽤插件
⽬前来讲,按键的多线程还不够成熟。尽量少⽤。以下是在按键下使⽤多线程调⽤插件的⼀个⽰例.
// 注册部分我就省略了
Dim hwnd
Set dm = createobject("dm.dmsoft")
TracePrint dm.Ver()
// 主绑定(当然你也可以不要主绑定。直接在线程⾥绑定)
hwnd = dm.GetMouPointWindow()
dm_ret = dm.BindWindow(hwnd, "dx", "windows", "windows", 0)
TracePrint dm_ret
Id1 = BeginThread(测试线程)
Id2 = BeginThread(测试线程)
Do
Delay 2000
TracePrint "主线程"
中国日语Loop
// 这⾥必须⽤ExitScript 以免线程⽆法停⽌.
ExitScript
Sub 测试线程()
Set dm = createobject("dm.dmsoft")
/
struggle是什么意思/ 副绑定
dm_ret = dm.BindWindow(hwnd, "dx", "windows", "windows", 0)
TracePrint dm_ret
Do
Delay 2000
TracePrint "⼦线程"
Loop
End Sub
Sub OnScriptExit()
qefTracePrint "OnScriptExit"
dm.UnBindWindow
End Sub
5本机⽂字识别正常为什么别的机器识别不正常
这是⼀个很常见的问题,不同机器,由于系统的不同或者软件设置的差异,会导致⽂字颜⾊,字体等可能存在不同。
⼀般来说解决这个问题,以前的办法是这样,利⽤Capture函数,⽐如
dm_ret = dm.FindStr(0,0,2000,2000,"长安","ffffff-000000",1.0,x,y)
if x < 0 then
dm_ret = dm.Capture(0,0,2000,2000,"screen.bmp")
end if
这样当找不到长安时,就会截图保存为screen.bmp,然后作者可以分析这个⽂件,来对⾃⼰的字库或者代码进⾏调节优化.
但这个办法有个延后性的问题,因为FindStr和Capture是两个操作,分别调⽤了两次截屏,所以可能
会有稍许不⼀致的情况存在.为了完完全全的对FindStr时,产⽣的截图进⾏分析,我们需要⽤到2.1131版本提供的两个函数。
CapturePre和EnableDisplayDebug.
那么代码如下
dm.EnableDisplayDebug 1
dm_ret = dm.FindStr(0,0,2000,2000,"长安","ffffff-000000",1.0,x,y)
if x < 0 then
dm_ret = dm.CapturePre("screen.bmp")
end if
这样就把FindStr时的截图保存下来了,就完全恢复了现场. 因为CapturePre这个函数是截取上⼀次的截图数据.
6插件释放到Plugin⾥的要求
⾸先从理论上来说释放到任何⽬录都是没问题的
但是按键以及简单游或者⼩精灵的Plugin⽬录⽐较特殊
原因在于按键会⾃动把Plugin⽬录下的所有dll强⾏注册到系统(相当于调⽤了Regsvr32 *.dll)
⽽且按键还会⾃动为每个dll创建相对应的com对象,这样导致Plugin下的dll会被暂时锁定,
安徽翻译此时,如果再进⾏对此dll的注册,都会失败.
所以如果你释放插件到Plugin⽬录,那么导致的问题就是如果要进⾏插件升级,很可能就会失败,导致脚本错误.
所以我强烈建议⼤家养成好习惯,不要把dll释放到Plugin,⾃⼰⼿动注册最安全可靠.这样既利⼈⼜利⼰.
从2.1118B版本之后,⼤漠插件将禁⽌释放到Plugin⽬录,以避免⼀系列升级产⽣的BUG!
同时,也禁⽌⽤Plugin⽅式来调⽤插件,那个⽅式也是⾮常不安全的.
请⼤家严格按照vbs的语法来使⽤插件.
7 出现VBS错误的解决办法
出现这种问题,99%的原因是由于插件版本没有注册到系统导致,解决办法如下
1. 删除Plugin⽬录的dm.dll和dm_jdyou.dll (简单游的话直接删除bin⽬录)
2. 插件的释放路径不要释放到Plugin⽬录,改为c盘的某个⽬录,并且⽤RegDll来注册,如下
PutAttachment "c:\test_game" ,"*.*"
PutAttachment ".\Plugin" ,"RegDll.dll"
Call Plugin.RegDll.Reg("c:\test_game\dm.dll")
3. 重新启动脚本即可
4. 如果这样还不⾏,尝试⼿动注册,⼿动在运⾏下,输⼊regsvr32 c:\test_game\dm.dll,
如果这样还提⽰出错,那就是系统问题,重装⼲净安全的系统.
最好不要⽤ghost系统,很多ghost系统都是修改过系统⽂件的,很危险!
8出现坐标越界的解决办法
出现这种错误,⼀般是你的代码给插件传递的参数有明显的错误,帮助调试脚本很有⽤.
⽐如FindStr函数mir
dm_ret = dm.FindStr(20,0,10,100,"abc","000000-000000",1.0,x,y)
这样显然x1(20) >= x2(10) 这显然是错误的
再⽐如
dm_ret = dm.FindStr(-2000,0,-1000,100,"abc","000000-000000",1.0,x,y)
这样显然x2⼩于0 这也是明显错误不可能有这样的情况出现
等等类似的错误
如果不想显⽰这样的信息,可以调⽤插件的接⼝SetShowErrorMsg来屏蔽这些错误
⽐如
dm.SetShowErrorMsg 0
9对边缘模糊⽂字的识别
对于这个问题,问的⼈⽐较多
很多情况下,⽂字并不是我们想象的边缘锐利,⽽是有⼀定的渐变,这时,再去⽤普通的⽂字识别,误判的⼏率就很⾼
⽽且就算是加⼊了模糊度判定,还是可能会误判.
解决办法是,不要⽤⽂字识别,改⽤多点找⾊,或者是⾃⼰制作透明图,⾃⼰写算法来进⾏判别.
制作透明图,⽤我的⼯具就可以很⽅便快捷的制作出来,这样的准确率是最好的,效率也是最⾼的.
10后台绑定会对哪些接⼝有影响
由于后台绑定操作和⼀系列接⼝有关系,那么有哪些接⼝会有影响呢?
图⾊部分⽂字识别部分,键⿏部分,以及答题接⼝的FapCapture会有影响,,这些接⼝的具体操作是根据绑定的具体参数⽽定的。
那么其它部分的接⼝完全没有影响,可独⽴操作.
11插件收费功能
⽬前插件⼤部分功能都是免费给⼤家使⽤,但下⾯这些功能是收费使⽤。(简单游平台⽆此限制,⼤部分功能上按键上⽆限制)
紫⾊⽂字表⽰的功能在按键上是不⽀持的,仅仅⽀持简单游平台和付费⽤户.  按键平台要调⽤紫⾊⽂字标识的功能,必须配合Reg或者RegEx函数.
1.BindWindow和BindWindowEx 中的模式1 3 5 6 7. (强⼒绑定模式,并且可过部分检测)
2.BindWindow和BindWindowEx中的dx.mou.cursor, (后台⿏标特征.)
3.BindWindowEx中的dx.public.fake.window.min和dx.public.disable.window.show (假最⼩化功能)
4.插件⾃我保护功能. (仅仅在简单游平台和付费⽤户开启.按键不⽀持) (收费插件会开启部分防检测功能)
5.AsmCall接⼝的多线程安全功能.(免费⽤户多线程会出现异常错误)
6.BindWindowEx中的dx.public.hide.dll. (插件隐藏功能)
7.EnumWindow和EnumWindowByProcess的属性32  (按窗⼝打开顺序枚举窗⼝)
8.EnableKeypadPatch , EnableKeypadSync和EnableMouSync  (键⿏同步接⼝)
9.内存接⼝中的FindIntEx FindFloatEx FindDoubleEx FindStringEx FindDataEx (强⼒⾼速内存搜索接⼝,多线程)
10. DisableFontSmooth和CheckFontSmooth (系统⽂字平滑设置)
11. FaqSend和FaqPost中的request_type类型为3(双坐标)  (⽀持同时传递2个坐标,对于多坐标验证很有⽤)
12. SetDisplayAcceler 设置硬件加速级别.  (设置系统的D3D硬件加速级别,有些窗⼝需要关闭这个才可以后台)
13. FindWindowByProcess和FindWindowByProcessId  (可根据进程名或者进程ID来枚举窗⼝)
14. RunApp 加强模式运⾏程序. (有些窗⼝⽆法⽤普通模式运⾏,可以尝试这个。强⼒模式基本上没有运⾏不了的)
15. Delay 不会阻塞UI,不占⽤CPU的延时. (⾼级语⾔的延时函数,效果同按键的Delay.省CPU)
16. FindWindowSuper  (可查找任意窗⼝的函数)
17. FindPicMem FindPicMemE FindPicMemEx (内存找图)
吊带衫 英文18. SetDictMem (内存设置字库)
19. GetNetTimeSafe (安全获取⽹络时间)
20. ForceUnBindWindow (强制解除绑定,有些⾮常时刻需要)
21. ReadIniPwd,WriteIniPwd  (INI加密读写)
22. KeyPressStr  (⽤连续的按键来模拟⽂字输⼊)
23. FaqCaptureFromFile (答题时⽀持从⽂件中获取句柄信息)
24. DmGuard  (仅仅在简单游平台和付费⽤户开启.按键不⽀持)。 (部分窗⼝需要)
25. EnableRealMou和EnableRealKeypad (模拟真实的⿏标和按键,可过部分检测)
26. BindWindowEx中的dx.public.active.api2 (部分窗⼝需要这个才可以后台)
27. BindWindowEx中的dx.public.input.ime以及SendStringIme  (强⼒输⼊接⼝,类似SendString, 但这个接⼝⼏乎可以⽀持任意窗⼝输⼊)
28. FoobarDrawLine (Foobar的画线接⼝)
29. BindWindowEx中的图⾊dx.graphic.3d.8  (D3D8的后台,部分窗⼝必须⽤这个才可以后台图⾊)
30. BindWindowEx中的aphic.protect (仅仅在简单游平台和付费⽤户开启.按键不⽀持). (图⾊防检测,很有⽤)
31. BindWindowEx中的dx.keypad.raw.input和dx.mou.raw.input (部分窗⼝必须指定这个才可以后台)
32. BindWindowEx中的图⾊dx.graphic.2d.2 (dx.graphic.2d的增强模式。部分窗⼝必须⽤这个才可以后台)
33. GetDmCount (获取当前进程DM对象数量)
34. SetMemoryHwndAsProcessId. (所有内存接⼝⽀持以进程ID来操作)
大学英语六级多少分过35. BindWindow和BindWindowEx的模式101和模式103. (仅仅在简单游平台和付费⽤户开启.按键不⽀持).  (超级绑定模式,更加安全,避免被恶意检测.)
36. BindWindowEx中的属性dx.public.anti.api. (仅仅在简单游平台和付费⽤户开启.按键不⽀持).  (突破部分窗⼝后台保护.)
37. BindWindowEx中的属性dx.mou.input.lock.api2. (⽤于解决部分窗⼝在后台操作时,前台⿏标会移动的问题.)
38. FindShape FindShapeE FindShapeEx (同按键的找形状)
39. FindStrS FindStrExS FindStrFastS  FindFastStrExS  FindPicS FindPicExS
40. BindWindowEx中的属性 (突破部分窗⼝内存读写保护. 绑定成功即可读写.)
41. EnableFakeActive. (控制可以开启或者关闭后台假激活.此函数很少⼈⽤到.注意看函数说明.)
42. GetScreenDataBmp. (类似GetScreenData.不过此函数直接返回封装好的bmp格式的数据. 可直接⽤于⼆次开发.)
43. EnableMouLockPosition. (解决部分窗⼝后台点击会影响到前台.)
44. BindWindowEx中的属性dx.mou.input.lock.api3. (⽤于解决部分窗⼝在后台操作时,前台⿏标会移动的问题.)
45. BindWindowEx中的dx.public.km.protect (仅仅在简单游平台和付费⽤户开启.按键不⽀持). (dx键⿏防检测,很有⽤)
46. DecodeFile和EncodeFile. (⽤于⽂件加解密.)
exos47. BindWindowEx中的dx.public.prevent.block. (某些窗⼝使⽤绑定模式1 3 5 7 101 103可能会导致窗⼝卡死. 这个属性可以避免卡死.)
11如何保证注册码的安全
插件的注册码可以在Reg和RegEx中注册。
很多⼈直接把注册码以明⽂⽅式写在参数⾥,这实际上是很不安全的做法.
⽐较安全点的做法是把注册码加密。并且在传递给Reg或者RegEx前解密.
并且把Reg和RegEx这段代码⽤强壳来保护. ⽐如vmp等.
另外就是推荐使⽤RegEx来注册插件。可以在后台详细记录看到软件附加信息.
这样可以⼿动排查被破解的可能性.
12后台识别⿏标特征码
⾸先后台⿏标特征码仅适⽤于按键和简单游平台
1.    先⽤⼤漠综合⼯具来获取前台⿏标特征码,如果前台⽆法获取到特征码,那么就⽆法获取后台⿏标特征码.
2.    然后⽤以下代码,来测试是否有⿏标特征码
t dm = createobject("dm.dmsoft")
TracePrint dm.Ver()
hwnd = dm.GetMouPointWindow()
feet是什么意思dm_ret = dm.BindWindow(hwnd,"dx2","dx2","dx",0)
TracePrint dm_ret
dm.MoveTo 0,0
Delay 100
TracePrint dm.GetCursorShape()
// 下⾯这句是输出当前⿏标热点位置(同样⽀持后台)
TracePrint dm.GetCursorSpot()
dm_ret = dm.UnBindWindow()
如果以上代码可以正常输出⿏标特征,那就可以确定⽀持后台⿏标特征.
要注意的是,要想正确获取后台⿏标特征,必须在dm.MoveTo或者MoveR命令之后,加⼊⼀定的延时,以等待后台获取到⿏标特征.
⼀点⼩经验分享,有些窗⼝在使⽤⼀次MoveTo 可能获取不到特征码需要多移动⼏次⽐如
For 3
dm.MoveTo 30,40
Next
Delay 100
TracePrint dm.GetCursorShape()
13配置沙盘后台绑定
沙盘后台绑定只适⽤于版本2.1109之后的版本
具体⽅法
打开沙盘,配置-》编辑配置⽂件
在[GlobalSettings]这个类别下加⼊以下内容
OpenIpcPath=*check_hook_exist*
OpenIpcPath=*dx*
OpenIpcPath=*share*
OpenIpcPath=*Protected*
保存即可.
64位系统下必须安装64位沙盘,并且在沙盘设置->限制->降低管理员和超级⽤户组的权限中,去掉前⾯的勾. 每个沙盘都要如此设置. 14使⽤后台识别
// 下⾯是⼀个GDI后台识别的例⼦(只列举了OCR,其余函数类似)
hwnd = dm.GetForegroundWindow()
dm_ret = dm.GetClientSize(hwnd,screen_w,screen_h)
dm_ret = dm.SetDict(0,"C:\Documents and Settings\Administrator\桌⾯\1.txt")
dm_ret = dm.BindWindow(hwnd,"gdi","normal","normal",0)
s = dm.Ocr(0,0, screen_w, screen_h,"FEFB01-000000",1.0)
MessageBox s
15使⽤绝对路径设置字库
⽐如我想把我的字库放到c:\test⽬录,那么代码如下:
PutAttachment "c:\test","*.txt"
dm_ret = dm.SetPath("c:\test")
dm_ret = dm.SetDict(0,"")
16使⽤相对路径设置字库
⽐如我要把我的字库放在Res⽬录下,那么代码如下:
ba_path = dm.GetBaPath()
dm_ret = dm.SetPath(ba_path)
dm_ret = dm.SetDict(0,"")
注意,要保证你的dm.dll是在Res⽬录,否则上⾯这⾯这段代码将把路径设置在你系统中dm.dll所在的路径
17⼿动注册插件到系统
⽐如dm.dll放在c:\test⽬录
那么开始->运⾏->cmd
在命令提⽰符下,输⼊cd c:\test
再输⼊ regsvr32 dm.dll 即可,这样会提⽰插件已经注册到系统中.
需要注意的是,可能有别的作者把dm.dll释放到系统⽬录。这样优先注册的是系统⽬录的插件.

本文发布于:2023-06-24 18:33:04,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1030630.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:部分   后台   插件   系统   按键   函数   获取   功能
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图