gpt4 book ai didi

c++ - 我可以从 Visual Studio 即时窗口调用 Win32 API 吗?

转载 作者:可可西里 更新时间:2023-11-01 15:22:14 25 4
gpt4 key购买 nike

我正在调试 C++ Win32 应用程序,我想从该进程的上下文中调用任意 Win32 API,就好像程序运行了这行代码一样:

DestroyWindow(0x00021c0e);

但是将其输入立即窗口会给出:

CXX0017: Error: symbol "DestroyWindow" not found

编辑:使用函数的全名,{,,user32.dll}_NtUserDestroyWindow@4,我可以获得立即窗口以了解我指的是哪个函数并显示函数的地址:

{,,user32.dll}_NtUserDestroyWindow@4
0x76600454 _NtUserDestroyWindow@4

但是当我尝试调用它时,会发生这种情况:

{,,user32.dll}_NtUserDestroyWindow@4(0x00021c0e);
CXX0004: Error: syntax error

甚至可以像这样从即时窗口调用 C 函数,还是我找错树了?

最佳答案

获得函数地址后(正如您在更新的问题中所做的那样),您可以尝试将其转换为函数指针并调用它:

(*(BOOL (*)(HWND))0x76600454)((HWND)0x00021c0e)

它的第一部分将地址转换为 BOOL (*)(HWND),它是一个指向接受 HWND 参数并返回 的函数的指针 bool 。然后,函数指针被解除引用并被调用。确保参数正确,否则会发生不好的事情。在 64 位系统上,HWND 可能是 64 位,因此您可能无法将参数作为 int 传递。

编辑:查看完整故事的评论。

关于c++ - 我可以从 Visual Studio 即时窗口调用 Win32 API 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1312056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com