WoW Offsets 4.0.1

10/14/2010 20:01 mickol#1
Hallo

Hat schon wer die neuen Offsets, die ich bisher gefunden habe scheinen nicht zu funktionieren und da ich mich leider mit dem revers engineering noch nicht richtig anfreunden konnte komm ich sonst nicht weiter, wäre einer so nett und würde hier ein paar Offsets wie Playerbase, usw posten?

Danke schon mal
10/14/2010 20:22 Bl@ze!#2
Sie funktionieren nicht, da Blizzard ASLR aktiviert hat.

Schau mal hier: [Only registered and activated users can see links. Click Here To Register...]
10/14/2010 20:40 mickol#3
och ne, was den das wieder, ich schau mal ob ich damit was anfangen kann. Hab mir das schon gedacht das die was ändern werden :(
10/14/2010 21:42 mickol#4
hab hier was gefunden (ist nicht von mir), könnte das die funktion sein die ich benötige, leider hab ich nicht wirklilch verstanden was diese macht, woher bekomm ich die $WowPid am anfang?

Code:
$WowBase = _MemoryModuleGetBaseAddress($WowPid,"wow.exe")
$ObjectManager = Read(Read($WowBase+$ClientConnection)+$CurrMgrOffset) ; ObjectManager
$CurrentObject = Read($ObjectManager+$FirstObjectOffset) ; First Object

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")

    ;Get Process Handle
    Local   $hProcess
    Local   $PERMISSION = BitOR(0x0002, 0x0400, 0x0008, 0x0010, 0x0020) ; CREATE_THREAD, QUERY_INFORMATION, VM_OPERATION, VM_READ, VM_WRITE

    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

    ;EnumProcessModules
    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
10/14/2010 21:49 Pexus#5
Quote:
Originally Posted by mickol View Post
woher bekomm ich die $WowPid am anfang?
Die wird von "_MemoryModuleGetBaseAddress" definiert.

Edit: Nein, doch nicht. Verguckt. $wowpid dürfte die ProzessID sein. Liegt zumindest nahe...

Wo hast du den Coder her?

Edit2: Damit kannste die Pid auslesen: [Only registered and activated users can see links. Click Here To Register...]
Aber da fehlen noch ien paar mehr variablen
10/14/2010 22:04 mickol#6
jo ist die processor id, habs es mit folgemdem Code rausbekommen!
Code:
$test = ProcessList("Wow.exe")
$WowPid= $test[1][1]
10/14/2010 22:20 mickol#7
das ist genau die funktion mit der man das ASLR umgehen kann, meine namen kann ich schon mal auslesen, ich test mal weiter :)
10/14/2010 22:23 Bl@ze!#8
Ne du "umgehst" es nicht. du benutzt nur deine adressen richtig ;)
10/14/2010 22:36 mickol#9
was ich aber noch nicht ganz verstanden habe, wann muss ich diese $wowbase nun immer dazu rechnen?
10/14/2010 22:40 Pexus#10
Kannst du mir mal die includes geben?
Du antwortest nicht auf meine PM.
10/14/2010 22:46 Bl@ze!#11
Quote:
Originally Posted by mickol View Post
was ich aber noch nicht ganz verstanden habe, wann muss ich diese $wowbase nun immer dazu rechnen?
--> Address space layout randomization - Wikipedia, the free encyclopedia
Les dir das mal durch, dann sollte dir das ganze klarer werden.
10/14/2010 22:51 mickol#12
Quote:
Originally Posted by Pexus View Post
Kannst du mir mal die includes geben?
Du antwortest nicht auf meine PM.
hab dir den link gesendet!
10/14/2010 23:07 Pexus#13
Quote:
Originally Posted by mickol View Post
hab dir den link gesendet!
Danke ;)
10/14/2010 23:23 Ende!#14
[Only registered and activated users can see links. Click Here To Register...]

Mit der Funktion habt ihr's noch einfacher, einfach callen, euch den Rükgabewert in einer Variable speichern und dann alle Offsets einfach dazurechnen lassen. Hab ich gestern für jonny's WoWftIstDerKerlHin geschrieben und will sie euch nicht vorenthalten :)

Für die Leute, die sie kopieren wollen - geht bei dem Pastebin ja eher nicht so gut.
10/15/2010 00:00 mickol#15
danke für die verbesster routine, aber ich raffe es nicht wirklich, ich möchte mir die playerbase ausgeben lassen, anbei folgender Code:

Code:
const $PlayerBase = 0x00B366D0
const $PlayerBaseOffset1 = 0x34
const $PlayerBaseOffset2 = 0x24

Global $hWnd = WinGetHandle("World of Warcraft")
Global $hProcess = _BMOpenProcess($hWnd, False)
Global $WowBase = GetWoWBaseAddress()

msgbox(0,"test",_getpBase($hProcess,$WowBase))


Func _getpBase($hProcess1,$base) ; ok
$ptr1 = _BMReadMemory($hProcess1, $base + $PlayerBase, "ptr")
msgbox(0,"1",$ptr1)
$ptr2 = _BMReadMemory($hProcess1, $ptr1 + $PlayerBaseOffset1, "ptr")
msgbox(0,"2",$ptr2)
$ptr3 = _BMReadMemory($hProcess1, $ptr2 + $PlayerBaseOffset2, "ptr")
msgbox(0,"3",$ptr3)
return _BMReadMemory($hProcess1, $ptr2 + $PlayerBaseOffset2, "ptr")
EndFunc
leider kommt bei msgbox(test) immer ein "0" zurück und auch schon bei msgbox "ptr2" :(, kann mir wer sagen was ich da falsch mache, hab schon überall diese $base angehängt, usw.