[D7] Wykrywanie ingerencji jednego programu w drugi

0

Witam, tak jak w temacie jak wykryć ingerencje jednego programu w drugi. Są takie programy jak np Cheat Engine w którym możemy zmienić wartość danego offseta. Mógłby mi ktoś powiedzieć jak takie cos wykryć?

Pozdrawiam

0

Nie robiłem nigdy nic takiego. Chyba tylko jakoś w wątku uruchomionym w trakcie
działania naszej aplikacji sprawdzać, czy dany adres w pamięci naszego procesu nie
zawiera innej wartości niż tej, jaką założyliśmy. Ale może są inne metody do tego.

0

Chyba tylko jakoś w wątku uruchomionym w trakcie
działania naszej aplikacji sprawdzać, czy dany adres w pamięci naszego procesu nie
zawiera innej wartości niż tej, jaką założyliśmy

Mógłbyś mi powiedzieć lub dać przykład jak to zrobić?

0

takie cos mozna zrobic ustawiajac breakpointa w rejestrach 'debug'.
jak cos sie odwola (read/write/execute) to danego offsetu (1/2/4 bajty), to dostaniesz wyjatek.

0

Relds: sorry, że dopiero teraz odpisuje, ale w nocy jak siedziałem padł prąd, a
później w dzień caly czas kombinowałem z tym i nie umiem wykryć zmiany, bo jak
modyfikuje przez WriteProcessMemory pamięć procesu od $00400000 to i tak się
ona nie zmienia, a przynajmniej niektóre teksty, a cheat engine potrafi z tego
co zauważyłem modyfikować większy obszar pamięci. Może uyt5345, poda Tobie
jakiś przykład. Ja wygooglowałem źródło do CheatEngine w wersji 5.5 i sobie je
po dodaniu modułów do xmla z Delphi 7 Enterprise (bo używam Personal, a w ów
wersji ich nie ma) oraz skompilowaniu szablonu trainera w exe wraz z kompilacją
pliku trainer.rc przy użyciu brcc32.exe, dodałem sobie jedną małą funkcjonalnośc
a mianowićie do popupmenu - wyświetlanego na polu eydycjnym do wyszukiwania w
procesie bajtów lub licz lub tekstu, w przypadku zaznaczenia pola Hex obok, pod
skrotem klawiszowym Ctrl+R dodałem reverse bytes, bo w wielu grach to się może
przydać czyli jak mamy wartość po przeliczeniu na hex - na przykład 3A4758, to
po wybraniu opcji mamy już 58473A, a w razie jakby ilość liczb w polu edycyjnym
była nieparzysta to z przodu dodawane jest jedno zero i dopiero odwraca całość.
Niewiele jestem w stanie pomóc, kod Cheat Engine który pobwałem ma w sumie - po
skompilowaniu prawie 50 MB i składa się z wielu formatek i modułów - także jest
mi ciężko po pobieznym przyglądnieciu się kodowi źródłowemu - znaleźć konkrety,
jak jest zrobione wyszukiwanie po calej pamięci procesu. Widzę tylko, że chyba,
do tego celu użyte są osobne klasy w kilku modułach, ale mogę się mylić. Napisz
może na forum supportu CheatEngine, ja tam napisze ze swoją sugestią dodania do
Cheat Engine opcji Reverse Bytes, ale nie wiem czy znalazł by się tam ktoś, kto
pomógł by Tobie walczyć z Cheat Engine. Może tutaj lub tam znajdzie się ktoś, w
miare biegły w Delphi i bardziej doświadczony ode mnie - kto Tobie pomoże kodem.

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