Python - Wie bekomme ich die Start / Basisadresse eines Prozesses?

8

Wie bekomme ich die Start / Basisadresse eines Prozesses? Zum Beispiel Solitaire.exe (solitaire.exe + BAFA8)

%Vor%

Ich möchte eine Speicheradresse berechnen und benötige dafür die Basisadresse von solitaire.exe.

Hier ist ein Bild von dem, was ich meine:

    
Seppo 24.10.2012, 08:56
quelle

3 Antworten

2

Ich denke, das Handle wurde von GetModuleHandle ist eigentlich die Basisadresse des gegebenen Moduls. Sie erhalten das Handle der EXE, indem Sie NULL übergeben.

    
sashoalm 24.10.2012 09:01
quelle
1

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.

    
RParadox 24.10.2012 14:05
quelle
1

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.

    
Mark Tolonen 28.10.2012 02:07
quelle