Rozpakowane pliku exe

0

Witam!

Mam pewien program 32bitowy, niestety jest od skompresowany.
Muszę zrobić pewnie przeróbki, wykorzystuję do tego ollydbg, niestety nie radzę sobie z spakowanymi programami.

-Jeśli program przechwycę poprzez "Attach", widzę wszystkie instrukcje w postaci zdekompresowanej, niestety jeśli zrobię przeróbki nie mogę zapisać zmian(jako nowy plik exe).
-Jeśli otworzę program poprzez ollydbg, mogę zapisywać zmiany, lecz zmian nie mogę wykonać ponieważ program jest spakowany.
-Nie jest to typowa znana kompresja, gdzie znajdę sobie program.

Czy jest możliwość przechwycenia programu i zapisania, tak aby została zapisana wersja zdekompresowana? Jak to zrobić?
Pamiętam, że jakimś sprytnym sposobem można było rozpakować, niezależnie jakimi algorytmami był spakowany.

Uprzedzam pytania:
-program jest przeznaczony do nauki reverse engineering.

0

Da sie, każdy program można rozpakować (prościej albo trudniej).

Zakładam że chcesz zapisać wypakowany program tak żeby się uruchamiał (skoro chcesz dokonać przeróbek).

No więc po kolei:

  1. Uruchamiasz program w ollydbg (albo dowolnym debuggerze)

  2. Śledzisz wykonanie aż dojdziesz do OEP (original entry point), czyli EP programu przed spakowaniem.
    Dla wyjaśnienia (chociaż pewnie to wiesz), packery działają tak, że najpierw wypakowują skompresowany kod do pamięci, a później skaczą do niego. Twoim celem jest znalezienie momentu kiedy program kończy się wypakowywać (czyli jest w pamięci w czystej formie) i postawienie tam breakpointa.

  3. Jeśli jesteś już w tym momencie, to znaczy że w pamięci gdzieś jest oryginalny program, świetnie. Teraz musisz zrobić dump programu. Najprościej do tego użyć pluginu OllyDump (skoro i tak używasz Olly'ego) - http://www.openrce.org/downloads/details/108/ollydump (albo teraz znalazłem coś ciekawego - OllyDumpEx http://low-priority.appspot.com/ollydumpex/, powinien też dać radę).

Jeśli będziesz miał szczęście to plugin wszystkie pola wypełni za Ciebie sam (upewnij się tylko czy entry point jest dobrze ustawiony - to musi być OEP, czyli miejsce gdzie skacze packer po wypakowaniu.

Polecam odznaczyć rebuild importów (o tym w następnym punkcie), i zapisz dump jako jakiś "dump.exe" na dysku.

  1. Najgorsza część, rebuild importów. Może to zrobić OlldDump teoretycznie, ale nigdy nie miałem z nim szczęścia (możesz spróbować).
    Zamiast tego dużo większe szanse na powodzenie ma użycie specjalizowanego narzędzia, np. Import REConstructor (https://tuts4you.com/download.php?view.415). Attachujesz go do procesu, modlisz się żeby znalazł IAT, dajesz "fix imports" czy jakoś tak, wybierasz "dump.exe" i powinno wszystko działać (przy odrobinie szczęścia).

1 użytkowników online, w tym zalogowanych: 0, gości: 1