Parsing Entities menu

User Tag List

Results 1 to 3 of 3
  1. #1
    DrGonzo's Avatar Contributor
    Reputation
    144
    Join Date
    Jun 2009
    Posts
    132
    Thanks G/R
    0/59
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Parsing Entities

    To parse the list of entities (Using IDA, with GameClient 1.20130416a.21):

    Find the string "gpMainEntityList[iMyIndex]) == ((void *)0". Jump to the reference in code and you'll find this (scrolling up a couple of lines):

    Code:
    .text:006E16A9                 cmp     dword_26320E0[edi*4], 0  //gpMainEntityList
    .text:006E16B1                 jz      short loc_6E16D3
    .text:006E16B3                 push    177h            ; Value
    .text:006E16B8                 push    offset asc_1C4F6D4 ; "c:\\src\\CrossRoads\\Common\\Entity\\EntityS"...
    .text:006E16BD                 push    0               ; char
    .text:006E16BF                 push    0               ; int
    .text:006E16C1                 push    offset aGpmainentityli ; "(gpMainEntityList[iMyIndex]) == ((void "...   //string reference
    So gpMainEntityList = dword_26320E0 (not rebased). This is an array of pointers to entities. You can iterate by checking each and ignoring null pointers. This array has a max index of 10240.

    [pEntity+0x1b0] seems to point to a movement struct.
    [[pEntity+0x1b0]+0x16c] = x
    [[pEntity+0x1b0]+0x170] = y
    [[pEntity+0x1b0]+0x174] = z
    Last edited by DrGonzo; 05-13-2013 at 11:39 AM.

    Parsing Entities
  2. #2
    DrGonzo's Avatar Contributor
    Reputation
    144
    Join Date
    Jun 2009
    Posts
    132
    Thanks G/R
    0/59
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    The game is written in C which makes it easy to reverse. Entity class functions (equivalent) are laid out logically. You can find them by searching for string references such as:

    Code:
    EntTimeSinceDamagedInDirection
    EntIsVisible
    EntIsMyTargetInLoS
    EntIsAlive
    EntGetVelocity
    EntGetAggro
    EntGetIsFriend
    EntGetIsFoe
    EntGetIsFactionFoe
    EntGetDistanceFromPointAsString
    EntGetDistanceFromPoint
    Pick a function like "EntIsVisible", go to the string in IDA then jump to the reference to that string. You'll get something like this (scroll up a couple lines):

    Code:
    .data:02235354                 dd offset sub_987160
    .data:02235358                 db    0
    .data:02235359                 db    0
    .data:0223535A                 db    0
    .data:0223535B                 db    0
    .data:0223535C                 dd offset aEntisvisible ; "EntIsVisible"
    The function address is referenced a couple of lines before the function name.
    Last edited by DrGonzo; 05-13-2013 at 11:39 AM.

  3. #3
    DrGonzo's Avatar Contributor
    Reputation
    144
    Join Date
    Jun 2009
    Posts
    132
    Thanks G/R
    0/59
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Reserving for more info.

Similar Threads

  1. Parsing the Entity List ~
    By ndcx in forum GW2 Memory Editing
    Replies: 14
    Last Post: 10-22-2012, 08:34 AM
  2. Pulling Entities from memory
    By suicidity in forum MMO Exploits|Hacks
    Replies: 20
    Last Post: 01-29-2009, 11:40 AM
  3. String parsing
    By Siretu in forum Programming
    Replies: 0
    Last Post: 11-07-2008, 04:21 PM
  4. Replies: 8
    Last Post: 07-10-2008, 02:45 PM
All times are GMT -5. The time now is 09:29 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