Adresse von Base Pointer finden (BF2)

06/30/2012 18:24 cypresse#1
Hi,
Ich hab in Cheat-engine den Basepointer für eine Variable in Battlefield 2 gefunden.Die adresse lautet: BF2.exe+608F58
Was muss ich für das Bf2.exe einsetzten, damit ich die Adresse in AutoIT einlesen kann?
06/30/2012 19:20 MrSm!th#2
GetModuleHandle("Bf2.exe")
06/30/2012 19:37 cypresse#3
Da komm bei mir aber der Fehler: "Unknown function name"
ich habe NomadMemory per #include eingefügt, oder brauche ich da etwas anderes?
06/30/2012 19:48 .SkyneT.#4
_WinAPI_GetModuleHandle("Bf2.exe")

So heißts laut Google in AutoIt...
06/30/2012 22:01 Dr. Coxxy#5
oft ist das exe handle statisch und entspricht 0x400000
06/30/2012 22:07 cypresse#6
Mit _WinAPI_GetModuleHandle("Bf2.exe") kommt bei mir aber immer 0x00000000 raus.
06/30/2012 22:19 Dr. Coxxy#7
weil du das lokale getmodulehandle aufrufst.
deine autoit exe hat aber kein bf2.exe.

probier einfach 0x400000, guck ob du ein externes getmodulehandle für autoit findest, oder lass es, autoit ist dafür denkbar ungeeignet.
06/30/2012 22:58 cypresse#8
0x400000 funktioniert bei nicht.
Was meinst du mit externem getmodulehandle?
06/30/2012 23:06 MrSm!th#9
Es geht aber.

Im ProcessEnvironmentBlock ist eine LinkedList von allen geladenen Modulen, eher gesagt von einer Struktur, die Informationen über jene enthält (LDR_DATA_TABLE_ENTRY).
Dort steht die DllBase mit drin.

Den PEB findest du per NtQueryInformationProcess mit dem Flag PROCESS_BASIC_INFORMATION.
07/01/2012 10:22 cypresse#10
danke für deine Hilfe:D
Ich weiß allerdings nicht wie der Befehl genau aussehen muss, ich hab ihn jetzt einfach mal so geschrieben:
Code:
$aCall = DllCall("DllBase.dll", "int", "NtQueryInformationProcess", _
            "handle", $hProcess, _
            "dword", 0, _ ; ProcessBasicInformation
            "ptr", DllStructGetPtr($tPROCESS_BASIC_INFORMATION), _
            "dword", DllStructGetSize($tPROCESS_BASIC_INFORMATION), _
            "dword*", 0)
Weiß aber nicht welche dll ich am Anfang nehmen muss und was ich dann mit der $aCall Variable machen muss um den Handle von dem Prozess zu bekommen.
Bin auf eure Hilfe angewiesen
07/01/2012 11:40 Jeoni#11
Google (oder in dem Fall das MSDN) hilft dir: [Only registered and activated users can see links. Click Here To Register...]
Da sind alle Informationen enthalten, die du brauchst (Parameter; Returnwert; DLL, die die Funktion enthält).
Viel Spaß ;)
07/01/2012 20:39 MrSm!th#12
Alle NT API Funktionen benötigen die ntdll.dll.
Außerdem wirst du dich dann etwas über die Struktur des PEB informieren müssen, denn alleine mit dem ist es noch nicht getan, die Module Base auszulesen.