大佬们,目标地址存储类型是unicode,我怎么把他这块地址的值读取出来并且打印
void print_log(DWORD a){
char buff1 = { 0 };
WCHAR buffer2 = { 0 };
ReadProcessMemory(jcjb, (LPCVOID)(a), buff1, sizeof(buff1), 0);
UnicodeToANSI(buffer2, buff1);
//wcout << "日志:" <<(WCHAR*) buffer2 << endl;
wprintf(L"日志 :%S \n,日志2:%S", buffer2, buff1);
}
大佬们,目标地址存储类型是unicode,我怎么把他这块地址的值读取出来并且打印
使用unicode字符集,要添加本地化支持
C语言
#include <locale.h>
setlocale(LC_ALL, "");
C++语言
#include <locale>
std::ios::sync_with_stdio(false);
std::locale::global(std::locale(""));
std::wcout.imbue(std::locale(""));
上面漏了一个函数的实现,我在这写出来
// Unicode字符串转ASCII
int WINAPI UnicodeToANSI(WCHAR* pUnicode, char* pANSI)
{
int iTextLen;
// wide char to multi char
iTextLen = WideCharToMultiByte(CP_ACP, 0, pUnicode, -1, NULL, 0, NULL, NULL);
iTextLen = ::WideCharToMultiByte(CP_ACP, 0, pUnicode, -1, pANSI, iTextLen, NULL, NULL);
return iTextLen;
} 有对标printf的宽字节版本 wprintf
有对标%s的宽字节版本%ws
only998 发表于 2023-3-15 08:34
有对标printf的宽字节版本 wprintf
有对标%s的宽字节版本%ws
大佬,这样写?
wprintf("日志: %ws\r\n", a); 本帖最后由 only998 于 2023-3-15 09:10 编辑
qwerzxc 发表于 2023-3-15 08:43
大佬,这样写?
wprintf("日志: %ws\r\n", a);
wprintf(L"%ws\n", cc);
不过控制台出来的中文可能是乱码。看7楼答案
按7楼大佬的帮助,操作可行。 only998 发表于 2023-3-15 09:14
按7楼大佬的帮助,操作可行。
谢谢大佬,明天给你补币
页:
[1]