-
Zabezpieczenie pamieci aplikacji
Witam. Mam pewien problem, ma ktos jakis pomysl jak zabezpieczyc pamiec aplikacji przed dostepem do niej.
Chodzi mi dokladnie o napisanie jakiejs dll, ktora podczepiona pod aplikacje wykryje ze ktos probuje z zewnatrz zmienic jej pamiec i w razie czego wylaczyc aplikacje.
Przykladem moze byc uzywanie programow typu cheat engine/art money. Przypominam ze programy tego typu przeszukuja pamiec aplikacji a potem zwiekszamy sobie np ilosc pieniedzy w grze manipulujac jakas zmienna w pamieci.
Nie mam wogole pomyslu jak wykrywac chocby w c++ czy ktos czasem nie probuje sie podpiac do pamieci.
Bylbym bardzo wdzieczny, gdyby jakis pro rzucil mi chocby jakies naprowadzenie na rozwiazanie
-
w sumie szkoda czasu aby sie w to bawic bo skoro ktos potrafi zamienic bajty w procesie (sekcjach danych lub kodu) moze spokojnie usunac twoje 4 linijki kodu.
rootkit.com
Grzonu Blog
-
nie, poniewaz kazda modyfikacja kodu zmienia checksumie
aplikacja sie laczy z serwerem, ktory porownuje te checksumy, owszem jest jakis sposob na ominiecie tego, ale w decelowej grupie uzytkownikow potrafi to moze 0.0001% osob
Ostatnio edytowane przez rakoo : 05-30-2010 - 12:04
-
Z poziomu ring3 będzie to ciężko zrobić. Musisz ustawić atrybuty dla strony/bloku pamięci którą chcesz chronić. Są jeszcze inne, bardziej "sprytne" sposoby w celu dokonania tych zmian ;p. W celu dostępu do danych w pamięci inny program musi przejść takie kroki jak sprawdzenie przez procesor dostępu programu do konkretnej pamięci czyli: stos, blok, strona. Do każdego z tych 3 zasobów pamięci dochodzi sprawdzanie bitów i ringów, tj porównywanie ringu programu który chce dostać się pamięci i ringu pamięci w stronach są bity, 0 i 1 administrator i użytkownik. Można się tym pobawić, ale nie jest to łatwe do zrobienia .
Ostatnio edytowane przez Prick : 05-31-2010 - 12:16
-
probowalem z VirtualProtect ale cos czuje ze latwo bedzie to oszukac,
moge walczyc z wiatrakami piszac dllke skanujaca procesy i szukajacych dumpow offsetow "zakazanych" aplikacji do modyfikacji pamieci typu cheatengine czy artmoney, ale takie nastawienie mija sie z celem, poniewaz baza takiego cheatu bylaby coraz ciezsza, dodatkowo takie rozwiazanie latwo obejsc programami do ukrywania procesow,
glownie chodzi mi o ochrone jednego, jedynego offsetu (4 bajtowy INT bodajze)
jednym slowem jestem w dupie ^ ^ dlatego pisze tutaj, moze ktos wpadnie na jakis efektywny, szalony pomysl
Ostatnio edytowane przez rakoo : 06-07-2010 - 19:35
-
to nie problem . Przeczytaj swoje PM.
-
A gdyby program byl wykonywany z poziomu nizszego Ringa, to czy VirtualProtect mialby prawo zdjac oslone?
Czytalem gdzies w internecie ze wykorzystujac kilka dziur w Windowsach da sie nawet swoj program ustawic na dzialanie w Ring0. Wnioskuje ze niektore wirusy musza dzialac podobnie
W sumie moglbym np ustawic co jakis czas sprawdzanie segmentu kodu, czy nie zostal zmodyfikowany, albo chociaz pojedynczych offsetow - poczatkow procedur, czy nie ma tam JMPow w jakies dziwne miejsca. Ale nie chce robic offtopu - chodzi mi niestety o segment danych, a jego wartosci sie zmieniaja
-
jesli inny soft zechcialby modyfikwowac twoja pamiec musi najpierw wczytac twoją (najprawdopodobniej) dll do swojej pamięci.
zazwyczaj podczepianie wygląda tak:
CreateRemoteThread - tworzenie wątku w którym ładuje liba do pamieci i tworzy odrebny watek do aplikacji
LoadLibrary - Wczytywanie dll do pamięci,tym samym modyfikacja pamięci.
Aby temu zapobiec najlepiej założyć hook na funkcję LoadLibrary
lub
sprawdzać dokładne adresy spod IAT w twoim software jeśli się nie zgadza odrzucasz takie odwołanie do procedury LoadLibrary.
przy tym dodam zeby sprawdzac argumenty LoadLibrary.
Przypominam że nie musi to byc LoadLibrary tylko kilka innych funkcji jak chocby spod ring0
lista procedur Nt..
//
jak zwykle polecam mój software do takich rzeczy.
//
Ostatnio edytowane przez g3t_d0wn : 01-29-2011 - 16:32
-
Najskuteczniejszym sposobem bedzie filtrowania proby otwarcia procesu/watku oraz duplikacji ich uchwytow z procesu csrss, do tego technika uniemozliwiajaca zaladowanie dowolnej biblioteki za pomoca windows hook'ow, przefiltrowanie komunikatow do okien jesli proces korzysta z okien. Zeby to wszystko w miare sensownie wspolgramo niezbedna jest implementacja na poziomie kernel mode - dla obeznanych w temacie - bulka z maslem
Zasady Postowania
- Nie możesz zakładać nowych tematów
- Nie możesz pisać wiadomości
- Nie możesz dodawać załączników
- Nie możesz edytować swoich postów
-
Forum Rules