2010-02-15 34 views
14

Có cách nào hợp nhất hai tệp exe thành một, theo lập trình, để chạy nó sẽ thực thi cả hai tệp exe cũ với nhau. Tôi tìm thấy một số điều trên google về tiêm mã hoặc các tập tin dll nhưng là nó có thể hai hợp nhất hai tập tin exe hoặc để tiêm exe vào exe?Hợp nhất hai tệp exe thành một chương trình

Xin cảm ơn trước.

[EDIT] Cảm ơn mọi người. Chỉ cho những người nói rằng điều đó là không thể, tôi phải nói rằng tôi gần như đã làm điều đó cuối cùng theo cách mà một số người được gợi ý. Nó gần như đi như thế này (Tôi không thể nhớ tất cả nó cos nó đã được một thời gian dài trước đây):

[BEWARE: Thuật toán này rất giống với một số sâu và virus. Tôi không phải là một hacker hay một nhà văn virus! và điều này chỉ được sử dụng cho các lý do thực nghiệm hoặc vô lý - Làm cho các lỗi trong mã có thể làm hỏng các tập tin thực thi trong các thư mục.]

1- Kiểm tra kích thước của chính nó để phát hiện xem có bất kỳ thứ gì được gắn vào chính nó hay không. nếu nó có không thì:

 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- Nếu exe phát hiện rằng một cái gì đó đã được thêm vào nó sau đó:

 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. 

tôi đã nói tôi gần như đã làm nó cos theo cách này các exe gắn thêm khác exe cho chính nó. nhưng điều này có thể được lặp lại để thêm và thực thi 2 hoặc thậm chí 3 hoặc nhiều tệp thi hành vào một. bạn chỉ cần biết ORIGINAL_FILE_SIZE của chương trình được viết.

+1

exefusion có trojan phần mềm độc hại. – BioDeveloper

Trả lời

5

Về mặt lý thuyết điều này là có thể, nhưng sẽ mất một số nỗ lực từ phía bạn.

Bạn có thể nối dữ liệu vào tệp exe, đây là cách tự giải nén lưu trữ hoạt động. Tuy nhiên, bạn sẽ cần định dạng dữ liệu của riêng mình, tương tự như một hệ thống tệp, vì bạn chỉ có một tệp .exe phẳng.
Xem bài viết này của Microsoft (có nhiều thông tin khác trên google) http://support.microsoft.com/?scid=kb%3Ben-us%3B84062&x=12&y=13

Ví dụ bạn đang đóng gói hai tệp của bạn rồi phải trích xuất các tệp đó và cuối cùng có thể chạy chúng.

Chúc may mắn.

5

Không, đặt cược tốt nhất của bạn là tạo tệp .bat (Windows) chạy cả hai tệp thi hành.

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

Bạn cũng có thể tạo ra một shell script trong Linux để làm điều tương tự

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

Lưu ý, điều này sẽ thực hiện file1 file2 trước.

+1

nó không phải là một gợi ý tốt và hầu hết sẽ không hoạt động. cả ba tệp sẽ cần phải ở cùng một thư mục. Nó cũng có thể đóng gói hai tập tin nhị phân với nhau thành một, và có cả hai chạy. – Dio

-3

Không, không thể "tiêm" một exe này vào một tài khoản khác. Hành động này thậm chí không được định nghĩa là bạn không có quyền kiểm soát các thực thi nội bộ mà bạn làm khi bạn tiêm các đối tượng vào nhau.

Điều gần nhất có thể với các file exe là đường ống, nơi bạn có thể chuyển hướng đầu ra của một tập tin exe để đầu vào của nhau:

one.exe | two.exe 
+0

Trên Windows, tôi chắc chắn rằng One.exe sẽ thực hiện hoàn toàn trước khi bắt đầu hai.exe. Không chắc chắn nếu đây là những gì được mong muốn. –

+3

-1. Bởi vì chuyển hướng đầu ra của một exe đến đầu vào của một khác không giống như những gì OP dự định. Rất khác nhau. –

4

Bạn có thể tạo tập tin EXE của riêng bạn mà chứa hai khác EXE các tệp dưới dạng tài nguyên được nhúng và trích xuất và thực hiện từng tệp.

Hãy coi chừng rằng EXE mà bạn nhúng có thể không hoạt động nếu bạn giải nén nó vào một thư mục khác.

1

Sao chép dữ liệu từ 1 tệp vào thứ ba Ghi nhớ vị trí của eOF. Thêm nhị phân từ tệp thứ hai sang thứ ba. Sau đó, thêm vào số cuối (trong int) của giá trị eOF. Trong tệp đầu tiên phải là một mã có thể sao chép toàn bộ tệp từ giá trị này ở cuối đến cuối tệp tới tệp khác.

Và thực thi.

Thật dễ dàng để làm điều đó.

3

Về mặt kỹ thuật, có thể nhúng một số tệp exe khác vào exe của bạn, một số nhà đóng gói như upx làm điều đó. Vì vậy, bạn sẽ có thể làm tương tự với 2 exes.

Trong một unix như thời trang exe của bạn có thể ngã ba, sau đó quá trình đầu tiên thực thi thực thi cũ đầu tiên, và quá trình mới thực hiện exe thứ hai, có thể cài đặt một đường ống giữa chúng trước.

Nhưng điều này rõ ràng là không dễ dàng để làm và rất có thể là một overkill vô dụng cho nhu cầu của bạn. Bạn có thể chỉ cần một nhỏ .bat hoặc .sh

3

tôi nhận thấy bạn "lập trình" vòng loại, nhưng chỉ trong trường hợp một giải pháp out-of-code là có thể chấp nhận cho bất cứ điều gì bạn đang làm ...

IExpress có thể xây dựng một EXE mà thực hiện hai exe khác. Bạn có thể xây dựng một gói IExpress từ dòng lệnh.

tập tin SED:

[Version]
Class = IExpress
SEDVersion = 3
[Options]
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
[Strings]
InstallPrompt =
DisplayLicense =
FinishMessage =
TargetName = C: \ combined.exe
FriendlyName = Ví dụ Tiêu đề
AppLaunched = chạy .bat
PostInstallCmd =
AdminQuietInstCmd =
UserQuietInstCmd =
FILE0 = "FirstProgram.exe"
FILE1 = "SecondProgram.exe"
FILE2 = "run.bat"
[SourceFiles]
SourceFiles0 = C: \ programs \
[SourceFiles0]
% FILE0% =
% FILE1% =
% FILE2% file =

run.bat:

FIRSTP ~ 1.EXE
THỨ HAI ~ 1.EXE

Khi bạn chạy combined.exe, firstProgram.exe sẽ thực hiện. Khi nó kết thúc, secondProgram.exe sẽ thực hiện. Nếu bạn muốn firstProgram.exe và secondProgram.exe chạy đồng thời, nó có thể được thực hiện với một thay đổi đối với tệp BAT.

1

Đây là cách tôi đã viết virus của tôi trong C++ hệ thống ("loại virus.exe > > not_virus.exe") nhưng nếu bạn đang làm việc đó thông qua dấu nhắc lệnh sau đó chỉ cần làm điều này. Loại virus.exe > > not_virus.exe Nhưng tôi đang mong chờ một cách tôi có thể thêm vào trước nó chứ không phải phụ thêm bằng cách hỏi nó để dòng đầu tiên goto đầu tiên sau đó sao chép mã của nó vào nạn nhân thực thi tập tin

Các vấn đề liên quan