我用a.exe执行程序将b.exe执行程序文件用fopen打开,然后用fread读入到一缓存区buffer,现在的问题是,我如何在buffer这一内存区执行b.exe

解决方案 »

  1.   

    CreateRemoteThread,好像是用这个API,具体不清楚了。
      

  2.   

    参考文章:http://wlbookwl.myrice.com/jck2002/01/020120win2kyc.htm
      

  3.   

    http://wlbookwl.myrice.com/jck2002/01/020120win2kyc.htm
      

  4.   

    flyelf(空谷清音) ,  yintongshun(踏雪有痕),非常感谢两位,我仔细的阅读了你们推荐的文章,不错,但显然和我的问题有所出入。1,在这篇文章中,将线程拷入其它进程时,实际上已经进行了地址的重定位,由本进程进行了相关信息的初始化,已经远不是fread形势的原始二进数据了。2,文章所说是创建线程,而我的问题应该是启动一个进程,由一个进程变出两个进程,且第二个进程的数据由第一个进程提供。
      

  5.   

    以下均是我从理论上分析得到的结果,有考虑不周或错误的地方请指证
    ===========================================================
    一个win32程序编译好后它在进程空间的位置就已经定下来了,要想一个进程空间同时执行两个进程,前提是:
       1. 两个程序在进程空间中的地址映射上不能有重叠,
     
    你的其中一个进程必须做很多工作才能将第二个程序在自己的进程空间内运行:
       1. 读入第二个程序(或使用内存映射 )中必要部分到其要求的内存地址中
       2. 加载第二个程序所需要用到的DLL等(直接用到的,不包括LoadLibaray()调用所加载的)
       3. 重定位从DLL中导入的函数的地址
       4. 创建一专门线程,这一线程想办法转入第二个程序的入口地址去执行