我想创建一个c ++程序,其中
我可以读取外部文件(可以是exe,dll,apk等等等)。即读取文件将它们转换为字节并将它们存储在数组
接下来,我想编译数组中的字节 现在这是我想要将字节编译成数组的棘手部分,只是为了检查字节是否正常工作
这可能吗?
答案 0 :(得分:2)
测试是否可以加载可执行文件(与执行不完全相同):
请注意,在UNIX上,使用dlopen
// 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;
}
另见
答案 1 :(得分:0)
使用流式复制
#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;
}
如果你不使用内存中的阶段,它会更有效率(非常大的文件不会导致问题):
#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;
}