首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问一个有关问题,怎么将数据嵌入可执行文件中

2012-03-16 
请教一个问题,如何将数据嵌入可执行文件中有一组数据,数据量大,以文本的形式存放在硬盘上每次调用exe时,首

请教一个问题,如何将数据嵌入可执行文件中
有一组数据,数据量大,以文本的形式存放在硬盘上

每次调用exe时,首先从硬盘上将数据读入

如果将exe分发给别人,同时也要将数据文件一同给别人

看来资源文件,但是不知道怎么将数据嵌入到exe中

数据格式是:
文件1中:
1 2 3
4 5 6
.。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。

文件2中:
1,2,3
4,5,6,7,8
.........................
................................

在执行exe是,首先将上述两个文件中的数据读入几个数组中去


[解决办法]
给你一篇文章供你参考:

1:编辑一个resource.rc文件,里面类似如下:

hookdll RC_Dll YourHookDllFileName.Dll

2:然后用Brcc32.exe编译:

brcc32 resource.rc

 结果生成resource.res文件

3:修改窗体Pas或者Dpr文件,添加下面的代码:

{$R *.res}

{$R resource.res}

4:关键的代码:

在窗体初始化或者工程的开头部分添加代码:

var

res:tresourcestream;

....

res:=tresourcestream.create(instance,'hookdll','RC_Dll');

res.SaveToFile('YourHookDllFileName.Dll');

res.Free;

5:你的程序退出的时候:

DeleteFile('YourHookDllFile.Dll');

6:End

 

----------------------------------------

自己做一个一个资源文件的描述文本RC文件,例如 sample.rc ,“记事本”程序创建就行了。然后可以输入一些我们要定义的资源,

 

例如:

 

MEN BITMAP c:\bitmap\men.bitmap

ARJ EXEFILE c:\arj.exe

MOV AVI c:\mov.avi

 

然后用BRCC32把这个RC文件编译成sample.res(真正的资源文件)。

 

在Delphi的工程文件中使用 $R 编译指令让Delphi包括资源到EXE文件里面。

 

{$R sample.res}

 

这样我们就可以在这个单一的执行文件中调用资源了。举例如下:

 

EXEFILE:

 

procedure ExtractRes(ResType, ResName, ResNewName : String);

var 

Res : TResourceStream; 

begin

Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));

Res.SavetoFile(ResNewName);

Res.Free; 

end;

 

AVI:

 

procedure LoadAVI;

begin

{Avi1是一个TAnimate类}

Avi1.ResName:='AVI';

Avi1.Active:=True;

end;
[解决办法]
先用文件流读入EXE文件 然后扩充SIZE SIZE=EXE.SIZE + 文件.SIZE 然后设置流偏移 开始写文件
WINDOWS执行EXE的时候 执行到EXE标志结束位置就OK了 所以不会影响你的程序的。

其实有些病毒也是这样做的 不过是加载到EXE其他位置罢了;

热点排行