-
-
[求助]按键精灵官方的DLL插件,去除只能用于按键精灵中分析
-
发表于: 2018-6-4 10:30 6566
-
最近想偷个懒调用按键精灵(按键精灵9)的DLL 结果发现DllRegisterServer失败,然后开始下面研究!
而可以自己写个DLL,让按键精灵去创建好插件对象,然后作为参数传递到你的DLL中,可以发现这玩意其实就是个COM组件。这个对象可以任意使用!
按键精灵官方的DLL插件,有没有办法去除只能用于按键精灵中
后来经过一番调查,好像按键官方会给插件作者一个签名工具,这玩意就是对DLL做一些修改,让其他语言不能以常规的方式注册和调用!
用OD跟踪,按键精灵会在主线程启动时创建2个对象“QMDispatch.QMLibrary.Inner”“QMDispatch.QMLibrary”
在注册表里找到分别定位到:按键精灵主程序(EXE)或者小精灵 和 “C:\Users\Administrator\AppData\Roaming\qmacro\qdisp.dll”。
用空白文件只读替换掉“qdisp.dll”将不能正常运行小精灵!插件也不能正常使用,说明这个“QMDispatch.QMLibrary”有这关键作用!(估计是处理变量用的)
然后用按键精灵来“Set a = CreateObject("QMPlugin.Bkgnd")”,发现在按键精灵中能正常创建,但在VBS,VB中提示“自动化类型失败”
用OD跟踪这段语句(别以为按键精灵就不能跟,它的代码还是会送到vbscript.dll执行)它注册之后创建对象是先ole32.CLSIDFromProgIDEx然后ole32.CoGetClassObject(其他的我不是看的很明白)
以我的理解,按键精灵就是个虚拟机,将VBS字符加密储存。运行时送给翻译器解密并加工 然后再次给vbscript.dll翻译执行。
也就是说按键精灵对DLL做了一些特殊修改。而创建对象应该是自己实现了这个特殊的“CreateObject”
由此,可以看出按键精灵对COM组件的调用原理理解的还是比较深的。那么我们是不是也能做出只有自己才能调用COM组件出来?我们又又什么办法来调用按键精灵DLL?本人功力不够,看看有没有人帮忙研究出其中门道
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!