我如何知道调用了哪个 Windows API 版本? [关闭]
Posted
技术标签:
【中文标题】我如何知道调用了哪个 Windows API 版本? [关闭]【英文标题】:How do I know which Windows API version is called? [closed] 【发布时间】:2021-01-08 00:09:46 【问题描述】:如果我要设置多个断点,我如何知道程序是否在没有暴力破解的情况下调用了 A 或 W 版本?
【问题讨论】:
你的问题没有多大意义,对不起。你在哪里设置断点? A 版还是 W 版? @JonathanPotter 例如,如果程序使用 LoadLibraryA 或 LoadLibraryW 【参考方案1】:只需在两个版本上设置断点即可。
任何程序都可以同时使用 ANSI 和 Wide 版本,只要明确指定哪一个。
【讨论】:
A
是 ANSI 的缩写,而不是 ASCII。【参考方案2】:
我创建一个简单的例子:
#include <Windows.h>
int main(int argc, const char* argv[])
MessageBox(NULL, TEXT("test"), TEXT("test"), 0);
return 0;
在MessageBox
处设置断点,然后在反汇编中进入MessageBox
:
如果你使用Multi-Byte Character Set
,你可以看到:
当你使用Unicode Character Set
:
你可以通过反汇编很容易看到它调用了哪个函数。
【讨论】:
【参考方案3】:如果您在进入给定函数调用之前在其外部放置断点,那么当到达断点时,您可以单步执行调用以查看实际跳转到的函数。
如果你在两个函数中都设置了断点,你会很容易看出调用了哪一个。
【讨论】:
以上是关于我如何知道调用了哪个 Windows API 版本? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
C++ 中的哪个 Windows API 将帮助我识别当前 ComboBox 正在使用哪个对话框类?
Windows中的Qt Creator - 我如何知道正在使用哪个编译器?