Funktionsweise:
1. in CE Rechtsklick auf den Pointer und auf "Copy" klicken
2. in meinem Programm auf "Code generieren" klicken
3. In euer Scite gehen und einfügen
Hier ist der Source Code vom Programm:
Quote:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\..\Programme\AutoIt3\Ic ons\au3.ico
#AutoIt3Wrapper_outfile=..\Desktop\CE Pointer to AutoIt3.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=expo_botter
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <String.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1_1 = GUICreate("CE Pointer to AutoIt3", 218, 39, -1, -1)
$Button1 = GUICtrlCreateButton("Code generieren", 40, 8, 131, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Code()
EndSwitch
Sleep(10)
WEnd
Func Code()
Local $M_R_
Local $Clip_ = ClipGet()
Local $Ex2_
Local $ClipBoard
If StringInStr($Clip_,"<CheatTable>",1) Then
Local $Ex_ = _StringExplode($Clip_,"<Offset>",0)
Dim $Off_[1]
For $i = 1 To UBound($Ex_) - 1
$Ex2_ = _StringExplode($Ex_[$i],"<",0)
_ArrayAdd($Off_,$Ex2_[0])
Next
_ArrayReverse($Off_)
_ArrayDelete($Off_,UBound($Off_))
$Ex_ = _StringExplode($Clip_,"<InterpretableAddress>",0)
If UBound($Ex_) = 3 Then
$Ex2_ = _StringExplode($Ex_[2],"<",0)
$Ex_ = _StringExplode($Ex2_[0],"+",0)
Else
$Ex2_ = _StringExplode($Ex_[1],"<",0)
$Ex_ = _StringExplode($Ex2_[0],"+",0)
EndIf
_ArrayInsert($Off_,0,$Ex_[1])
$ClipBoard &= "Func _GetPointerAddress()" & @CRLF & @TAB & 'Local $M_R_,$Open_Process_ = _MemoryOpen(ProcessExists("' & $Ex_[0] & '"))' & @CRLF & @TAB & '$M_R_ = _MemoryModuleGetBaseAddress(ProcessExists("' & $Ex_[0] & '"),"'
$ClipBoard &= $Ex_[0] & '")' & @CRLF & @TAB & '$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("' & $Off_[0] & '"),$Open_Process_),8)'
For $i = 1 To UBound($Off_) - 2
$ClipBoard &=@CRLF & @TAB & '$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("' & $Off_[$i] & '"),$Open_Process_),8)'
Next
$ClipBoard &=@CRLF & @TAB & 'Return "0x" & Hex($M_R_ + Dec("' & $Off_[UBound($Off_) - 1] & '"),8)' & @CRLF & "EndFunc"
ClipPut($ClipBoard)
MsgBox(0,"","generierter Source-Code ins ClipBoard getan")
Else
MsgBox(16,"","Es ist kein Cheat Table im ClipBoard")
EndIf
EndFunc
und so würde der Code aussehen (der Pointer ist nur ausgedacht)
Quote:
Func _GetPointerAddress()
Local $M_R_,$Open_Process_ = _MemoryOpen(ProcessExists("TLoader.exe"))
$M_R_ = _MemoryModuleGetBaseAddress(ProcessExists("TLoader .exe"),"TLoader.exe")
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("26767c"),$Open_Process_),8)
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("0010"),$Open_Process_),8)
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("0FEF"),$Open_Process_),8)
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("4564564"),$Open_Process_),8)
Return "0x" & Hex($M_R_ + Dec("0120"),8)
EndFunc
Ihr braucht nur NomadMemory.au3 und diese Funktion (die theoretisch bei euch noch nicht mit drin sein dürfte)
Quote:
Func _MemoryModuleGetBaseAddress($iPID, $sModule)
If Not ProcessExists($iPID) Then Return SetError(1, 0, 0)
If Not IsString($sModule) Then Return SetError(2, 0, 0)
Local $PSAPI = DllOpen("psapi.dll")
Local $hProcess
Local $PERMISSION = BitOR(0x0002, 0x0400, 0x0008, 0x0010, 0x0020)
If $iPID > 0 Then
Local $hProcess = DllCall("kernel32.dll", "ptr", "OpenProcess", "dword", $PERMISSION, "int", 0, "dword", $iPID)
If $hProcess[0] Then
$hProcess = $hProcess[0]
EndIf
EndIf
Local $Modules = DllStructCreate("ptr[1024]")
Local $aCall = DllCall($PSAPI, "int", "EnumProcessModules", "ptr", $hProcess, "ptr", DllStructGetPtr($Modules), "dword", DllStructGetSize($Modules), "dword*", 0)
If $aCall[4] > 0 Then
Local $iModnum = $aCall[4] / 4
Local $aTemp
For $i = 1 To $iModnum
$aTemp = DllCall($PSAPI, "dword", "GetModuleBaseNameW", "ptr", $hProcess, "ptr", Ptr(DllStructGetData($Modules, 1, $i)), "wstr", "", "dword", 260)
If $aTemp[3] = $sModule Then
DllClose($PSAPI)
Return Ptr(DllStructGetData($Modules, 1, $i))
EndIf
Next
EndIf
DllClose($PSAPI)
Return SetError(-1, 0, 0)
EndFunc
Wenn euch das Programm was genützt hat drückt den THANKS-BUTTON