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

Find and edit unicode HEX-strings in binary file

本文关键字:unicode 十六进制 字符串 编辑 二进制文件 查找      更新时间:2023-10-16

我有一个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"0", 100, &dwWritten, NULL);

看起来没有我想象的那么难。