我只是想:
- 打开一个文件
- 搜索十六进制值
- 用另一个十六进制值替换它
- 保存文件!
这是我尝试过的,但似乎不起作用
#include <fstream>
#include <iterator>
#include <algorithm>
void FindAndReplace(CHAR Before[], CHAR After[], int Size)
{
typedef std::istream_iterator<unsigned char> input_iter_t;
typedef std::ostream_iterator<unsigned char> output_iter_t;
std::fstream f("C:\\myfile.exe", std::ios::binary | std::ios::in | std::ios::out);
if (search(input_iter_t(f), input_iter_t(), Before, Before + Size) != input_iter_t()) {
f.seekp(-Size, std::ios::cur);
f.write(After, Size);
}
}
并以这种方式调用它
CHAR Before[] = {0x2D,0x43,0x89,0x5D};
CHAR After[] = {0x00,0x00,0x00,0x00};
FindAndReplace(Before,After,4);
你知道做这种事情的其他方法吗?或者我做错了什么?