如何将EXE和资源文件打包成一个EXE

来源:互联网 发布:bi数据经理面试 编辑:程序博客网 时间:2024/03/29 15:39

假定:

配置程序为set.exe

显示信息程序show.exe

配置信息文件为info.dat

声音文件sound.wav

 

目标:

1.set.exe中点击某按钮,将show.exeinfo.datsound.wav打包成一个文件xxxx.exe’

2.show.exe’被执行后,在windows/system目录下释放出info.datsound.wav两个文件。

3.show.exe’读取windows/system中所需要的文件。

 

实现分两部分,一部分在set.exe,一部分在show.exe

 

一、set.exe部分

1.       使用TFileStream打开show.exe,将文件指针移动末尾-4的位置,读出四个字节,检查这四个字节是否为“AA BB CC DD”,如果是,则代表该文件不是原始文件,提示生成失败,不往下执行;如果不是,继续第二步。

2.       提示输入要生成的程序的文件名,可以得到文件名xxxx.exe

3.       show.exe复制一份,文件名xxxx.exe

4.       得到xxxx.exe的大小Size_X,得到info.dat的大小Size_D,得到sound.wav的大小Size_S

5.       使用TFileStream打开info.dat,将所有内容读出缓冲区(动态分配一段内容)。

6.       使用TFileStream打开xxxx.exe定位到末尾,将缓冲区的内容写入后,释放缓冲区。

7.       使用TFileStream打开sound.wav,将所有内容读出缓冲区(动态分配一段内容)。

8.       将缓冲区的内容继续写入xxxx.exe,之后释放缓冲区。

9.       继续写入xxxx.exe,依次写入以下四项内容:

Size_XSize_DSize_S,“AA BB CC DD”。总共4+4+4+4=16个字节。

10.   完成。 

 

二、show.exe部分

1.       启动的时候,将自己复制一份到当前目录,文件名为“show_tmp.exe”。

2.       TFileStream打开show_tmp.exe,检查末尾四个字节是否“AA BB CC DD”,如果不是,则正常开始检测任务,不往下执行;如果是,则继续。

3.       将文件指针从末尾往前移动16个字节,然后每次读4个字节,就可以得到3个整数,这三个整数为:原show.exe的文件大小Size_Xinfo.dat的文件大小Size_Dsound.wav的文件大小Size_S

4.       将文件指针移动到开头,读出Size_X个字节大小的数据(放到创建缓冲区中),然后将读出的数据,在windows/system目录里生成show.exe文件。

5.       将文件指针从开头往后移动Size_X个字节,读出Size_D个字节大小的数据(放到创建缓冲区中),然后将读出的数据,在windows/system目录里生成info.dat文件。

6.       将文件指针从开头往后移动Size_X+Size_D个字节,读出Size_S个字节大小的数据(放到创建缓冲区中),然后将读出的数据,在windows/system目录里生成sound.wav文件。完成这步,windows/system目录就有三个文件:set.exeinfo.datsound.wav

7.       退出程序,同时执行windows/system目录中的show.exe程序。

8.       完成。

 

 

温校宏

2010/9/9

原创粉丝点击