如何从汇编寄存器中获取字符串并将其存储在C++中的变量中
How do I get a string from assembly register and store in a variable in C++?
我知道寄存器ECX包含一个UNICODE字符串,即"YODA"。
我想从ECX寄存器中获取完整的字符串,并将其存储在C++变量中。然后,我想将变量与字符串"YODA"进行比较,以确认它是我所期望的。
我有以下代码:
wchar_t* c;
__asm mov c, ecx
if (wcscmp(c, L"YODA") == 0)
{
MessageBox(0, L"Found", L"Found", MB_ICONEXCLAMATION);
}
else
{
MessageBox(0, c, L"Not Found", MB_ICONEXCLAMATION);
}
然而,它似乎没有正确地将字符串插入到c中。我该怎么办?
仅几行代码就出现了数量惊人的问题:
- 你说它是unicode字符串,但你告诉编译器它不是。Unicode字符的类型为
wchar_t
,而不是char
- ECX通常持有CCD_ 3。我真诚地怀疑你关于登记册内容的信息
- 这不是在C++中比较字符串的方式。您使用
strcmp
和co。特别是您需要wcscmp
。此外,这不是将YODA
作为unicode字符串编写的方式,您需要L"YODA"
试试这个:
WCHAR c[256];
__asm
{
[ecx], ecx
mov [c], ecx
}
if (lstrcmp(c, L"this" == 0)
//your code here
相关文章:
- 存储变量的更有效方法是什么?
- 使用 system() 不存储变量C++?
- 在递归DP中,通过存储变量来分解递归调用:效率低下
- 使用 LDAP 存储C++变量
- 在满足特定条件时运行迭代C++以存储变量
- 使用getline解析和存储变量
- 如何存储变量的地址并使用指针打印值
- C++ / Objective-C++ - 如何在 NSDictionary 中存储C++变量?
- 如何从文件中读取并存储变量
- 指针是否延长了自动存储变量的生存期
- 如何在 INI、CFG 或 XML 文件中存储C++变量
- 如何在 c++ 中的字符串数组中存储变量
- 如何在特定偏移量处存储变量
- 如何存储变量的前一个值并更新它以进行比较
- 存储变量的有效方法是什么?(自制虚拟机)
- 在C++中存储变量
- 在c++中按值调用时,存储变量的副本
- 为什么lambda只捕获自动存储变量
- 如何在寄存器中存储c++变量
- Getline()结合cin.ignore()不存储变量?(错误)