Czy jest możliwe włamanie się do pamięci aplikacji?

0

Zastanawia mnie czy jest szansa na złamanie kodu w taki spsosob, żeby podczas działania aplikacji podejrzeć co znajduje się pod jakaś zmienna czy jakie elementy są aktualnie w liście. Komórki w pamięci trzymają niezrozumiały dla człowieka ciąg znaków, czy osoba łamiąca zabezpieczenia może z tego ciągu wyciągnąć i podglądać obiekty „na żywo”?

3

Tak, jest to możliwe - poczytaj o debuggerach (np. GDB).

3

@kek oczywiście że tak. Począwszy od dedykowanych do tego narzędzi jak chociażby cheat engine po zwyczajne podpięcie się debuggerem do aplikacji. Plus jeśli atakujący ma dostęp do binarki, to może ją sobie dodatkowo trochę zrewersować i odtworzyć struktury danych żeby później wygodnie oglądać to pod debuggerem.

1

W przypadku aplikacji kompilujących się do kodu maszynowego trzeba znać asemblera i narzędzia typu OllyDbg - http://www.ollydbg.de/. W przypadku języków kompilowanych do kodu pośredniego np. C#, Java istnieje możliwość dekompilacji do czystego kodu źródłowego. Przykładowe narzędzie do dekompilacji Javy, C#: http://java-decompiler.github.io/ , https://www.jetbrains.com/decompiler/.
Kod maszynowy (języki typu: C++, C itp) można dekompilować programem IDAPRO - otrzymany kod jest trochę nieczytelny. Pamięć uruchomionej aplikacji można odczytać funkcją "ReadProcessMemory".
Przykład OllyDBG:

1

OllyDbg

To chyba 20 lat temu. Teraz pod windowsa to raczej IDA lub x64dbg.

można dekompilować programem IDAPRO

IDA+Hexrays kosztuje dużo szekli, więc sugoerowałbym jednak użyć Ghidry bo jakość dekompilacji dobra no i darmowa ;)

0

mam wrażenie, ze nie zadałem pytania tak jak do końca chciałem albo jestem idiotą i nie dociera do mnie to co mówicie. rozumiem, ze mając aplikacje można się pod nią podpiąć debbugerem ale co jeśli świadczymy jakaś usługę online a ktoś wleci nam na serwer gdzie cały czas jest ruch? przypuśćmy, ze jest to strona do licytacji na której kilku użytkowników w jednym momencie uderza żądaniami. czy osoba która wlamie się na serwer może w takim przypadku jakkolwiek śledzić wartości zmiennych w kodzie? sytuacja jest analogiczna jak w przypadku zwykłej aplikacji? czy tutaj już sprawa nie jest tak trywialna jak cheat engine?

1

czy osoba która wlamie się na serwer może w takim przypadku jakkolwiek śledzić wartości zmiennych w kodzie?

Tak.

sytuacja jest analogiczna jak w przypadku zwykłej aplikacji?

Czym jest "zwykła aplikacja"?

0
Patryk27 napisał(a):

czy osoba która wlamie się na serwer może w takim przypadku jakkolwiek śledzić wartości zmiennych w kodzie?

Tak.

sytuacja jest analogiczna jak w przypadku zwykłej aplikacji?

Czym jest "zwykła aplikacja"?

Przez „zwykla” miałem na myśli taką która nie jest nigdzie hostowana a cała aplikacja znajduje się i jest uruchamiana na własnym sprzecie.

1

Aplikacja to aplikacja, (niemal) każdą można debugować.

2

Jeśli ktoś włamie się na serwer, to serwer automatycznie staje się "własnym sprzętem" :)

0

@kek a gdzie jest różnica? Aplikacja to aplikacja :) Jak się ktoś zaloguje na twój serwer to przecież niczym się to nie różni już od odpelania czegoś lokalnie na komputerze. Oczywiście inna sprawa, że śledzenie pamięci w jakimś systemie który ma duży load, to jest trudna sprawa trochę, niemniej jest to możliwe.

1

@kek: A po co podglądać zmienne w pamięci? Można podglądać "ruch sieciowy" wchodzący/wychodzący do/z aplikacji, czy "zawartość bazy".

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