朱朱你堕落了 发表于 2023-7-27 17:31

求助:C++实现DLL注入后获取主窗口句柄

本帖最后由 朱朱你堕落了 于 2023-7-27 17:36 编辑

如图:
https://s1.ax1x.com/2023/07/27/pCvXAts.png


如图所示:这是OD的窗口句柄。

需求:
DLL注入到吾爱OD里,打印出来窗口句柄。以吾爱OD为例就行,https://down.52pojie.cn/Tools/Debuggers/
最好是,写个winmm.dll或msimg32.dll或winspool.drv什么的都可以,OD启动后,能获取到正确值。
如果懒得写劫持DLL,直接写个普通DLL也行,毕竟要实现的是如何获取到,获取到的值一定要对。

请使用第三方spy++获取对比结果是否正确,提供一下源码,谢谢各位大佬。

倾世才华 发表于 2023-7-27 17:31

xiaoy 发表于 2023-7-27 17:47

本帖最后由 xiaoy 于 2023-7-27 17:50 编辑

EnumWindows(EnumWindowsProc, 0);
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) {   
DWORD dwPID;   
   char c;
    // 设置Result初始值为TRUE   
BOOL result = TRUE;   
GetWindowThreadProcessId(hWnd, &dwPID);
   if (dwPID == GetCurrentProcessId()) {   
       GetClassName(hWnd, c, sizeof(c));   
   if (strcmp(c, "123123123") == 0) {      
       mHwnd = hWnd;            
          result = FALSE;      }    }
// 返回结果    return result;}


其实现在,这玩意你直接问gpt还来得快一点,哈哈

woflant 发表于 2023-7-27 18:01

简单整个hook消息回调函数,挂到主线程,第一个参数就是窗口句柄

相关函数:SetWindowsHookEx

爱飞的猫 发表于 2023-7-27 20:03

GPT这么牛B, 为什么论坛还要禁止用GPT回复?

因为质量有好有差,如果不筛选回答或基于答案进行改造,得到的不一定是你问的东西的答案。

董督秀 发表于 2023-7-27 23:43

跨进程获取OD的模块窗体句柄比较麻烦,常规方法是获取不到的,你可以试一试从进程pid入手。
页: [1]
查看完整版本: 求助:C++实现DLL注入后获取主窗口句柄