加载加密程序的二进制数据

时间:2010-09-03 04:09:26

标签: c++ windows

如何将文件加载到我的程序中,所以它只是二进制文件。我想从文件中读取二进制文件然后将其保存到另一个文件中,因此该文件将是第一个文件的克隆(如果它是将运行的exe文件等)。我想将数据存储在数组或字符串中,以便我可以在保存之前对其进行编辑。即时通讯使用Windows 7,microsoft c ++ 2008。

2 个答案:

答案 0 :(得分:2)

类似的东西:

[编辑:添加了必要的标题:]

#include <fstream>
#include <algorithm>
#include <vector>
#include <ios>

// define some place to hold the data:
std::vector<char> binary_data;

// open the file and make sure we read it intact:
std::ifstream file("filename.exe", std::ios::binary);
file.unsetf(std::ios_base::skipws);

// read data from file into vector:    
std::copy(std::istream_iterator<char>(file),
          std::istream_iterator<char>(),
          std::back_inserter(binary_data));

// Edit the binary data as needed...

// create new file: 
std::ofstream new_file("new_file.exe", std::ios::binary);

// Write data from vector to new file:
std::copy(binary_data.begin(), 
          binary_data.end(),
          std::ostream_iterator<char>(new_file));

这是非常基本的C ++ - 我的直接猜测是,如果你不知道这个,你还没准备好处理加密。

答案 1 :(得分:0)

如果您使用std::ifstream标志打开文件,ios::binary类将为您执行此操作。您将获得文件内容的逐字节。如果您使用ofstream将其写入另一个文件(ios::binary),则表明您已完成文件复制。

如果您可以使用Windows特定的API,则Windows会提供CopyFile功能。