[1.0.1 9558] Traversing the UI menu

User Tag List

Results 1 to 7 of 7
  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)

    [1.0.1 9558] Traversing the UI

    Has anyone been able to successfully iterate throughout the entire UI list? I found a great post here: http://www.ownedcore.com/forums/diab...ml#post2127790 ([Diablo 3][0.2.0.7200] Info Dump Thread)

    And believe I have found the appropriate offsets on OS X, but I'm not able to traverse through the entire list. I'll start to loop through and then hit invalid entries such as:

    Code:
    0: Root
    1: (null)
    2: Root.NormalLayer.BattleNetAchievements_main.LayoutRoot.OverlayContainer.SummaryTab.CategoryList
    3: Root.NormalLayer.BattleNetAchievements_main.LayoutRoot.OverlayContainer.SummaryTab.CategoryContent.AchievementIconList
    4: Root.NormalLayer.BattleNetAchievements_main.LayoutRoot.OverlayContainer.SummaryTab.SummaryContent.RecentSlot3
    5: Root.NormalLayer.BattleNetAchievements_main.LayoutRoot.OverlayContainer.PageHeader.AchievementScore.AchievementScoreValue
    6: Root.NormalLayer.BattleNetAchievements_main.LayoutRoot.OverlayContainer.FlatListRadioButtonGroup
    7: Root.NormalLayer.BattleNetAchievements_main.LayoutRoot.OverlayContainer.SummaryTab.SummaryContent
    8: Root.NormalLayer.BattleNetAchievements_main.LayoutRoot.OverlayContainer.Loading.Animation
    9: (null)
    10: Root.NormalLayer.BattleNetAchievements_main.LayoutRoot.OverlayContainer.SummaryTab.CategoryContent.Compare.MyProgress.PlayerName
    11: Root.NormalLayer.BattleNetAchievements_main.LayoutRoot.OverlayContainer.SummaryTab.CategoryContent.CompareTiled
    Or can anyone just point me toward a function I should reverse that iterates? Poking around in memory + trying to follow the above post isn't getting me anywhere :/

    Thanks in advance!
    https://tanaris4.com

    [1.0.1 9558] Traversing the UI
  2. #2
    eggsampler's Avatar Contributor
    Reputation
    187
    Join Date
    Jan 2008
    Posts
    109
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I dumped this from the login screen with d3advanced (so kinda cheated), Ubuntu Pastebin

  3. #3
    _Mike's Avatar Contributor
    Reputation
    310
    Join Date
    Apr 2008
    Posts
    531
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    pseudo-code, windows offsets
    Code:
    elementList = [[[[0x156C8CC] + 0x924]] + 8]
    listSize = [[[[0x156C8CC] + 0x924]] + 0x40]
    
    for(i = 0; i < listSize; ++i)
    {
        uiElement = [elementList + i * 4]
        while(uiElement)
        {
            // do something with uiElement..
    
            uiElement = [uiElement]; // parent / child / next in group?
        }
    }
    edit: or actually, I seem to be missing about 1400 elements according to the dump in #2.. Will have to take a closer look when I have some free time
    Last edited by _Mike; 05-25-2012 at 04:52 AM.

  4. #4
    st0724's Avatar Member
    Reputation
    2
    Join Date
    Feb 2007
    Posts
    60
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    You can find out all the UI stuff by looking at the handler function at 0xB96B10

  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)
    Originally Posted by st0724 View Post
    You can find out all the UI stuff by looking at the handler function at 0xB96B10
    which case?
    https://tanaris4.com

  6. #6
    BitHacker's Avatar Master Sergeant
    Reputation
    13
    Join Date
    May 2012
    Posts
    114
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Does this help at all?

    const void *__cdecl sub_A6A870() { const void *result; // eax@1 char v1; - Pastebin.com


    That gives you the main caller to all the UI id's and names ( sub_964C80 )

    int __cdecl sub_964C80(int a1, int a2)
    {
    int v2; // edx@1

    *(_DWORD *)a1 = sub_964B40(a2);
    *(_DWORD *)(a1 + 4) = v2;
    sub_DEC320(a1 + 8, a2, 512);
    return a1;
    }
    a1 = id
    a2 = name

    Looks like there is 1,589 Id's available.

    So, this is the first one? result = (const void *)sub_964C80(&v1, "Root.TopLayer.cutscene");

    pretty interesting whats on the bottom:
    result = (const void *)sub_964C80(&v1, "Root.TopLayer.cutscene");
    memcpy(&unk_164E320, result, 0x208u);
    return result;


    Seems like the size being created in memory is 0x208u for each entry...

    I'm taking a guess the u stands for unsigned?

    so decimal is 520 bytes?

    That function 964C80 breaks when I hit my INVENTORY and everything else .... :P

    This is another nice function:
    http://pastebin.com/irXxfT6R
    Last edited by BitHacker; 05-25-2012 at 02:50 PM.

  7. #7
    st0724's Avatar Member
    Reputation
    2
    Join Date
    Feb 2007
    Posts
    60
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Tanaris4 View Post
    which case?
    That is the input (mouse, keystrokes) handler for the ui elements. You can figure out how to, for example, simulate a click by looking at the case for key up or mouse button up.

    There's also a UI iterate function. You can find it by setting a memory breakpoint on any visible ui element pointer.
    Last edited by st0724; 05-25-2012 at 04:43 PM.

Similar Threads

  1. Traversing the UI Frame List - How do you access tables?
    By Tanaris4 in forum WoW Memory Editing
    Replies: 2
    Last Post: 09-04-2012, 11:15 PM
  2. [1.0.1 9558] OOP - How do I read the GUID?
    By Tanaris4 in forum Diablo 3 Memory Editing
    Replies: 9
    Last Post: 05-22-2012, 04:50 PM
  3. Block resurrection of the opposite faction in battle grounds
    By Matt in forum World of Warcraft Exploits
    Replies: 5
    Last Post: 06-08-2006, 03:19 AM
  4. Get on to where the Auction house people are!
    By janzi9 in forum World of Warcraft Exploits
    Replies: 0
    Last Post: 03-06-2006, 11:44 PM
  5. Ninja the Graveyard
    By Matt in forum World of Warcraft Guides
    Replies: 0
    Last Post: 03-03-2006, 11:51 PM
All times are GMT -5. The time now is 02:04 AM. 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