有A, B两个.exe文件,我将B文件接在A文件之后,组成文件C, 
这样运行C的话只能运行A文件, 而我想双击C的时候运行B文件,应该怎样修改?我将C文件DOS头的e_lfanew改成了"A的大小+B的DOS头的e_lfanew",这样会跳转到B文件的PE头吗?为什么提示说是
"不是有效的win32应用程序"?

解决方案 »

  1.   

    找到b真正的入口点oep,修改a的入口jmp到b
      

  2.   

    1楼是说让你修改A的代码开头,直接 jmp 到B的开头
    但是貌似楼主这样做B根本不会载入- -
      

  3.   

    不行,PE结构里的SECTION里面记录了执行文件的每个节的大小和偏移及映射关系
    你这里C文件的PE结构信息实际上就是A的信息,并不包含B文件的信息你虽然加载A文件的后面,但是系统并不认为是有效部分,不会将其映射到A的地址空间除非你手动将A和B的SECTION合并到C中,但是这样工作量太大,还有很多不确定因素
    基本上没有可行性解决办法就是你自己写一个C,其中封装了A和B文件,然后根据选择释放文件后再运行