Hook FindWindow
Hook FindWindow
本文关键字:FindWindow Hook 更新时间:2023-10-16
我正在尝试使用Detours 3.0挂接FindWindowA和FindWindowW。这两个函数成功挂钩,我可以看到请求的类和窗口标题。但当我试图访问任何单词时,比如
if ( lpWindowName[0] == buf )
或者类似的东西:
wcscpy(buf, lpWindowName);
memcpy(buf, lpWindowName, sizeof(lpWindowName));
我得到错误(exeption在挂钩程序)。我不能访问这个字符串,但我可以使用读取它
MessageBox(NULL,lpWindowName,lpClassName,MB_OK);
http://s017.radikal.ru/i421/1201/73/54fa9046a46c.png我什么都不懂。。。有错误的错误代码。我使用这个代码:
int filter(DWORD code, struct _EXCEPTION_POINTERS *ep) {
char buf[MAX_PATH] = {0};
sprintf(buf,"Exception code: %d", code);
MessageBox(NULL,buf,"Error",MB_OK);
return EXCEPTION_EXECUTE_HANDLER;
}
HWND __stdcall Mine_FindWindowW(LPCWSTR a0,
LPCWSTR a1)
{
__try
{
if (a1[0] == L'a')
return NULL;
}
__except(filter(GetExceptionCode(), GetExceptionInformation())){
}
HWND rv = 0;
__try {
rv = Real_FindWindowW(a0, a1);
} __finally {
};
return rv;
}
并且绳子没有损坏。所有工作。。。为什么我不能检查或直接访问这两个参数?
检查文档中的FindWindow。
任何一个字符串参数都可以是NULL(意思是不在乎),类名可以是原子。在这两种情况中的任何一种情况下,试图取消引用字符串都会导致访问冲突(异常代码-103741819=0xC0000005)。
您得到的异常是EXCEPTION_ACCESS_VIOLATION
(0xC0000005)。看看a1指向的是什么。首先猜测是a1[0]正在进行NULL指针解引用吗?我会在调试器中运行它,并检查调用堆栈以查看坏指针的来源。
你是如何设置Detours的?这可能是一个不正确的迂回的表现。
相关文章:
- C++无法使用 FindWindow() 找到 cmd
- 如何在 Qt/hook QPainter 中渲染没有抗锯齿的 SVG 以避免抗锯齿?
- 在Windows Hook中标识设备
- 是否有适用于Mac的FindWindow()替代方案
- DeviaRev2 Hook API:挂接到现有的过程Winapi调用中
- Windows Global Hook C++
- hook COM接口抛出vTable
- CBT Hook只接收一些事件
- FindWindow() 由不完整的名称
- 为什么 FindWindow 会找到一个 EnumChildWindows 没有的窗口?
- Hook FindWindow
- FindWindow in c++
- 查找启动应用程序的lpClassName,以便在FindWindow wniapi c++中使用
- Detours 3.0 hook GetProcAddresss()
- C++ Alt-Tab Hook
- 如何在执行函数时从C++"hook into" Python?我的目标是剖析
- FindWindow is not working?
- c++ FindWindow查找当前窗口
- visual studio-将C++__fastcall Hook从x86移植到x64
- C++/C# Python Hook