Page 1 of 3 123 LastLast
Results 1 to 15 of 45

Thread: 12/23/2003 Offsets

  1. #1
    Registered User MQSEQ2's Avatar
    Join Date
    Oct 2003
    Posts
    910

    12/23/2003 Offsets

    This will be for the latest offsets.

    We will post them here when we get them.

    [Memory Offsets]
    GroupAddr=7511280
    SpawnHeaderAddr=7518056
    ItemsAddr=7518060
    CharInfo=7518120
    TargetAddr=7518124
    GuildsAddr=7536204
    ZoneAddr=7115292

    [CharInfo Offsets]
    SpawnInfo=3456

    For those who would like to help in finding the Offsets please try using my tutorial on hoe to find them and post them in this thread and I will add them to this post as they roll in.
    Last edited by MQSEQ2; 12-24-2003 at 10:15 AM.

  2. #2
    Registered User MQSEQ2's Avatar
    Join Date
    Oct 2003
    Posts
    910
    I have posted the new SneakPreview 2.0 Server (SP) and the MySEQTester at http://www.dvolve.net/EQ/MySEQ.

    Once you use the Tutorial for finding the offsets you can plug them into the SP Ini and then launch the SP and use the Tester to verify you have the correct locations for PlayerInfo, SpawnInfo, GroundItems. I will be adding more tabs for Zone and other stuff we want to verify.

  3. #3
    Registered User
    Join Date
    Oct 2003
    Posts
    15
    No change since the 19th MySeq offset wise, though you did have CharAddr wrong on the 19th's thread.

    [Memory Offsets]
    GroupCountAddr=7511280
    GroupAddr=7511608
    SpawnHeaderAddr=7518056
    ItemsAddr=7518060
    CharAddr=7518112
    CharInfo=7518120
    TargetAddr=7518124
    GuildsAddr=7536204
    ZoneAddr=7894600
    Just because you're paranoid, it doesn't mean everyone isn't out to get you!

  4. #4
    Registered User
    Join Date
    Jan 2003
    Posts
    197
    Same problem with theese offsets tho.. ie. when you select another target than yourself, the "ring" will move towards your current target, and all con colors will change to the targets con level.

  5. #5
    Registered User MQSEQ2's Avatar
    Join Date
    Oct 2003
    Posts
    910
    Your ZoneAddr=7894600 is incorrect it should be 7115292.

    As for the Range circle it's the same issue as before so nothing new on that, I will have to start changing code now.

  6. #6
    Registered User MQSEQ2's Avatar
    Join Date
    Oct 2003
    Posts
    910
    I need folks to verify GroupAddr=7511608 (my GroupAddr=7511280 could be wrong since I'm not in front of the computer with 3 accounts going right now).

  7. #7
    Registered User MQSEQ2's Avatar
    Join Date
    Oct 2003
    Posts
    910
    Not to bad on hunting them down this roun. It took less than 30 mins to check them down. Now we just test them out for a couple hours then it's coding time.

  8. #8
    Registered User
    Join Date
    Jan 2003
    Posts
    197
    ZoneAddr=7894600

    Is the correct one (remember how i nagg you about the zoneaddr always at a HIGHER adress than the rest to work with both old world and LDoN?)

    As for the change target thingy problem.. It seems that whatever i put at CharAddr or CharInfo, have absolutely NO bearing. I can put whatever adress i like in there, but it makes absolutely no change.... Weird..

    Now.. I did change the TargetAddr=7518112 and at least the focus stay on me all the time, so the con colors are right.. The problem being of course that autotarget does not work at all tho..

  9. #9
    Registered User MQSEQ2's Avatar
    Join Date
    Oct 2003
    Posts
    910
    The Zone address you are talking about will work but the one I posted is the correct location for the Zone Structure + 64 bytes (that is the structure offset for the short name). I will check the code to verify that the Zone Short name is switched to lower case so it can open the file.

    As for the Char Address I will need to look at it. The TargetAddr=7518112 might be the correct location I just need to do test. I know when I was testing the TargetAddr=7518124 the EQ selection was working but the Range Circle was moving.

    I won't be able to work on it until later today but I will try to do what I can from here.
    Last edited by MQSEQ2; 12-23-2003 at 08:23 AM.

  10. #10
    Registered User
    Join Date
    Jan 2003
    Posts
    197
    Oki.. I been swapping and messing around with diff addresses, but i must also say that i am pretty clueless about how stuff works in real code..

    So.. i have some questions :

    1. I have a helluva lot stuff in my ini file.. What is currently needed by the 1.11 server? Do i need this :
    [SpawnInfo Offsets]
    NameOffset=1
    LastnameOffset=65
    XOffset=104
    YOffset=108
    ZOffset=112
    SpeedOffset=128
    HeadingOffset=132
    LinkdeadOffset=229
    LFGOffset=232
    EquipmentHeadOffset=272
    EquipmentChestOffset=276
    EquipmentArmsOffset=280
    EquipmentWristsOffset=284
    EquipmentHandsOffset=288
    EquipmentLegsOffset=292
    EquipmentFeetOffset=296
    EquipmentPrimaryOffset=300
    EquipmentSecondaryOffset=304
    NextOffset=316
    PrevOffset=328
    TypeOffset=364
    GenderOffset=374
    LevelOffset=372
    HideOffset=376
    ClassOffset=378
    SpawnIDOffset=384
    RaceOffset=392
    AFKOffset=404
    BodyTypeOffset=408
    HPCurrentOffset=412
    DeityOffset=424
    HPMaxOffset=428
    GuildIDOffset=432
    SpawnInfoEndOffset=436

    [GroundItem Offsets]
    PrevOffset=0
    NextOffset=4
    SpawnIDOffset=12
    ZOffset=32
    XOffset=36
    YOffset=40
    NameOffset=44
    GroundItemEndOffset=68

    [CharInfo Offsets]
    NameOffset=2
    LastnameOffset=66
    GenderOffset=136
    RaceOffset=140
    ClassOffset=144
    LevelOffset=152
    ExpOffset=156
    PracticePointsOffset=160
    ManaOffset=164
    BaseHPOffset=168
    StunnedOffset=172
    BaseSTROffset=176
    BaseSTAOffset=180
    BaseCHAOffset=184
    BaseDEXOffset=188
    BaseINTOffset=192
    BaseAGIOffset=196
    BaseWISOffset=200
    LanguagesOffset=204
    YOffset=2640
    XOffset=2644
    ZOffset=2648
    HeadingOffset=2652
    StandStateOffset=2656
    PlatOffset=2660
    GoldOffset=2664
    SilverOffset=2668
    CopperOffset=2672
    BankPlatOffset=2676
    BankGoldOffset=2680
    BankSilverOffset=2684
    BankCopperOffset=2688
    BankSharedPlatOffset=2708
    SkillOffset=2740
    HungerLevelOffset=3420
    ThirstLevelOffset=3424
    SpawnInfo=3452
    SpawnInfoOffset=3452
    STROffset=3584
    STAOffset=3588
    CHAOffset=3592
    DEXOffset=3596
    INTOffset=3600
    AGIOffset=3604
    WISOffset=3608
    SaveMagicOffset=3616
    SaveFireOffset=3620
    SaveColdOffset=3624
    SavePoisonOffset=3628
    SaveDiseaseOffset=3632
    CurrWeightOffset=3638
    DietyOffset=4884
    AAExpOffset=5364
    ServerNameOffset=8288
    CharInfoEndOffset=8328

    If not.. could you post a complete 1.11 ONLY ini? I know you are working on the 2.0 and all.. but to keep things as simple as possible without causing any more confusion than needed.. separate the 2.0 ini from the 1.11 ini for now? agree?

    2. It also seemed like the CharAddr had no bearing, but the CharInfo was the one used? although i think i read somewhere that it was CharAddr wich was used by 1.11 and CharInfo by 2.0? Please.. also here, remove any 2.0 spesific settings, and rather provide a SEPARATE ini for 2.0 please.

    3. I was of the illusion that the pointer to CharAddr/CharInfo was information for your character only, and the address to TargetAddr was for any targets you have selected.. But i might have misunderstood that, and that the client kinda decodes this information as it is being run through memory.. thus the "self-circle" changing, is mostly due to some structure changes in memory itself (a new myseq client is required).

    Think you have the time to think this over? Aint easy to follow your guide on howto find offsets, and have a shitload more of stuff in that ini file noone really knows what doing, other than the coder of the 2.0 server himself

    One step at a time..

  11. #11
    Registered User MQSEQ2's Avatar
    Join Date
    Oct 2003
    Posts
    910
    These are the item that Server 1.11 uses (straight from code):

    GetPrivateProfileString("Memory Offsets", "ZoneAddr", "0", buffer, 255, filename);
    EQADDR_SHORTZONE = SettingToVoidPtr(buffer);

    GetPrivateProfileString("Memory Offsets", "CharAddr", "0", buffer, 255, filename);
    EQADDR_CHAR = SettingToVoidPtr(buffer);

    GetPrivateProfileString("Memory Offsets", "SpawnHeaderAddr", "0", buffer, 255, filename);
    EQADDR_SPAWNLIST = SettingToVoidPtr(buffer);

    GetPrivateProfileString("Memory Offsets", "TargetAddr", "0", buffer, 255, filename);
    EQADDR_TARGET = SettingToVoidPtr(buffer);

    GetPrivateProfileString("Memory Offsets", "ItemsAddr", "0", buffer, 255, filename);
    EQADDR_ITEMS = SettingToVoidPtr(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "NameOffset", "0", buffer, 255, filename);
    NameOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "XOffset", "0", buffer, 255, filename);
    XOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "YOffset", "0", buffer, 255, filename);
    YOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "ZOffset", "0", buffer, 255, filename);
    ZOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "HeadingOffset", "0", buffer, 255, filename);
    HeadingOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "SpeedOffset", "0", buffer, 255, filename);
    SpeedOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "SpawnIDOffset", "0", buffer, 255, filename);
    SpawnIDOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "TypeOffset", "0", buffer, 255, filename);
    TypeOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "ClassOffset", "0", buffer, 255, filename);
    ClassOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "RaceOffset", "0", buffer, 255, filename);
    RaceOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "HideOffset", "0", buffer, 255, filename);
    HideOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "LastnameOffset", "0", buffer, 255, filename);
    LastnameOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "NextOffset", "0", buffer, 255, filename);
    NextOffset = SettingToInt(buffer);

    GetPrivateProfileString("SpawnInfo Offsets", "LevelOffset", "0", buffer, 255, filename);
    LevelOffset = SettingToInt(buffer);

    GetPrivateProfileString("GroundItem Offsets", "NameOffset", "0", buffer, 255, filename);
    GINameOffset = SettingToInt(buffer);

    GetPrivateProfileString("GroundItem Offsets", "XOffset", "0", buffer, 255, filename);
    GIXOffset = SettingToInt(buffer);

    GetPrivateProfileString("GroundItem Offsets", "YOffset", "0", buffer, 255, filename);
    GIYOffset = SettingToInt(buffer);

    GetPrivateProfileString("GroundItem Offsets", "ZOffset", "0", buffer, 255, filename);
    GIZOffset = SettingToInt(buffer);

    GetPrivateProfileString("GroundItem Offsets", "SpawnIDOffset", "0", buffer, 255, filename);
    GISpawnIDOffset = SettingToInt(buffer);

    GetPrivateProfileString("GroundItem Offsets", "NextOffset", "0", buffer, 255, filename);
    GINextOffset = SettingToInt(buffer);

    GetPrivateProfileString("Memory Offsets", "CharInfo", "0", buffer, 255, filename);
    EQADDR_CHARINFO = SettingToVoidPtr(buffer);

    GetPrivateProfileString("CharInfo Offsets", "SpawnInfo", "0", buffer, 255, filename);
    SpawnInfo = SettingToInt(buffer);

    =============================================

    As for the CharAddr/CharInfo you see the code:

    // Player Information

    int ptmp=0;
    if (ReadProcessMemory(eqprocess, EQADDR_CHARINFO, &ptmp, sizeof(int), &tmp) != 0) {
    ptmp+=SpawnInfo;
    ReadProcessMemory(eqprocess, (void*) (ptmp), &paddr, sizeof(int), &tmp);

    //if (ReadProcessMemory(eqprocess, EQADDR_CHAR, &paddr, sizeof(int), &tmp) != 0) {
    ReadProcessMemory(eqprocess, (void*)paddr, spbuf, LargestSpawnOffset, &tmp);

    The EQADDR_CHAR is never used (rem'd out) so the CharAddr in the Ini is not needed.


    ==============================================

    If you go thru the list above you will see which Ini settings are needed and which ones are not.


    The offsets under the the [CharInfo Offsets] has changed but we have to figure out where the data shifted to.

    You will notice above that the only setting needed for 1.x is:

    GetPrivateProfileString("CharInfo Offsets", "SpawnInfo", "0", buffer, 255, filename);
    SpawnInfo = SettingToInt(buffer);

    and based on this code:

    if (ReadProcessMemory(eqprocess, EQADDR_CHARINFO, &ptmp, sizeof(int), &tmp) != 0) {
    ptmp+=SpawnInfo;
    ReadProcessMemory(eqprocess, (void*) (ptmp), &paddr, sizeof(int), &tmp);

    The following CharAddr=7518112 address is probably correct but without knowing the Structure offset for SpawnInfo it's throwing us off some.

    I've been waiting for the servers to become stable since they keep dropping the servers every other hour.

    The rest of the Ini didn't change that I have seen at this time. If code changes are required I make the changes then supply a clean Ini for 1.x servers only since the 2.x Ini will be split for Client and Server.

  12. #12
    Registered User
    Join Date
    Jan 2003
    Posts
    197
    Thanx for the info

    As i said before, i am kinda clueless.. so i wonder if i have gotten this correct :

    If you take the charinfo adress of : 7518112 and then add the SpawnInfo offset of 3452, i should get 7521564 ($72c51c).. If i go to this address using winhack, am i then supposed to get some data that indicate another adress that jump to info about my character? Ie if addr $72c51c and the next bytes contains 68 56 10 07 , i should check what i have in (reverse) the address $07105668 ? and there i should be able to see what? My name or sumtin?

    I have the old eqgame.exe (unpatched) from before it got broken last i think (using eqemu server). I might be able to see if i can get myseq to work like it used to on a eqemu server, and see what is in that address there?

    Hehe.. just exploring diff stuff.. dont laugh if i am waaay of on this tho.. hehe

  13. #13
    Registered User MQSEQ2's Avatar
    Join Date
    Oct 2003
    Posts
    910
    This is how the server works Step by Step:

    if (ReadProcessMemory(eqprocess, EQADDR_CHARINFO, &ptmp, sizeof(int), &tmp) != 0) {

    This line is using the Address from the Ini to locate the static memory address and will read 4 bytes (int = 4 bytes) of memory that will be the pointer to the dynamic data (this will change we you run EQ). ptmp will contain the memory address of where to jump to next.

    ptmp+=SpawnInfo;

    This line is is saying start at memory location ptmp and add SpawnInfo (the number of bytes for the characterinfo structure offset)

    ReadProcessMemory(eqprocess, (void*) (ptmp), &paddr, sizeof(int), &tmp);

    This line is reading the the memory location (ptmp + SpawnInfo) to get the address for what we are looking for. paddr will contain the memory address of where to jump to next.

    ReadProcessMemory(eqprocess, (void*)paddr, spbuf, LargestSpawnOffset, &tmp);

    This line of code is reading the actual data we are looking for and will read LargestSpawnOffset bytes of memory. LargestSpawnOffset is based on the the amount of data you want to read in and it is set in the Ini and a routine will cycle throught the offsets bieng found to find the largest number. That's why in Server 2.x I use SpawnInfoEndOffset=436, this prevents the cyclying throught the list which should speed up the code.

    ZeroMemory(&sisend, sizeof(SPAWNINFO_SEND));
    if (assignSPAWNtoSEND(spbuf, &sisend))
    {
    sisend.flags = 253;
    data.push_back(sisend);
    }

    This set of code basically cleans the temp buffer and then copies the data into the structure that will be sent to the client. That fuction only sends a small subset of data (Server 2.x will send all the data). If successfully added to the structure then it will set the packet type to a player packet and then push it to the packet to the packet handler so it can be sent to the client.

    That's how you get the Player's info.

    When using WH and jumping around you should start to see the players info based on this structure:

    NameOffset=2
    LastnameOffset=66
    GenderOffset=136
    RaceOffset=140
    ClassOffset=144
    LevelOffset=152
    ExpOffset=156
    PracticePointsOffset=160
    ManaOffset=164
    BaseHPOffset=168
    StunnedOffset=172
    BaseSTROffset=176
    BaseSTAOffset=180
    BaseCHAOffset=184
    BaseDEXOffset=188
    BaseINTOffset=192
    BaseAGIOffset=196
    BaseWISOffset=200

    The offsets are how many bytes away from the main starting location.

  14. #14
    Registered User
    Join Date
    Jan 2003
    Posts
    197
    Well.. even tho the above explanation is probably very good, if i had some programming clues.. hehe

    But.. what i had, is the client from 25/11 and a EQEmu server to try it on, and thus i verified my theory.. (as i posted question about above).

    So.. If you would be kind to verify this for me :
    [CharInfo Offsets]
    SpawnInfo=738388

    And to those wanting a "clean" 1.11 ini file, here is my current (and as far as i know now is working with autoselect, and in LDoN zones as well)

    EDIT!!: Changed to the current offset/charinfo adress 12/23/03 :

    -- myseqserver.ini
    [Memory Offsets]
    SpawnHeaderAddr=7518056
    ItemsAddr=7518060
    CharInfo=7518120
    TargetAddr=7518124
    ZoneAddr=7894600

    [SpawnInfo Offsets]
    NameOffset=1
    LastnameOffset=65
    XOffset=104
    YOffset=108
    ZOffset=112
    SpeedOffset=128
    HeadingOffset=132
    NextOffset=316
    TypeOffset=364
    LevelOffset=372
    HideOffset=376
    ClassOffset=378
    SpawnIDOffset=384
    RaceOffset=392

    [GroundItem Offsets]
    NextOffset=4
    SpawnIDOffset=12
    ZOffset=32
    XOffset=36
    YOffset=40
    NameOffset=44

    [CharInfo Offsets]
    SpawnInfo=3456

    --

    And that is it. Pls.. Post verifications or problems if this aint working
    Last edited by CybMax; 12-23-2003 at 05:38 PM.

  15. #15
    Registered User MQSEQ2's Avatar
    Join Date
    Oct 2003
    Posts
    910
    I don't know if these are correct until later tonight.

    [Memory Offsets]
    CharInfo=7518112

    [CharInfo Offsets]
    SpawnInfo=738388

    first look SpawnInfo=738388 appears to be wrong. The offset should be in around 3452. Can you explain how and where you got that number?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

You may post new threads
You may post replies
You may post attachments
You may edit your posts
HTML code is Off
vB code is On
Smilies are On
[IMG] code is On