包头风机销售有限公司:如何运行资源内的exe 以线程运行exe

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 11:51:56
问题1、程序内以资源形式包含一个exe,如何在不释放这个exe的情况下运行资源内的exe (以资源路径运行)
问题2、运行一个外部程序,被调用的程序是以主程序的一个线程被运行
问题补充:Window API
这还用你回答,起码给个思路或例子啊

这就要用到病毒技术了,
就是嵌入EXE进程
每个EXE都有一个程序入口地址,通过修改这个入口地址,调用另外编写的验证程序,成功则返回地址继续运行,否则强行终止进程!

(个人思路,没有实际进行过)

这就要用到病毒技术了,
就是嵌入EXE进程
每个EXE都有一个程序入口地址,通过修改这个入口地址,调用另外编写的验证程序,成功则返回地址继续运行,否则强行终止进程!

(个人思路,没有实际进行过)

将该exe后缀的扩展名改掉或者试试批处理等,你的问题我不是很理解,只好这么回答了

推荐使用先将EXE文件释放到临时文件夹再运行的方法

但如果你非要不释放就运行的话,我也可以给你个思路

不过,你的以资源路径运行的要求很难实现,我最后再讲。

首先,你必须非常了解PE文件格式和WINDOWS可执行文件的加载过程

具体实现:
先假设包含另外EXE文件的程序为A,被包含的程序为B

1.编译的时候,将A的基地址设置的大于B的内存地址的上限。
2.申请开始地址为B程序基地址(一般为400000)的内存空间,并将其属

性改为可读可写可执行。
3.COPY B的全部代码过去
4.跟据B的导入表,加载各个DLL,并填写IAT的地址。
5.在A程序中创建一新的线程,基地址为B的入口。

这样如果没有意外的话,B就以A的一个的线程的形式运行了
但B结束时可能会把A也一块结束掉(可以通过一些操作解决)

关于以资源路径运行:
我想你的意思应该是有个API可以直接,或者很简单的运行资源或者任

意内存中的EXE格式的程序
但据我所知,并没有这样的API
而且不用API也未必就能实现

要想让EXE格式(正式叫法应该是PE)程序在任意内存地址运行,程序

必须是可重定位的(自已重定位,或者依靠重定位表)
但多数EXE格式的WINDOWS程序并没有重定位表,也不会自己重定位。
所以说很难实现

如果你要运行的EXE文件能够重定位,则可以先将对应内存地址改为可

读可写可执行,然后重定位(需要的话),然后填入导入表,最后创建

新线程运行。

以上只是我的思路,没有实践过,这几天忙考试也没时间搞这个。
另外第二步可能会申请失败,如果不行的话可的程序的第一个SECTION

先预留足够多的空间。

http://anskya.ys168.com/
你说的东西来这里参考下