Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Modyfikacja pamięci
#1
Jakiś czas temu napisałem program, który musiałbym wstrzyknąć przez moduł ładujący do MOHAA, a to, co zrobiłbym, to zmienić numer wersji programu.   Teraz mam dll cgamex86.dll, którego używam, ładuję bezpośrednio do gry bez wtryskiwacza przez LoadLibrary przy użyciu typowej metody "case DLL_PROCESS_ATTACH:"   anywho, więc mam listę przesunięć, które zmodyfikowałem, i wiem, że są poprawne, ponieważ tak jak powiedziałem, działało to poprzez wtryskiwacz, i było to w porządku dzięki WriteProcessMemory.   Teraz próbowałem zmienić metodę wersji wewnętrznie, ponieważ doszedłem do wniosku, że już jestem w grze, powinienem móc wprowadzać poprawki w mojej bibliotece dll bez konieczności używania WPM, może jestem po prostu głupi, nie wiem. Każdy mój kod wygląda następująco:     Kod:   * (int *) 0x12345678 = versionIwant;   To nie zadziałało, ale skompilowało się dobrze, więc to, co zrobiłem, to próba użycia wpm:     Kod:   WriteMemory (0x12345678, versionIwant, 1);   WriteMemory jest częścią szablonu, który wygląda następująco:     Kod:   szablon <klasa T> void WriteMemory (unsigned long Offset, T Value, int Size) {unsigned long OldProtect; VirtualProtect ((void *) Offset, Rozmiar, PAGE_EXECUTE_READWRITE i OldProtect); WriteProcessMemory (GetCurrentProcess (), (void *) Offset i wartość, rozmiar, 0); VirtualProtect ((void *) Offset, Size, OldProtect i OldProtect); }   Anywho, to też nie działa, ponieważ gdy sprawdzam numery wersji w grze, nadal wyświetlają one domyślną wartość, nawet jeśli nadpisuję ją do niestandardowej wersji #.   Czy zamiast tego muszę użyć programu memset () lub czy istnieje inna opcja?
Reply
#2
Nie wiem dokładnie, jak to robisz. Używam MemoryProcessReader / Writer WriteProcessMemory (...) Sprawdź dokładnie MSDN, aby uzyskać dokładne informacje. Handle, Address (Void), BytesToWrite, SizeOf (BytesToWrite);
Reply
#3
Jaka jest wartość zwracana z WriteProcessMemory? Jeśli jest niezerowy, co oznacza, że najwyraźniej się powiódł, spróbuj znaleźć to, co pisze na adres, do którego próbujesz napisać, być może dowiesz się, jak ładuje numer wersji przy starcie, lub może został zamrożony lub przepisany po nazywa się pewna metoda? Jeśli WPM zwraca 0, być może strona, do której piszesz, nie ma uprawnień do zapisu, a jeśli nie, zmień jego uprawnienia za pomocą interfejsu API VirtualProtect. Ponadto, jeśli znajdujesz się w przestrzeni adresowej celów, to prawdopodobnie lepszym rozwiązaniem jest uzyskiwanie dostępu za pomocą wskaźników, to jest interfejsu API WPM, jednak możesz użyć WPM, aby sprawdzić, czy możesz nawet do niego napisać, sprawdzając jego wartość zwracaną. * Edytuj * Według WPM \ A Mam na myśli WriteProcessMemory
Reply
#4
Jeśli potrzebujesz więcej wyjaśnień, nie wahaj się zapytać. Wiem, że brakuje mi trochę opisu poniżej. Musisz zatrzymać się, by dać hakowi trochę czasu, aby napisać do celu (zanim zacznie się wykonywać), zamierzałem stworzyć scenę kodu i przeskoczyć do niej na EP, ale musielibyśmy ukraść bajty i to po prostu mylą cały proces. Więc wymyśliłem inny pomysł. Jeśli możesz zmienić EP w nagłówku PE, gdziekolwiek umieścisz poniższy kod assemblely, a następnie zastąpiłeś jmp OEP oryginalnym punktem wejścia, to powinno działać. Tak więc, aby zmienić EP, pobierz plugin ollydump (możesz po prostu ręcznie zmienić go w nagłówku PE i zrzucić na ollydbg, jeśli naprawdę chcesz) BTW: Nie musisz zachowywać rejestru eax, jeśli zmieniasz EP na początek tego kodu. Możesz również znaleźć całkiem sporej części wolnej przestrzeni w nagłówku PE (blisko końca). Kod: push push e-mail "Kernel32.dll" zadzwoń 5351B0 push "Sleep" push eax zadzwoń 5350D0 push 7D0; Daje to exe 2 sekundy na znalezienie i zapisanie do celu eax pop eax jmp OEP Jestem prawie pewien, że powyższy kod zestawu powinien działać, musisz znaleźć trochę miejsca na napisy i zastąpić cytaty tam, gdzie kiedykolwiek umieścisz je w pamięci. Jeśli ktokolwiek uzna powyższe zestawienie za nieprawidłowe, popraw mnie, ponieważ nie miałem okazji go wypróbować.
Reply




Users browsing this thread: 1 Guest(s)