Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c+内编译一个exe文件+; 我想创建一个C++程序,其中_C++ - Fatal编程技术网

在c+内编译一个exe文件+; 我想创建一个C++程序,其中

在c+内编译一个exe文件+; 我想创建一个C++程序,其中,c++,C++,我可以读取外部文件(可以是exe、dll、apk等)。即读取文件,将其转换为字节并存储在数组中 接下来,我想编译数组中的字节 现在这是一个棘手的部分,我想把字节编译成一个数组,只是为了检查字节是否工作正常 您可能会说,我正在将一个文件转换为字节,然后将这些字节转换回同一个文件……(是的,我确实正在这样做) 这可能吗?使用流复制 #include <sstream> #include <fstream> int main() { std::stringstream

我可以读取外部文件(可以是exe、dll、apk等)。即读取文件,将其转换为字节并存储在数组中

  • 接下来,我想编译数组中的字节 现在这是一个棘手的部分,我想把字节编译成一个数组,只是为了检查字节是否工作正常

  • 您可能会说,我正在将一个文件转换为字节,然后将这些字节转换回同一个文件……(是的,我确实正在这样做)
  • 这可能吗?

    使用流复制

    #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;
    
    }