Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pakowanie .exe w C++


Rekomendowane odpowiedzi

Opublikowano

Siema!

Czy da się jakoś spakować .exe do środka programu, który napiszę ?

 

Czyli tak, pakuje .exe do mojego programu, są jakby połączone, i wraz z odpaleniem mojego programu startuje to .exe spakowane w mój program.

Wiem, że coś takiego się da zrobić, tylko jak ?

Opublikowano

Też kiedyś potrzebowałem podobnej funkcjonalności.

 

napisz sobie program który zamieni plik .exe na tablice charów

 

char plik[] = {0x4d,0x5a,.....

 

i wrzuci to do jakiegos pliku nagłówkowego.

 

Śmiesznie proste, ale działa. Zapewne jest jakis lepszy sposób.

btw tego typu aplikacje będą prawdopodobnie wykrywane jako malware.

Pisze boty do gier WWW na zlecenie.

Opublikowano

ja bym to zrobił tak.

Znalazł entry point w exeku, którego chcemy wrzucić do innego.

Zrobić z exeka tablicę charów.

Wywołać odpowiednią komórkę (entry point) tablicy jako funkcję.

 

Nie jestem pewien jedynie jakby sobie ten exek poradził z odwołaniami do adresów w swoim obrębie. Trzeba by to sprawdzić

 

Właściwie ja C++ uczę się od kilku dni, mógłbym prosić o wytłumaczenie mi tego :)?

To najlepiej daj sobie spokój i wróć do tego jak będziesz wiedział jak to zrobić.

Już dostałeś wystarczająco informacji. Jak sobie nie radzisz to już twój problem, bo następnym krokiem byłoby danie ci gotowego kodu

Opublikowano

1. Use a debugger to view your program (e.g. ollydbg)
2. Copy asm listing (ollydbg->right mouse click->Binary->Copy)
3. Paste the bytes into a Hex Editor (e.g. Hex Workshop)
4. In Hex Workshop select the bytes
5. Choose Edit-> Copy as-> C Source
6. Paste the C Array into your sourcecode

 

Znalazłem coś takiego.

Opublikowano

ja bym to zrobił tak.

Znalazł entry point w exeku, którego chcemy wrzucić do innego.

Zrobić z exeka tablicę charów.

Wywołać odpowiednią komórkę (entry point) tablicy jako funkcję.

 

Nie jestem pewien jedynie jakby sobie ten exek poradził z odwołaniami do adresów w swoim obrębie. Trzeba by to sprawdzić

 

To najlepiej daj sobie spokój i wróć do tego jak będziesz wiedział jak to zrobić.

Już dostałeś wystarczająco informacji. Jak sobie nie radzisz to już twój problem, bo następnym krokiem byłoby danie ci gotowego kodu

 

Wątpie żeby to zadziałało. Jak np by to miało wyglądać z tablicą importów, zmiennymi globalnymi?

 

Spójrz jak wygląda call do funkcji importowanej (gcc)

 

FF 15 xx xx xx xx

gdzie iksy to adres NIE-relatywny tablicy importów.

 

Ogólnie rzecz biorąc odwołanie do jakiegokolwiek zasobu globalnego spowodowałoby access violation w najlepszym wypadku (i to już na 5 instrukcji od EP (w gcc))

Pisze boty do gier WWW na zlecenie.

Opublikowano

Kompilacja drugiego programu z opcją dynamicznego adresu bazowego, czyli relokacje w .exe lub ustawienie adresu bazowego programu drugiego na taki, który nie będzie kolidować z tym pierwszym. Najlepiej wrzucić ten drugi program do .dll'a i jego ładować np. z zasobów.

Należy wtedy, jak wspomniał kolega wyżej, załadować importy, przeliczyć relokację czy ewentualnie jeszcze przygotować TLS. Po tym odpalanie EP i działa.

YOU MUST DIE

- Ganon, Koridai

Opublikowano

Wrzuć drugi exe na koniec pierwszego a w pierwszym go gdzieś wypakuj i uruchom.

Twoja stara robi catch the clowny w Game Makerze.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...