如何将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
配置程序为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
相关文章推荐
- 如何将Debug文件夹下的资源打包成一个EXE文件直接执行
- 如何将Debug文件夹下的资源打包成一个EXE文件直接执行
- Pyinstaller如何将资源文件一起打包至exe中
- 如何把一个java程序打包成exe文件,运行在没有java虚
- 如何使用 Visual Studio 2005 将应用程序及其资源打包到一个 CAB 文件中
- 如何把一个java程序打包成exe文件,运行在没有java环境里
- Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤
- 如何使用 Visual Studio 2005 将应用程序及其资源打包到一个 CAB 文件中
- 如何打包一个bundle资源文件
- 真Unity3d_如何打包debug文件夹打包成一个exe_执行文件
- 如何把一个java程序打包成exe文件,运行在没有java虚拟机
- 打包过程vs2010(包含卸载功能、生成一个exe文件)
- C#中将所有引用的DLL 和exe文件打包成一个exe文件
- 如何把java代码,打包成jar文件以及转换为exe可执行文件
- 控件注册 - 利用资源文件将dll、ocx打包进exe文件(VB版)
- 手把手教你如何把java代码,打包成jar文件以及转换为exe可执行文件
- 控件注册 - 利用资源文件将dll、ocx打包进exe文件(C#版)
- 如何让bat,cmd文件后台运行?如何把文件打包成EXE?
- 利用MAVEN打包时,如何包含更多的资源文件
- 如何将VC++程序纯净打包(VS2013+OpenCV 2.4.9项目生成EXE文件如何在其他电脑上直接运行)