C++ 在二进制文件中查找和编辑unicode十六进制字符串

C++ 在二进制文件中查找和编辑unicode十六进制字符串,c++,string,unicode,hex,C++,String,Unicode,Hex,我有一个VS2013项目的二进制文件,使用Unicode编译。现在,我需要在这个文件中找到一些数据字符串,并使用我的实用程序替换它们。我的想法是在十六进制编辑器中搜索这些字符串,查找它们的地址,然后使用winapi CreateFile/SetFilePointer/WriteFile简单地更新这些数据。但有一个问题。首先,我在十六进制编辑器中找不到这个字符串(因为unicode),现在我不确定如何更新它们,因为unicode字符有两个字节长 因此,我使用WinHex并使用Unicode找到了我

我有一个VS2013项目的二进制文件,使用Unicode编译。现在,我需要在这个文件中找到一些数据字符串,并使用我的实用程序替换它们。我的想法是在十六进制编辑器中搜索这些字符串,查找它们的地址,然后使用winapi CreateFile/SetFilePointer/WriteFile简单地更新这些数据。但有一个问题。首先,我在十六进制编辑器中找不到这个字符串(因为unicode),现在我不确定如何更新它们,因为unicode字符有两个字节长

因此,我使用WinHex并使用Unicode找到了我需要的数据字符串。然后,我找到了每个字符串的偏移量。然后,只需在所需偏移量处写入数据:

TCHAR data[MAX_APTH *2];
DWORD dwWritten = 0;
m_sStr = m_sStr.Trim();
offset =  0x00012F12;
wcscpy_s(data, m_sStr);
SetFilePointer(hFile, offset, NULL, 0);
WriteFile(hFile, data, wcslen(data) * sizeof(TCHAR), &dwWritten, NULL);
//WriteFile(hFile, L"\00", 100, &dwWritten, NULL);

看起来不像我想的那么难。

使用十六进制编辑器,可以指定unicode编码,例如。@Michael,单击错误,抱歉。我看到了弦。所以我需要的只是打开文件,并按照我的想法用TCHAR数组替换数据?