[mac][3.1.2] Guide: Finding object list pointer + more! menu

User Tag List

Results 1 to 5 of 5
  1. #1
    Tanaris4's Avatar Contributor Authenticator enabled
    Reputation
    148
    Join Date
    Oct 2008
    Posts
    646
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [mac][3.1.2] Guide: Finding object list pointer + more!

    So for once I thought I would try to contribute :-) I've noticed there are a lot of similarities in b/t mac + windows - but this may be a tad bit different.

    Guide is located on PG forums since the majority of users are there (if you'd prefer I don't link to another forum + put it here let me know and I'll edit post, i didn't see a policy on this)

    Pocket Gnome Forums • View topic - Guide for finding offsets

    [mac][3.1.2] Guide: Finding object list pointer + more!
  2. #2
    jjaa's Avatar Contributor
    Reputation
    245
    Join Date
    Dec 2006
    Posts
    562
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Personally I don’t think that using a memory scanner to update your offsets is a very good way

    I will give you a quick example of how I would look for the OBJECT_LIST_PTR_STRUCT_ID, I am going to use 3.1.2 -> 3.1.1b but it would work fine updating. If there were no significant changes.

    First open up IDA jump to 0xAED328
    Bad news, its not referenced directly (Show by all of those ugly bytes :P)
    Code:
         __const_coal:00AED320 unk_AED320      db    0                 ; DATA XREF: __pointers:off_149A64Co
      __const_coal:00AED321                 db    0
      __const_coal:00AED322                 db    0
      __const_coal:00AED323                 db    0
      __const_coal:00AED324                 db  40h ; @
      __const_coal:00AED325                 db 0D3h ; +
      __const_coal:00AED326                 db 0AEh ; «
      __const_coal:00AED327                 db    0
      __const_coal:00AED328                 db 4
      __const_coal:00AED329                 db  0Eh
      __const_coal:00AED32A                 db  83h ; â
      __const_coal:00AED32B                 db    0
      __const_coal:00AED32C                 db  6Ch ; l
      __const_coal:00AED32D                 db  12h
    But we have unk_AED320, it must be an array or something :P
    Look at the cross references, we only have one. 0x0149A64C
    Jump to 0x0149A64C
    Code:
      __pointers:0149A64C off_149A64C     dd offset unk_AED320    ; DATA XREF: sub_A71E2+55r
      __pointers:0149A64C  
    Hmm it’s a pointer. So look at the cross references for 0x0149A64C.
    7 cross references. I’m not particularly fussed about what address (I just want to see some code using it) I want so I pick one randomly.

    Now I see:

    Code:
      __text:000AA09C                 mov     eax, ds:off_149A64C
      __text:000AA0A1                 add     eax, 8
      __text:000AA0A4                 mov     edx, [ebp+var_70]
      __text:000AA0A7                 mov     [edx+28h], eax
      __text:000AA0AA                 mov     dword ptr [ebx+10h], 0
      __text:000AA0B1                 mov     esi, edx
      __text:000AA0B3                 add     esi, 2Ch
      __text:000AA0B6                 mov     eax, [esi+8]
    I fire up an IDA Plug-in for generating patterns, (I forgot who made it, I got it from these forums but) if you don’t know how patterns work here a good explanation, http://www.mmowned.com/forums/wow-me...ml#post1319334. Simply put, it’s using wild-cards for bytes that will change. For example, “call 0xDEADBEEF”, 0xDEADBEEF and the bytes representing it will change each patch.

    Pattern generator tells me our pattern is,
    A1 ? ? ? ? 83 C0 08 8B 55 90 89 42 28 C7 43 10 00 00 00 00 89 D6 83 C6 2C

    The ? are obviously the wild cards.

    Open up the 3.1.1 binary and search for a sequence of bytes (Alt+B on PC). Search for our pattern. We get 0x000A6750 follow our variables 0x 0146E644 to 0xAC6F00. Now remember back at the start, we had the array starting at 00AED320 but we wanted the entry at 0xAED328, 8 bytes in.

    So 0x00AC6F00 + 8 = 00AC6F08

    0x00AC6F08 is our object list for 3.1.1b (can’t check but it should be correct).

    If you make a good pattern you rarely need to update it.
    Last edited by jjaa; 05-21-2009 at 01:07 AM.

  3. #3
    Tanaris4's Avatar Contributor Authenticator enabled
    Reputation
    148
    Join Date
    Oct 2008
    Posts
    646
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Excellent post - thanks so much for taking the time to find this - I really appreciate it.

    I assume to find other static values, (lets say where combo points are stored) - i'll want to search for that memory location and find functions that reference it - then create another byte signature?

    +rep

  4. #4
    jjaa's Avatar Contributor
    Reputation
    245
    Join Date
    Dec 2006
    Posts
    562
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Exactly, and the thing to remember is that not all of them will be in arrays some will be very easy to update.
    For example, PLAYER_NAME_STATIC(
    139FEC8) is referenced directly at

    Code:
     00191E41                 cmp     ds:byte_139FEC8, 0

  5. #5
    Tanaris4's Avatar Contributor Authenticator enabled
    Reputation
    148
    Join Date
    Oct 2008
    Posts
    646
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    The IDA plugin for others:

    http://www.mmowned.com/forums/wow-me...-patterns.html

    Thanks again for this post jja - VERY helpful

    Edit: It has expired - can anyone post the PatternMaker.plw file again?

Similar Threads

  1. Event guide - Game object IDs and more
    By Theokwo in forum WoW EMU Guides & Tutorials
    Replies: 14
    Last Post: 08-05-2014, 05:37 PM
  2. [wow][mac] Finding offsets - Object List Pointer
    By Tanaris4 in forum WoW Memory Editing
    Replies: 0
    Last Post: 12-14-2009, 12:23 AM
  3. [Mac][3.2] Finding the object list & reading object names
    By flukes1 in forum WoW Memory Editing
    Replies: 12
    Last Post: 09-22-2009, 09:47 PM
  4. [Wow][Mac][3.1.0] Finding g_currentConnection/object list
    By Tanaris4 in forum WoW Memory Editing
    Replies: 4
    Last Post: 04-16-2009, 09:44 PM
  5. [Guide] Finding Display IDs and Item/Object IDs,
    By iccy in forum World of Warcraft Guides
    Replies: 2
    Last Post: 10-02-2007, 11:37 PM
All times are GMT -5. The time now is 02:15 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search