比如直接运行一个char* buf。而不先写到文件后调用createprocess.

解决方案 »

  1.   

    嗯。打个比方,好比说,我把一个可执行文件 a.exe,通过二进制文件的方式,读入到一个buf中去,接下来,如何运行这个buf
      

  2.   

    unsigned char buf[6]={0xe4,0xc0,0xe0,0xc0,0xe0,0x32};(*((void (*)())(buf)))(); // 执行exe文件不能,因为EXE有文件头,那部分是提供给操作系统的信息,不是执行代码
    当然如果你懂EXE文件格式,直接跳过文件头也是可以的
      

  3.   

    DOS下有一种文件格式叫.COM
    直接开始就是代码
      

  4.   

    可以把一个thread 代码远程注入到进程空间。 即 无dll远程注入
      

  5.   

    本人写过一个RawPeApi,里面展示了如何直接运行内存中的pe文件。
      

  6.   

    不可以, 只要是个进程一定有对应的映像文件
    如果只是运行EXE中的代码可以
      

  7.   

    假设有a,b,c3个可执行文件。
    3个文件绑定成一个文件
    b,c为执行目标
    a程序怎样才能执行b和c?
      

  8.   

    您的意思是不是,讲一串二进制码存为buf,且该二进制buf为一段pe结构的文件。如果能考虑加入汇编,理论上能否实现这个功能?请赐教~
      

  9.   


    执行的时候把a,b,c先写到临时文件
    然后
    ShellExecute(0,NULL,"a.exe","b.dat",NULL,SW_NORMAL);
      

  10.   

    分配内存,写入二进制指令,把这块内存设置为EXECUTE状态。
    获取现成Context,修改其中的eip指向分配的内存地址。貌似这么可以执行。
      

  11.   

    其实就是想将一个A.exe绑在另一个B.exe中,生成一个C.exe,执行c.exe的时候,先执行B,再执行A。整个执行过程只有C.exe一个文件。~
    其实我不是想隐瞒啥,就是在琢磨这个的时候不清楚是否可行,也搞不清思路...呵呵。
      

  12.   

    其实,RAR等压缩软件不就实现的这一功能吗?chm文件更是例子
    安装文件就更是了
    安装文件其实就是少了一句ShellExecute而已你可以寻找自定义资源的应用代码
    也就是所可以很笨地把a,b,c都作为资源直接嵌入看看这篇文章和代码应该对你很有帮助
    http://www.vckbase.com/document/viewdoc/?id=1564