Ich denke, das Handle wurde von GetModuleHandle ist eigentlich die Basisadresse des gegebenen Moduls. Sie erhalten das Handle der EXE, indem Sie NULL übergeben.
Installieren Sie pydbg
Quelle: Ссылка
Inoffizielle Binärdateien hier: Ссылка
%Vor%Vielleicht möchten Sie sich PaiMei anschauen, obwohl es gerade nicht sehr aktiv ist Ссылка
Ich konnte attach () nicht verwenden und stattdessen laden. Pydbg hat viele Funktionen wie zB read_process_memory, write_process_memory etc.
Beachten Sie, dass Sie den Arbeitsspeicher nicht zufällig ändern können, da ein Betriebssystem den Speicher anderer Prozesse vor Ihrem Prozess schützt (geschützter Modus). Vor den x86-Prozessoren gab es einige, die es allen Prozessoren erlaubten, im Realmodus zu laufen, d. H. Den vollen Speicherzugriff für jedes Programm. Nicht bösartige Software liest / schreibt normalerweise (immer?) Den Speicher anderer Prozesse nicht.
Der HMDOULE-Wert von GetModuleHandle ist die Basisadresse des geladenen Moduls und ist wahrscheinlich die Adresse, die Sie zum Berechnen des Offsets benötigen.
Wenn nicht, ist diese Adresse der Anfang des Headers des Moduls (DLL / EXE), das mit dem Dienstprogramm dumpbin
angezeigt werden kann, das mit Visual Studio geliefert wird, oder Sie können es selbst mit Microsoft PE- und COFF-Spezifikation , um die AddressOfEntryPoint
und BaseOfCode
als Offsets von der Basisadresse zu bestimmen. Wenn die Basisadresse des Moduls nicht Ihren Anforderungen entspricht, ist eine dieser beiden Optionen eine weitere Option.
Beispiel:
%Vor% Wenn AddressOfEntryPoint
oder BaseOfCode
benötigt wird, müssen Sie ctypes
verwenden, um ReadProcessMemory
nach der PE-Spezifikation aufzurufen, um die Offsets zu finden, oder einfach dumpbin /headers solitaire.exe
, um die Offsets zu lernen.