首页
社区
课程
招聘
可不可以把两个exe文件合并为一个文件?
发表于: 2006-12-16 15:40 10003

可不可以把两个exe文件合并为一个文件?

2006-12-16 15:40
10003
收藏
免费 7
支持
分享
最新回复 (14)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
winrar
2006-12-16 15:49
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
3
最初由 shoooo 发布
winrar

有是winrar

PS:搜索捆绑
2006-12-16 16:00
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
可能我没说清楚,是把两个exe合并,不是压缩为一个解压缩文件
2006-12-16 16:07
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
如果不是运行时释放为独立文件的话,一般不能。

两个EXE文件的加载地址应该有冲突,普通可执行文件中又没有重定位信息,所以,无法加载在同一个地址空间内

如果其中一个包含重定位信息的话,倒是可以。
2006-12-16 21:40
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢你。。。。。。
2006-12-16 22:50
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
可以,在Delphi可以把两个文件载入文件流(filestream)中,然后添加第一个文件到第二个的后面。
PS:不保证两个exe文件在添加后都能正常运行哦。
2006-12-17 09:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看你是要同步还是异步执行两个程序了
简单的方法就是把一个exe写在另一个的结尾,执行的时候先进行拆分,然后调入内存
2006-12-18 01:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不是有捆绑机吗?
2006-12-18 09:19
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
是异步执行,因为是个补丁类的,我不想让人给删除了,所以要捆在一起,不被删除,是异步执行,怎么加在文件尾部?
2006-12-18 12:48
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
写在另一个的结尾?怎么写?那么多代码^_^
2006-12-18 12:49
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最初由 dxcat 发布
写在另一个的结尾?怎么写?那么多代码^_^


如果是这样写,就容易了
把整个文件读到一个BUFF里,然后再把这个BUFF写到第一个文件的尾部
加载时,再从该文件尾部释放出来即可
2006-12-19 07:47
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
例如:有a.exe和b.exe,把b.exe写入a.exe尾部,能给出具体语句吗?delphi的,或是反汇编的,我还没做过这件事^_^
2006-12-19 09:30
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我给你一个把EXE当作资源文件绑到主EXE中的例子吧:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{$R app.res}
///////////////////////////////////////////////////////////////
//释放EXE资源文件
function ExtractRes(ResType, ResName, ResNewName: string): boolean;
var
  Res: TResourceStream;
begin
  try
    Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
    try
      Res.SavetoFile(ResNewName);
      Result := true;
    finally
      Res.Free;
    end;
  except
    Result := false;
  end;
end;
下面我们来研究一下上面的{$R app.res}
  制作过程如下
  先制作一个文本文件
  内容如下:
  app exefile HijackThis.exe
  这里的APP是资源名,可以随便起 EXEFILE是资源类型,应该是固定的,不很清楚
  后面跟的是待绑文件名
  然后存为*.RC文件(似乎存为其他文件都可以,诸如.TXT也行)
  然后利用BORLAND提供的BRCC32.EXE把上面这个RC文件编译成RES文件

至于释放过程就很简单了,调用上面的过程
如下
procedure TForm1.XPDOS1Click(Sender: TObject);
begin
  ExtractRes('exefile','app','tmp.exe');//这里的APP要同刚才制作的文本里的APP同(资源名相同)
end;
2006-12-19 09:35
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我试试看^_^
2006-12-19 16:43
0
游客
登录 | 注册 方可回帖
返回
//