我觉得这不一定是编译而成的,可能是在第一个exe中有一段代码,这段代码的目的是在程序启动的时候,将从本文件开始处起偏移量为????处的某一段数据取出重新存储为一个Exe文件,而这一段内容刚好就是第二个.Exe文件的内容。

解决方案 »

  1.   

    to:Wingsun(孙春阳),即使你说法对来讲吧,当合并成一个文件时,起码这个合并的.EXE文件的文件头它能够让操作系统认识,它才能执行,请问这段代码是如何在程序中写出来的?
      

  2.   

    绝对不需要编译知识的的,它可以在exe启动后(要操作系统识别exe很容易,exe文件头都一样的),从exe资源里释放出两个可执行文件的代码即可。
      

  3.   

    我估计可能是这个程序生成一个标准的程序,在这个程序中运行合并的两个EXE程序,
    也就是说,在生成后的合并程序运行时,产生两个合并前程序的进程。
      

  4.   

    hehe,这是预先写好的一个不要form的小程序,其功能就是从自己尾部读出两个文件并写出来
    (如temp目录),并执行他们,等两个程序均返回,再将他们删除掉。
    就是这样简单!因为我作过这样的程序!                                   [email protected]
      

  5.   

    to:mophy(mophy)兄:能否给小弟源码吗?谢谢!
      

  6.   

    同意mophy
    我在想要是我做这样的东西的话也是这个思路,
    不过,这样的话,其实就是在标准文件的后面再附加上这两个文件了?
    我不知道exe文件的格式有没有在文件头里面写入像文件长度之类的信息?
      

  7.   

    这涉及.EXE的文件结构;静态的谁都能做出来,动态的就复杂了;
    静态的很简单:
        把两个.exe,一个称为主,另一个称为辅,捆在一起,执行了
    主也执行了辅,嘿嘿,给你绑上个后门BO,你还不知道呢!
        1.新建个DELPHI或BCB工程,用资源让它带两个exe文件;
        2.程序中不要显示什么主窗口,在中间目录将两个资源写到
          盘上;
        3.ShellExecute()分别执行两个文件;
    一点就明白,用纯API也简单,目标仅多了几K;
    有兴趣就试试,没兴趣就拉倒.    
      

  8.   

    copy source1.txt + source2.txt destination.txt
    应该只适合文本文件,不过你试试吧
      

  9.   

    http://www.086net.com
     [未名码头]-[delphi_win9x_me索引]
     Window下的例子动态生成EXE文件代码
    1。创建文件1:
    procedure TForm1.FormCreate(Sender: TObject);
    var Stream1:TFileStream;
        Buff:Array[1..65536] of char;
        Size,Offset,I:Integer;
    begin
    Offset:=189440;//文件的长度
    Stream1:=TFileStream.Create(Application.ExeName,fmShareDenyWrite);//共享读打开
    Size := Stream1.Size;
    Stream1.Seek(Offset,soFromBeginning);
    Stream1.Read(Buff,Size-OffSet);//读入到Buff中
    Stream1.Free;
    Memo1.Text:='';
    for i:=1 to (Size-Offset) do
    Memo1.Text:=Memo1.Text+Buff[i];
    end;
    2。创建文件2,连接文件1与文本。
    procedure TForm1.Button1Click(Sender: TObject);
    var Stream1:TMemoryStream;
        Buff:Array[1..65536] of char;
        I,Size:Integer;
    begin
    Stream1:=TMemoryStream.Create;
    Stream1.LoadFromFile('Linkprj1.exe');//读入文件1
    Size:=Stream1.Size;
    Stream1.SetSize(Stream1.Size+Memo1.GetTextLen);//长度为两者相加。
    Stream1.Seek(Size,soFromBeginning);
    for i:=1 to Memo1.GetTextLen do
    Buff[i]:=Memo1.Text[i];
    Stream1.Write(Buff,Memo1.GetTextLen);
    Stream1.SaveToFile('link.exe');//写入文件
    Stream1.Free;
    end;-------------------------------------------------------------------
    [上一篇]window文件列表说明文档
    [下一篇]请进入该类索引
     
      

  10.   

    to :jasonet(房客)兄,谢谢!你这种方法只是把文件合并,但若执行这个.EXE文件未必可以?文件合并起来当然很快,但是如果要运行起来那就麻烦了.这说我这边的这个软件它合并文件时会多出10多K字节,显然这10多K的字节就是分别执行这两个EXE的功能,我现在要的就是这10多K的代码是如何生成的?希望各位兄台能帮忙.
      

  11.   

    呵呵,运行也是一样的啊,把文件读出来,然后生成文件,用ShellExecute or Winexec执行就可以了.我有源代码.2月16号给你.
      

  12.   

    呵呵,我都忘记了,在我的主页!http://kingron.myetang.com -->软件下载,文件分解与合并.
      

  13.   

    Kingron(WinAPI)兄啊!少了一个RES不能用