Patch do programu

0

Możliwe, że było to na forum, ale mam bardzo ograniczony czas więc przepraszam za nieuruchomienie wyszukiwarki. Chciałbym się dowiedzieć, jak można w Delphi zrobić patch na program, że zmienia fragment kodu pliku EXE tam, gdzie jest błąd? Wiem, że to śmiesznie brzmi z klawiatury osoby, która chce uważać się za programistę, ale chciałbym otrzymać gotowe rozwiązanie :-) . Z góry dziękuję za wszystkie odpowiedzi.

0

Gotowe rozwiązanie czego? Chcesz gotowy patch? Gotową łatkę do niewiadomego programu?

file/file of,assign/assignfile,reset,seek,blockwrite/write,close/closefile + f1.
Acha, jeszcze drobnostka... Przydałby sie odpluskwiacz i niejaka znajomość kodu maszynowego.

// command.com /c del [tu_nazwa_pliku] <- naprawi każdy uszkodzony plik ;] ale musisz mieć win98 lub w dół.

//flabra - to lepsze: "copy nul plik>nul" :d - m.M

0

Może się niejasno wyraziłem. Poprawiam program i zrobić taki program w Delphi, żeby poprawiał w EXE. Albo jak jest jakiś program, w którym podaję EXE przed patchowaniem i "po" patchowaniu (ten poprawiony przeze mnie), to on generuje plik zmieniający ten pierwszy EXE [ale zamotałem].

0

Powinienieś uzyć kilku procedur w DLL. I potem zastepowac tylko biblioteke.

0

Albo jak jest jakiś program, w którym podaję EXE przed patchowaniem i "po" patchowaniu (ten poprawiony przeze mnie), to on generuje plik zmieniający ten pierwszy EXE [ale zamotałem].

Takich programów znajdziesz bez liku jeśli użyjesz magicznej strony http://google.pl. Ot choćby LoneWolf - ale są lepsze.

0

Nie wiem czy oto chodzi ale ściągnij sobie progroz PatchMaker!!

super progroz!!!! [cygaro]

0

Wystarczy użyć zapisu do pliku binarego.

assignFile(f, 'plik.exe');
Seek(f, 1); // offset wartości do zmiany
BlockWrite(f, buffer, sizeof(buffer)); //wpisanie nowej wartosci
FileClose(f);

//buffer to tablica: array[0..1] of byte;

0

Wystarczy użyć zapisu do pliku binarego.

[...]

Sprawa nie jest taka banalna. Gdyby chcieć skopiować najpierw caly plik do jakiegoś bufora, a potem ponownie zapisać do patchowanego pliku, to patchowanie nie miałoby sensu, łatwiej byłoby zamienić po prostu plik. Patchowanie ma sens, kiedy wpisujemy do pliku tylko te bajty, które się róznią. I tu pojawia się problem, jak wykryć, czym róznią się 2 pliki. Można oczywiście pętlę i czytać po bajcie oraz porównywać, ale co, jeśli pliki będą się rózniły jedynie tym, że na pczątku jednego będzie dodatkowy bajt? Wtedy patcher wykryje, że pliki są kompletnie różne i łatka będzie tak duża, jak cały łatany plik. Trzeba by użyć jakiegoś zaawansowanego algorytmu.

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