以编程方式将两个exe文件合并为一个

时间:2010-02-15 19:52:51

标签: merge exe code-injection

有没有办法以编程方式将两个exe文件合并为一个,这样运行它就可以同时执行两个较旧的exe文件。我在google上发现了一些关于注入代码或dll文件的东西,但有可能两个合并两个exe文件或者将exe注入到exe中吗?

提前致谢。

[编辑] 感谢大家。对于那些说不可能的人来说,我不得不说我最近按照一些建议的方式做了。它几乎就是这样(我记不起所有这一切了很久以前):

[当心:此算法与某些蠕虫和病毒的算法非常相似。我不是黑客或病毒作家!并且这仅用于实验或无害的原因 - 在代码中出错会破坏目录中的可执行文件。]

1- Exe检查自身的大小以检测是否有任何附加到自身的内容。如果还没有:

     1.1- The exe finds other executable files in its directory (lets call one of them as victim!)
     1.2- it makes a copy of itself (lets call it newMe)
     1.3- it copies the other executable found in the directory to the end of newMe.
     1.4- it deletes the other executable file found and renames newMe to its victim's name.

2-如果exe检测到已经添加了某些内容,那么:

     2.1- Then it copies data from itself (from ORIGINAL_FILE_SIZE to the end of file) to a new file (lets call it newBorn.exe)
     2.2- It runs itself's code and then executes the newBorn.

我说我几乎以这种方式做到了cos,exe将另一个exe附加到自身。但是这可以重复用于将2个甚至3个或更多个可执行文件追加并执行到一个中。你只需要知道编写程序的ORIGINAL_FILE_SIZE。

8 个答案:

答案 0 :(得分:5)

不,您最好的办法是创建一个运行两个可执行文件的.bat文件(Windows)。

@echo off
c:\path\to\first\exe\file1.exe
c:\path\to\second\exe\file2.exe

您还可以在Linux中创建shell script来执行相同的操作

#!/bin/sh
/path/to/first/exe/file1
/path/to/second/exe/file2

注意,这将在file2之前执行file1。

答案 1 :(得分:5)

您可以创建自己的EXE文件,其中包含两个其他EXE文件作为嵌入资源,并提取和执行每个文件。

请注意,如果将其解压缩到其他目录,则嵌入的EXE可能无效。

答案 2 :(得分:5)

理论上这是可能的,但需要你的一些努力。

您可以将数据附加到exe文件,这就是自解压档案的工作方式。但是,您需要自己的数据格式,类似于文件系统,因为您只有一个平面.exe文件。
请参阅此Microsoft文章(谷歌上有更多内容)http://support.microsoft.com/?scid=kb%3Ben-us%3B84062&x=12&y=13

将两个文件打包的exe必须提取这些文件,最后才能运行它们。

祝你好运。

答案 3 :(得分:3)

从技术上讲,可以在你的exe中嵌入一些其他exes文件,像upx这样的一些打包器可以。所以你应该能够对2个前任做同样的事。

在unix中,你的exe可以fork,然后第一个进程执行第一个旧的可执行文件,新进程执行第二个exe,可能之前在它们之间安装一个管道。

但这显然不是那么容易做到的,很可能是一种无用的矫枉过正需要。 你可能只需要一个小的.bat或.sh

答案 4 :(得分:3)

我注意到了你的“以编程方式”的限定符,但是为了防止你正在做的任何事情都可以接受代码外的解决方案......

IExpress可以构建一个执行其他两个EXE的EXE。您可以从命令行构建IExpress包。

SED文件:

  

[版本]
  类= Iexpress的
  SEDVersion = 3
  [菜单]
  PackagePurpose = InstallApp
  ShowInstallProgramWindow = 1
  HideExtractAnimation = 1
  UseLongFileName = 0
  InsideCompressed = 0
  CAB_FixedSize = 0
  CAB_ResvCodeSigning = 0
  RebootMode = N
  InstallPrompt =%InstallPrompt%
  DisplayLicense =%DisplayLicense%
  FinishMessage =%FinishMessage%
  的TargetName =%的TargetName%
  的FriendlyName =%的FriendlyName%
  AppLaunched =%AppLaunched%
  PostInstallCmd =%PostInstallCmd%
  AdminQuietInstCmd =%AdminQuietInstCmd%
  UserQuietInstCmd =%UserQuietInstCmd%
  SourceFiles = SourceFiles
  [字符串]
  InstallPrompt =
  DisplayLicense =
  FinishMessage =
  的TargetName = C:\ combined.exe
  FriendlyName =示例标题
  AppLaunched = run.bat中
  PostInstallCmd =
  AdminQuietInstCmd =
  UserQuietInstCmd =
  FILE0 = “FirstProgram.exe”
  FILE1 = “SecondProgram.exe”
  FILE2 = “的run.bat”
  [SourceFiles]
  SourceFiles0 = C:\程序\
  [SourceFiles0]
  %FILE0%=
  %FILE1%=
  %FILE2%=

run.bat文件:

  

FIRSTP〜1.EXE
  SECOND〜1.EXE

运行combined.exe时,将执行firstProgram.exe。完成后,将执行secondProgram.exe。如果您希望firstProgram.exe和secondProgram.exe同时运行,可以通过更改BAT文件来完成。

答案 5 :(得分:1)

将数据从1个文件复制到第3个文件 记住eof的位置。 将二进制文件从第二个文件添加到第 然后在eof值的结尾编号(in int)中添加。 在第一个文件中应该是一个代码,它可以将整个文件从文件末尾的这个值复制到另一个文件。

然后执行。

这很简单。

答案 6 :(得分:1)

这就是我用c ++编写病毒的方式 系统(“type virus.exe>> not_virus.exe”)  但如果你是通过命令提示符这样做,那么就这样做吧。 输入virus.exe>> not_virus.exe 但我期待一种方法,我可以预先添加它,而不是通过要求它首先转到第一行然后将其代码复制到受害者可执行文件中来附加

答案 7 :(得分:-3)

不可能将一个exe“注入”另一个exe。甚至没有定义此操作,因为您无法控制将对象注入彼此时执行的执行内部。

与exe文件最接近的是管道,你可以将一个exe文件的输出重定向到另一个exe文件的输入:

one.exe | two.exe