您的位置:首页 > 其它

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

2010-09-18 22:17 447 查看
假定:
配置程序为set.exe
显示信息程序show.exe
配置信息文件为info.dat
声音文件sound.wav

目标:
1.在set.exe中点击某按钮,将show.exe、info.dat、sound.wav打包成一个文件xxxx.exe’。
2.show.exe’被执行后,在windows/system目录下释放出info.dat、sound.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_X,Size_D,Size_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_X,info.dat的文件大小Size_D,sound.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.exe,info.dat,sound.wav。
7. 退出程序,同时执行windows/system目录中的show.exe程序。
8. 完成。

温校宏
2010/9/9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: