在二进制文件中查找和编辑 unicode HEX 字符串
Find and edit unicode HEX-strings in binary file
我有一个 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"[=10=]", 100, &dwWritten, NULL);
好像没有我想的那么难
我有一个 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"[=10=]", 100, &dwWritten, NULL);
好像没有我想的那么难