问题描述
如果要设置几个断点,如何知道程序是否在没有蛮力的情况下调用了A或W版本?
解决方法
只需在两个版本上设置断点即可。
通过明确指定哪个版本,任何程序都可以同时使用ANSI和Wide版本。
,我创建一个简单的示例:
#include <Windows.h>
int main(int argc,const char* argv[])
{
MessageBox(NULL,TEXT("test"),0);
return 0;
}
在MessageBox
处设置一个断点,然后在反汇编中进入MessageBox
:
如果您使用Multi-Byte Character Set
,则可以看到:
当您使用Unicode Character Set
时:
您可以通过反汇编轻松查看它调用了哪个函数。
,如果在输入断点之前将断点放置在给定的函数调用之外,那么当到达断点时,您可以进入该调用以查看实际跳至哪个函数。
如果在两个函数中都放置一个断点,则很容易看到哪个被调用。