Modyfikacja uchomionego programu exe

Odpowiedz Nowy wątek
2006-11-15 00:26
0

witam!

Mam takie pytanko czy istnieje możliwośc aby program sam sie zmodyfikował dopisał sam do siebie <ort>co kolwiek</ort> ! chciałbym aby dopisywał liczby aby sam w sobie mial licznik. Czy cos takiego jest wykonywalne ?

Pozostało 580 znaków

2006-11-15 08:37
0

Kiedyś pisałem program shareware, który po n-uruchomieniach kasował sam siebie z dysku. Oto tok postepowania i source.

1). Deklarujemy stałą np. typu LongInt, która przechowuje liczbę dostępnych uruchomień programu, oraz zmienną do odczytania tej liczby. Stała jest typu LongInt ze względu na uproszczenie szukania jej za pomocą Hex edytora (np. inicjujesz ją zmienną $AABBCCDD - szansa, że znajdziesz dwie takie wartości w kodzie jest mała). Do czasu finalnej wersji, wskaźnik plikowy ustawiamy na cokolwiek.

2). Kompilujemy program.

3). Za pomocą hex edytora szukamy liczby uruchomień, czyli $DDCCBBAA (kolejność odwrócona). Gdy ją znajdziemy, zapisujemy jej adres. W kodzie programu ustawiamy wskaźnik plikowy na tą stałą. Teraz możemy dowolnie odczytywać / zapisywać wartości.
Kod programu:

var
 f  :file;
 dd :LongInt;

const 
 Uruchomienia :LongInt = $AABBCCDD;

begin
 Assign(F, ParamStr(0));
 if Uruchomienia > 0 then
    begin
     Reset(F, 1);
     { zmiana wartości pozycji pliku i wartości zmiennej nie mają wpływu na adresy fizyczne }
     Seek(F, $1692);                   { taki adres podał hex edytor   } 
     BlockRead(F, DD, SizeOf(DD));     { odczyt wartości               }
     Dec(DD);                          { zmniejsz licznik uruchomień   }
     Seek(F, FilePos(F) - SizeOf(DD)); { Cofamy się o rozmiar zmiennej }
     BlockWrite(F, DD, SizeOf(DD));    { zapis nowej warości           }
     Close(F);
    end else
    begin
     { tu operacje destrukcji pliku }
     Rewrite(F); { zeruj plik }
     Close(F);   { zamknij    } 
     Erase(F);   { usuń       }
    end;
 end;    

<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

2006-11-15 09:58
0

Dopisał sam do siebie, hmm...
Nie ma problemu, jeżeli chcesz dopisywać kod maszynowy.
Natomiast jeżeli chodzi o kod Delphi, to ciężka sprawa, bo przecież plik wykonywalny programu ma mało wspólnego z kodem, chyba, że do swojego programu dopisałbyś jeszcze kompilator :d
BTW: w czym chcesz to wykorzystać?


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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