在c+内编译一个exe文件+; 我想创建一个C++程序,其中
我可以读取外部文件(可以是exe、dll、apk等)。即读取文件,将其转换为字节并存储在数组中在c+内编译一个exe文件+; 我想创建一个C++程序,其中,c++,C++,我可以读取外部文件(可以是exe、dll、apk等)。即读取文件,将其转换为字节并存储在数组中 接下来,我想编译数组中的字节 现在这是一个棘手的部分,我想把字节编译成一个数组,只是为了检查字节是否工作正常 您可能会说,我正在将一个文件转换为字节,然后将这些字节转换回同一个文件……(是的,我确实正在这样做) 这可能吗?使用流复制 #include <sstream> #include <fstream> int main() { std::stringstream
#include <sstream>
#include <fstream>
int main()
{
std::stringstream in_memory(
std::ios_base::out |
std::ios_base::in |
std::ios::binary);
{
// reading whole file into memory
std::ifstream ifs("input.exe", std::ios::in | std::ios::binary);
in_memory << ifs.rdbuf();
}
{
// optionally write it out
std::ofstream ofs("input.exe.copy", std::ios::out | std::ios::binary);
ofs << in_memory.rdbuf();
}
return 0;
}
#包括
#包括
int main()
{
std::stringstream在内存中(
std::ios_base::out |
std::ios|u base::in|
std::ios::binary);
{
//将整个文件读入内存
std::ifstream ifs(“input.exe”,std::ios::in | std::ios::binary);
在内存中测试是否可以加载可执行文件(与执行不完全相同):
- 除非
- 缺少权限
- 该文件不可访问
- 其中一个依赖项不可访问(例如,依赖项库)
请注意,在UNIX上,使用
//使用LoadLibrary的简单程序
#包括
#包括
内部主(空)
{
HINSTANCE hinstLib;
BOOL fFreeResult,fRunTimeLinkSuccess=FALSE;
//获取DLL模块的句柄。
hinstLib=LoadLibrary(TEXT(“input.exe”);//或dll
fFreeResult=自由库(hinstLib);
if(hinstLib!=NULL)
printf(“从可执行文件打印的消息”);
返回0;
}
另见
我不理解“编译字节”部分。只是没有任何意义。另外,请下次将问题的格式设置得更清晰,使用段落、标点符号等帮助我们理解你的意思(我们通常不理解你的想法).在回答之前,我可以问一下您正在开发的应用程序的目的是什么吗?那么sehe…我该怎么做呢???我知道我可以使用ifstream来读取文件,而ofstream可以使用二进制读取器来写入文件。我可以将文件读入缓冲区…….现在做什么???您能帮助我理解“//no in memory stage:??now rdbuf()包含文件的字节…我如何在rdbuf中编译字节?您首先回答以下问题:“编译字节意味着什么”?我认为您想对它们做些什么,这使得内存中的成为一个不错的选择(另外:rdbuf()
读取字节,内存中的包含字节)在这里,我想做的是重建同一个应用程序……我正在把一个文件分解成字节,然后重新构造文件,这个文件正在倒转……但是我想用C++来做。我希望你能理解。我的代码是这样的。我怀疑你在某种程度上期望一些代码来解释字节。(这是:加载和执行)。但是,这不是C++作业(加载和执行二进制文件是操作系统的工作);同样,创建同一个二进制右后卫也无济于事。如果你想得到另一个/二进制的完全相同的东西,你可以用类似于SeHe的PLZ来欺骗它,帮助我理解这个程序。
#include <sstream>
#include <fstream>
int main()
{
std::ofstream("input.exe.copy2", std::ios::out | std::ios::binary)
<< std::ifstream("input.exe", std::ios::in | std::ios::binary).rdbuf();
return 0;
}
// A simple program that uses LoadLibrary
#include <windows.h>
#include <stdio.h>
int main( void )
{
HINSTANCE hinstLib;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the DLL module.
hinstLib = LoadLibrary(TEXT("input.exe")); // or dll
fFreeResult = FreeLibrary(hinstLib);
if (hinstLib != NULL)
printf("Message printed from executable\n");
return 0;
}