寻找具有注入的代码和QWidget的::发现(HWND)第三方QWidget的
-
19-09-2019 - |
题
我有一个Qt的Dll至极我注入使用Windows第三方应用迂回库:
if(!DetourCreateProcessWithDll( Path, NULL, NULL, NULL, TRUE,
CREATE_DEFAULT_ERROR_MODE | CREATE_SUSPENDED, NULL, NULL,
&si, &pi, "C:\\Program Files\\Microsoft Research\\Detours Express 2.1\\bin\\detoured.dll",
"C:\\Users\\Dave\\Documents\\Visual Studio 2008\\Projects\\XOR\\Debug\\XOR.dll", NULL))
和然后我设置一个全系统的钩截取窗口创建:
HHOOK h_hook = ::SetWindowsHookEx(WH_CBT, (HOOKPROC)CBTProc, Status::getInstance()->getXORInstance(), 0);
其中XOR是我的程序名称,状态::的getInstance()是一个Singleton,我保持全局。
在我CBTProc回调,我想拦截的QWidgets所有窗口:
HWND hwnd= FindWindow(L"QWidget", NULL);
效果很好,因为我得到一个相应的HWND(I与间谍检查++)然后,我想获得一个指向QWidget的,这样我就可以使用它的功能:
QWidget* q = QWidget::find(hwnd);
但这里的问题,返回的指针始终是0。我不能注入我的代码到进程正常吗?还是我没有使用了QWidget :: find()方法,我应该?
谢谢,
戴夫
编辑:如果我改变QWidget的::找到()函数以我的DLL的导出函数,设置钩后(以便设定和捕捉断点),QWidgetPrivate ::映射器是NULL
。解决方案
已经回答了:
愚蠢的错误,我被编译在调试,所以这是QtGui4d.dll和QtCore4d.dll但如装载,未QtCore4.dll和QtGui.dll
其他提示
比较的`QWidgetPrivate ::映射地址在DLL和你的代码。 ESP。如果一个静态链接,有可能是它的两个实例,每个都有它自己的,不相交,设置构件。
不隶属于 StackOverflow