WIN7有关输入法注入:LoadLibrary和GetProcAddress
本帖最后由 gaerelva 于 2012-10-11 14:41:14 编辑 前提:
1. 我用VB做了个标准DLL test.dll(用插件,有输出函数,用Depends查看都正常)
2.在XP系统测试一切正常
3.在WIN7系统 C++做了个EXE程序LoadLibrary(test.dll)成功 GetProcAddress成功
遇到问题:
a.用C++做了个输入法DLL里面用LoadLibrary(VB DLL),LoadLibrary为空。
getLastError:内存位置访问无效
b.使用:LoadLibraryEx("C:\\test.dll", NULL, LOAD_LIBRARY_AS_DATAFILE); //必须带路径才成功
GetProcAddress返回为NULL,GetLastError好像是126 应该是LoadLibraryEx的问题吧。
c.我用c++做了个用来调用的test2.dll WIN7下一切正常
感觉问题出在VB 的DLL test.dll 但是用EXE程序 直接LoadLibrary和GetProcAddress都成功,
那说明这个标准DLL没有任何问题,不知道 a 的方法问题出在哪里,
用b方法GetProcAddress还返回NULL getLastError为 找不到指定的模块
请高人指点!
谢谢
[解决办法]
VB做的“标准dll”只能用VB调用。因为它需要初始化VB的虚拟机(msvbvm60),对于其它语言来说,虽然可以成功调用dll,但是因为虚拟机没有初始化,执行里面的代码必然出错。
搞这些奇技淫巧没有什么意义。
[解决办法]
最新更新:
问题和VB DLL有关系,
1. DLL里的testF() 执行Form1.Show vbModal 可以运行 但是在EXE窗口之上 ,EXE窗口不可用,还有个非常严重的问题是 不是在目标窗口注入。。是在本窗口。。
2.使用vbAdvance插件:在XP下一切正常 目标窗口正常注入
RuntimeInitialize aa
Form1.Show vbModal
但在WIN7下 程序就死了 死在RuntimeInitialize aa,我想他的左右就是让这个注入窗口不在目标窗口之上,
但是vbAdvance很早就停止更新了,有没有大牛有WIN7下的解决方案?
谢谢!
[解决办法]