我有一个VS2013项目的二进制文件,使用Unicode编译。现在我需要在这个文件中找到几个数据字符串并使用我的实用程序替换它们。我的想法是在十六进制编辑器中搜索这些字符串,查看它们的地址,然后使用winapi CreateFile / SetFilePointer / WriteFile简单地更新这些数据。但有一个问题。首先 - 我在十六进制编辑器中找不到这个字符串(因为unicode),现在我不知道如何更新它们,因为unicode字符长度为两个字节。
答案 0 :(得分:0)
所以我使用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);
看起来并不像我想的那么难。