Czytanie własnej pamięci

0

Przechodząc do sprawy: Chodzi mi o program, który będzie czytać swoją pamięć, ale tylko kod, w sensie tylko sekcję .TEXT/.CODE w czasie wykonania. Dużo czytałem o tym na google, troche eksperymentowałem, ale nie wychodzi mi. Udało mi się odczytać informacje o sekcjach i ich pozycje w pamięci (ale nie wiem czy są one poprawne). Mam problem z ich odczytem.
Chodzi o to żeby program był w stanie odczytać swoją własną pamięć, rozpoznać która to kod a następnie ją gdzieś skopiować.
Wszelkie pomysły jak to zrobić lub kawałki kodu jakie mogą pomóc są mile widziane.

Halp,
logometr

0

Nie bawiłem się tym, ale skoro masz dane o sekcjach i pokryją się one z tym co pokazuje na przykład Lord PE dla Twojego procesu, to co za problem odczytać pamięć przez ReadProcessMemory dla procesu o PIDzie pobranym przez GetCurrentProcessId do jakiegoś bufora - tablicy czy nie wiem na przykład TMemoryStream (jeżeli piszesz pod VCL)? Jak wspominałem nie bawiłem się tak, więć może ktoś jeszcze coś lepszego tutaj Tobie doradzi. Ale skoro da się czytać i zapisywać bez problemów pamięć "obcego" procesu, to co za problem z własnym. Przykładowy kod dumpowania pamięci procesów do pliku dołaczyłem do tego posta. Nie jest to kod mojego autorstwa, ja go tylko lekko poprawiłem i tyle.

0

Dane z programu sprawdziłem z LordPE i wartości zgadzają się.
Program przerobiłem tak, żeby używał metody z kodu co podałeś.
Ale niestety, dalej otrzymuje wynik z ReadProcessMemory 0, czyli nie przeczytano ani jednego bajta. Wydaje mi się że wynika to z tego, że mimo że mam podane adresy sekcji, to nie odpowiadają one pozycji w pamięci. Wie ktoś może jaki jest wzór na wyliczenie adresu sekcji na podstawie pozycji sekcji (mam właściwie wszystko podane to co w LordPE + pare dodatków)?

Z góry dzięki.
No i dzięki też tobie, olesio za pomoc której już udzieliłeś.

0

Obliczanie takich rzeczy można pewnie znaleźć w różnych tutorialach zjadaczy crackersów czy reverserów. O ile pamiętam coś na ten temat było w ktorymś z odcinków serii "Reverse Craft" Gynvaela Coldwina. Można je znaleźć na Jego blogu - konkretnie tutaj są linki do odcinków: http://gynvael.coldwind.pl/?id=180 - najlepiej ściągnij i w wolnym czasie obejrzyj sobie wszystkie, ale o ile mnie pamięć nie myli takie rzeczy były poruszane raczej w odcinku trzecim "Pamięć, proces i PE", co sugerował by sam ten tytuł.

0

Są to klawisze z przypisanymi kodami.

Nie wydaje ci się że coś pomyliłeś? Bo mi się tak wydaje.
@olesio, zobaczę i powiem jak wyszło.

Po wysłuchaniu lekcji 3 udało mi się szczęśliwie napisać ten program.

Dzięki wielkie olesio!

Dla guglowiczów: Do VirtualAddress dodajemy ImageBase i mamy adres gdzie jest dana sekcja.

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