2010-02-15 16 views
14

Czy istnieje sposób, aby połączyć dwa pliki exe w jednym, programowo, tak, że działa to byłoby wykonać zarówno starsze pliki exe razem. Znalazłem kilka rzeczy na google o wstrzykiwaniu kodu lub plików dll, ale jest to możliwe dwa scalić dwa pliki exe lub wstrzyknąć exe do exe?Scalanie dwóch plików w jeden exe programowo

Z góry dziękuję.

[EDIT] Dziękuję wszystkim. Tylko dla tych, którzy twierdzili, że nie jest to możliwe, muszę powiedzieć, że w końcu zrobiłem to prawie tak, jak sugerowali niektórzy. To prawie tak wygląda (nie pamiętam wszystkiego, ponieważ było to dawno temu):

[UWAGA: ten algorytm jest bardzo podobny do niektórych robaków i wirusów. Nie jestem hackerem ani twórcą wirusów! i to ma być używane tylko z powodów eksperymentalnych lub nieszkodliwych - Dokonywanie błędów w kodzie może zrujnować pliki wykonywalne w katalogach.]

1- Exe sprawdza rozmiar swojej osoby, aby wykryć, czy coś zostało do niej dołączone. jeżeli nie ma ona wtedy:

 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- Jeśli exe wykryje, że coś zostało dodane do niego wtedy:

 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. 

powiedziałem prawie zrobił to cos w ten sposób exe dołącza kolejny exe do siebie. ale można to powtórzyć dla dołączenia i wykonania 2 lub nawet 3 lub więcej plików wykonywalnych w jeden. musisz tylko znać ORIGINAL_FILE_SIZE z napisanego programu.

+1

exefusion ma trojana złośliwe oprogramowanie. – BioDeveloper

Odpowiedz

5

Teoretycznie jest to możliwe, ale będzie to wymagało trochę wysiłku z twojej strony.

Możesz dołączyć dane do pliku exe, tak działają samorozpakowujące się archiwa. Będziesz jednak potrzebował własnego formatu danych, podobnego do systemu plików, ponieważ masz tylko jeden płaski plik .exe.
Zobacz ten artykuł Microsoft (jest dużo bardziej na google) http://support.microsoft.com/?scid=kb%3Ben-us%3B84062&x=12&y=13

EXE jesteś pakowania swoje dwa pliki w moszczu następnie wyodrębnić te pliki i można wreszcie uruchomić je.

Powodzenia.

5

Nie, najlepiej jest stworzyć .bat pliku (Windows), który działa zarówno pliki wykonywalne.

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

Można również utworzyć shell script w systemie Linux, aby zrobić to samo

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

uwaga, będzie to wykonać przed plik1 plik2.

+1

to nie jest dobra sugestia i przeważnie nie zadziała. wszystkie trzy pliki będą musiały być w tym samym katalogu. Możliwe jest również spakowanie dwóch plików binarnych w jeden i obydwa działają. – Dio

-3

Nie można "wstrzyknąć" jednego exe do innego. Ta czynność nie jest nawet zdefiniowana, ponieważ nie masz kontroli nad wewnętrznymi wykonaniami, które robisz, gdy wstrzykujesz obiekty do siebie nawzajem.

Najbliższy rzeczą możliwe z plików exe jest rurociąg, gdzie można przekierować wyjście jednego pliku exe do wejścia innego:

one.exe | two.exe 
+0

W systemie Windows jestem pewien, że plik on.exe zostanie wykonany całkowicie przed uruchomieniem programu two.exe. Nie jestem pewien, czy tego właśnie chce. –

+3

-1. Ponieważ przekierowanie wyjścia jednego exe do wejścia drugiego nie jest tym samym, co zamierzał OP. Bardzo różne. –

4

można stworzyć swój własny plik EXE, który zawiera dwa inne EXE pliki jako zasoby osadzone i wyciągi i wykonuje je każdy.

Strzeż że EXE że osadzenie może nie działać, jeśli wyodrębnić go do innego katalogu.

1

Kopiowanie danych z 1 plik do trzeciego Zapamiętaj pozycję EOF. Dodaj plik binarny z drugiego pliku na trzeci. Następnie dodaj na końcu numeru (w int) wartości eof. W pierwszym pliku powinien znajdować się kod, który może skopiować cały plik z tej wartości na końcu pliku na inny.

I wykonać.

To prosty sposób na zrobienie tego.

3

Technicznie możliwe jest osadzenie niektórych plików exe w twoim exe, niektóre pakery jak upx to robią. Więc powinieneś być w stanie zrobić to samo z 2 byłymi.

W stylu unixowym twój exe może się rozwidlić, wtedy pierwszy proces wykonuje pierwszy stary plik wykonywalny, a nowy proces wykonuje drugi exe, może instalując wcześniej potok między nimi.

Ale to zdecydowanie nie jest takie łatwe do zrobienia i prawdopodobnie bezużyteczne przesady dla twoich potrzeb. Prawdopodobnie potrzebujesz małego .bat lub .sh

3

zauważyłem swój „programowo” kwalifikator, ale tylko w przypadku, out-of-kodu rozwiązanie jest do zaakceptowania dla cokolwiek robisz ...

IExpress można zbudować EXE, który wykonuje dwa inne exe. Możesz zbudować pakiet IExpress z linii poleceń.

LEP plików

[wersja]
klasa = Iexpress
SEDVersion = 3
[Opcje]
PackagePurpose = InstallApp
ShowInstallProgramWindow = 1
HideExtractAnimation = 1
UseLongFileName = 0
InsideCompressed = 0
CAB_FixedSize = 0
CAB_ResvCodeSigning = 0
RebootMode = N
InstallPrompt =% InstallPrompt%
DisplayLicense =% DisplayLicense%
FinishMessage =% FinishMessage%
nazwa_obiektu_docelowego =% nazwa_obiektu_docelowego%
FriendlyName = % FriendlyName%
AppLaunched =% AppLaunched%
PostInstallCmd =% PostInstallCmd%
AdminQuietInstCmd =% AdminQuietInstCmd%
UserQuietInstCmd =% UserQuietInstCmd%
SourceFiles = SourceFiles
[Ciągi]
InstallPrompt =
DisplayLicense =
FinishMessage =
nazwa_obiektu_docelowego = C: \ combined.exe
FriendlyName = Przykład Nazwa
AppLaunched = prowadzony bat
PostInstallCmd =
AdminQuietInstCmd =
UserQuietInstCmd =
FILE0 = "FirstProgram.exe"
PLIK1 = "SecondProgram.exe"
PLIK2 = "run.bat"
[SourceFiles]
SourceFiles0 = C: \ programy \
[SourceFiles0]
% FILE0% =
% PLIK1% =
% PLIK2 plik% =

run.bat:

FIRSTP ~ 1.EXE
DRUGI ~ 1.EXE

Po uruchomieniu combined.exe, firstProgram.exe wykona. Po zakończeniu zostanie uruchomiony program secondProgram.exe. Jeśli chcesz, aby firstProgram.exe i secondProgram.exe działały jednocześnie, można to zrobić, zmieniając plik BAT.

1

To było jak pisałam wirusa w C++ System („typ virus.exe > > not_virus.exe”) ale jeśli robisz to za pomocą wiersza poleceń, a następnie po prostu to zrobić. Rodzaj virus.exe > > not_virus.exe Ale ja czekam na sposób mogę poprzedzić go zamiast dołączania prosząc go do pierwszego goto pierwszej linii skopiuj swój kod do pliku wykonywalnego ofiary