什么是正确的格式以及如何在 .bin 文件中正确组织字节以在 char 数组 [] 中设置?



想象一下,下面的字节数组包含一个可执行文件(.exe(的所有字节(实际上,这是不可能在源代码中设置的,因为这个文件类型(.exe(中有很多字节,Visual Studio会崩溃(

char buffer[] = { 0x60, 0x33, 0xC0, 0x33, 0xDB, 0xEB, 0x00, 0x03, 0xC3 };

然后,我认为实现这一点的更好方法是从.exe文件生成所有字节(PS:类似XTEA Runtime Crypter,但没有变量声明(,并插入到.bin文件中,稍后在char buffer[]上设置,类似于以下内容:

vector<char> buffer;
ifstream infile;
infile.open("bytes.bin", ios::binary);
infile.seekg(0, ios::end);
size_t file_size_in_byte = infile.tellg();
buffer.resize(file_size_in_byte);
infile.seekg(0, ios::beg);
infile.read(&buffer[0], file_size_in_byte);
infile.close();

然后我问:

生成.bin文件的正确字节格式是什么?

  1. 0x60, 0x33, 0xC0, 0x33, 0xDB, 0xEB, 0x00, 0x03, 0xC3-前面是0x,用逗号和空格分隔(就像链接的C++代码已经做的那样(
  2. 0x600x330xC00x330xDB0xEB0x000x030xC3-是否有任何空格/分隔
  3. 60, 33, C0, 33, DB, EB, 00, 03, C3-用逗号和空格分隔,但前面不加0x
  4. 像十六进制编辑器中显示的那样(前面没有0x,也没有逗号分隔(

您根本不格式化,只写原始字节。您正在使用读取原始字节

infile.read(&buffer[0], file_size_in_byte);

类似地,用ios::binary打开输出文件,然后简单地调用

outfile.write(&buffer[0], some_number_of_bytes);

最新更新