[C#][Copy/Pasta] Out of process DBC reading menu

User Tag List

Page 2 of 4 FirstFirst 1234 LastLast
Results 16 to 30 of 52
  1. #16
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1358
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by amadmonk View Post
    And don't forget teh proxiez!
    And running them in ring0.

    [C#][Copy/Pasta] Out of process DBC reading
  2. #17
    SinnerG's Avatar Member
    Reputation
    6
    Join Date
    Aug 2006
    Posts
    78
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    for (uint tableBase = CLIENT_DB_REGISTER_BASE; Process.Reader.ReadByte(tableBase) != 0xC3;
    tableBase += 0x11)
    {
    var index = Process.Reader.ReadUInt32(tableBase + 1);
    var tablePtr = Process.Reader.ReadUInt32(tableBase + 0xB) + 0x18; // 0x18
    Tables.Add((ClientDb)index, new DbTable(process, tablePtr));
    }
    Are the offsets defined in here still valid (I updated CLIENT_DB_REGISTER_BASE to 0x005C8E80)

    I get what seems to be a correct number of 'tables' but for example the DB_Map 'table' has 1million+ rows according to the struct ;p

    Any ideas?

  3. #18
    miceiken's Avatar Contributor Authenticator enabled
    Reputation
    209
    Join Date
    Dec 2007
    Posts
    401
    Thanks G/R
    7/9
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks, I'll start fooling around with it even though I'm pretty sure I'll end up pulling my hair (or whining at you!)

  4. #19
    leather's Avatar Member
    Reputation
    1
    Join Date
    Jun 2007
    Posts
    19
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    nice work.
    I want to know is there any information about the StringTable in the struct 'WoWClientDb'.For example the Item.DBC,how can i find the itemname by the itemid from StringTable.

  5. #20
    SinnerG's Avatar Member
    Reputation
    6
    Join Date
    Aug 2006
    Posts
    78
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Is this working for anyone then? (Got modified offsets?)

    I think that I'm just going to make a DBC reader :P

  6. #21
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Updated the code. It now works for packed DBCs. (Spell.dbc, and a few others)

    Keep in mind; if you use GetLocalizedRow, then you can't use Row.GetField. I'm too lazy to add the extra memory handlers to switch between reading from your local address space, to WoW's.

    Feel free to add it though.

  7. #22
    miceiken's Avatar Contributor Authenticator enabled
    Reputation
    209
    Join Date
    Dec 2007
    Posts
    401
    Thanks G/R
    7/9
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Is the offset WOW_USE_SPELL_UNPACK in the Info Dump Thread? I have searched for both 'spell' and 'unpack' but with no success.

  8. #23
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by miceiken View Post
    Is the offset WOW_USE_SPELL_UNPACK in the Info Dump Thread? I have searched for both 'spell' and 'unpack' but with no success.
    Check the ClientDb__GetLocalizedRow func. It's the first 'call' to another func.

    One simply does a memcpy, the other does the unpacking.

  9. #24
    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)
    @Apoc or others-

    Have you been able to successfully read Spell = 0x00000194, // 0x00A751FC
    out of this? I've been struggling (struct size is 0x69 for me)
    https://tanaris4.com

  10. #25
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Tanaris4 View Post
    @Apoc or others-

    Have you been able to successfully read Spell = 0x00000194, // 0x00A751FC
    out of this? I've been struggling (struct size is 0x69 for me)
    The Spell.dbc struct has changed.

    The cut out 24 bytes of data somewhere in it.

  11. #26
    miceiken's Avatar Contributor Authenticator enabled
    Reputation
    209
    Join Date
    Dec 2007
    Posts
    401
    Thanks G/R
    7/9
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Does anyone care to share the updated Spell.dbc struct?
    Neither Spell.dbc - Source Peek Wiki nor Spell.dbc - WoW.Dev Wiki is updated.

  12. #27
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by miceiken View Post
    Does anyone care to share the updated Spell.dbc struct?
    Neither Spell.dbc - Source Peek Wiki nor Spell.dbc - WoW.Dev Wiki is updated.
    I haven't extensively checked where they removed the 24 bytes. So I just cut 24 bytes out of the giant effects entries. The rest seems to work fine. (At least, the stuff we use does.)

    I don't have the time to re-reverse the struct and figure it out.

  13. #28
    SinnerG's Avatar Member
    Reputation
    6
    Join Date
    Aug 2006
    Posts
    78
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by miceiken View Post
    Does anyone care to share the updated Spell.dbc struct?
    Neither Spell.dbc - Source Peek Wiki nor Spell.dbc - WoW.Dev Wiki is updated.
    No (or few use) for now : Once MaNGOS (or any other wow emu out there) is updated to 3.3.3, check their source code

    I created my own DBC reader 'semi-compatible' with the MaNGOS 'format':

    It reads the DBC files itself though (not from memory)

    For spell.dbc for 3.3.2 it was (the format):

    Code:
    public const string Spell =            "@iiiiiiiiiixixixiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffffffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiixxxxxxx";
    Where @ is the spell id, i an integer, x is ignored, f a float, s a string

  14. #29
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'm well aware of the 'old' format.

    It's the new one that we need

    For instance: here's the 'current' one we use in Onyx. (With the 24 bytes of 'extra' data commented out)

    Code:
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public struct SpellEntry
        {
            private const int MAX_EFFECT_INDEX = 3;
            public uint Id;
            public uint Category;
            public uint Dispel;
            public uint Mechanic;
            public uint Attributes;
            public uint AttributesEx;
            public uint AttributesEx2;
            public uint AttributesEx3;
            public uint AttributesEx4;
            public uint AttributesEx5;
            public uint AttributesEx6;
            public uint AttributesEx7;
            public uint Stances;
            public uint unk_320_2;
            public uint StancesNot;
            public uint unk_320_3;
            public uint Targets;
            public uint TargetCreatureType;
            public uint RequiresSpellFocus;
            public uint FacingCasterFlags;
            public uint CasterAuraState;
            public uint TargetAuraState;
            public uint CasterAuraStateNot;
            public uint TargetAuraStateNot;
            public uint casterAuraSpell;
            public uint targetAuraSpell;
            public uint excludeCasterAuraSpell;
            public uint excludeTargetAuraSpell;
            public uint CastingTimeIndex;
            public uint RecoveryTime;
            public uint CategoryRecoveryTime;
            public uint InterruptFlags;
            public uint AuraInterruptFlags;
            public uint ChannelInterruptFlags;
            public uint procFlags;
            public uint procChance;
            public uint procCharges;
            public uint maxLevel;
            public uint baseLevel;
            public uint spellLevel;
            public uint DurationIndex;
            public uint powerType;
            public uint manaCost;
            public uint manaCostPerlevel;
            public uint manaPerSecond;
            public uint manaPerSecondPerLevel;
            public uint rangeIndex;
            public float speed;
            public uint modalNextSpell;
            public uint StackAmount;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.U4)]
            public uint[] Totem;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I4)]
            public int[] Reagent;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.U4)]
            public uint[] ReagentCount;
            public int EquippedItemClass;
            public int EquippedItemSubClassMask;
            public int EquippedItemInventoryTypeMask;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] Effect;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.I4)]
            public int[] EffectDieSides;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.I4)]
            public int[] EffectBaseDice;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.R4)]
            public float[] EffectDicePerLevel;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.R4)]
            public float[] EffectRealPointsPerLevel;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.I4)]
            public int[] EffectBasePoints;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] EffectMechanic;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] EffectImplicitTargetA;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] EffectImplicitTargetB;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] EffectRadiusIndex;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] EffectApplyAuraName;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] EffectAmplitude;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.R4)]
            public float[] EffectMultipleValue;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] EffectChainTarget;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] EffectItemType;
            //[MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.I4)]
            //public int[] EffectMiscValue;
            //[MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.I4)]
            //public int[] EffectMiscValueB;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.U4)]
            public uint[] EffectTriggerSpell;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.R4)]
            public float[] EffectPointsPerComboPoint;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX)]
            public Flag96[] EffectSpellClassMask;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.U4)]
            public uint[] SpellVisual;
            public uint SpellIconID;
            public uint activeIconID;
            public uint spellPriority;
            [MarshalAs(UnmanagedType.LPStr)]
            public string SpellName;
            [MarshalAs(UnmanagedType.LPStr)]
            public string Rank;
            [MarshalAs(UnmanagedType.LPStr)]
            public string Description;
            [MarshalAs(UnmanagedType.LPStr)]
            public string ToolTip;
            public uint ManaCostPercentage;
            public uint StartRecoveryCategory;
            public uint StartRecoveryTime;
            public uint MaxTargetLevel;
            public uint SpellFamilyName;
            public Flag96 SpellFamilyFlags;
            public uint MaxAffectedTargets;
            public uint DmgClass;
            public uint PreventionType;
            public uint StanceBarOrder;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.R4)]
            public float[] DmgMultiplier;
            public uint MinFactionId;
            public uint MinReputation;
            public uint RequiredAuraVision;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.U4)]
            public uint[] TotemCategory;
            public int AreaGroupId;
            public int SchoolMask;
            public uint runeCostID;
            public uint spellMissileID;
            public uint PowerDisplayId;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.R4)]
            public float[] unk_320_4;
            public uint spellDescriptionVariableID;
            public uint SpellDifficultyId;
        }
    It's not 'perfect' or complete, but it gives us all the info we need.

  15. #30
    TOM_RUS's Avatar Legendary
    Reputation
    914
    Join Date
    May 2008
    Posts
    699
    Thanks G/R
    0/52
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Code:
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.I4)]
            public int[] EffectBaseDice;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.R4)]
            public float[] EffectDicePerLevel;
    were removed in 3.3.3 patch, but you commented out
    Code:
            //[MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.I4)]
            //public int[] EffectMiscValue;
            //[MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_EFFECT_INDEX, ArraySubType = UnmanagedType.I4)]
            //public int[] EffectMiscValueB;
    for some reason...

Page 2 of 4 FirstFirst 1234 LastLast

Similar Threads

  1. Read Chat messages out-of-process
    By kajko in forum WoW Memory Editing
    Replies: 2
    Last Post: 05-06-2011, 10:55 AM
  2. Replies: 47
    Last Post: 03-09-2010, 11:25 AM
  3. [mac][3.3.2] Client DB - Out of Process Reading
    By Tanaris4 in forum WoW Memory Editing
    Replies: 18
    Last Post: 03-02-2010, 05:14 PM
  4. Reading Chat Out-of-Process
    By RiseAndShine in forum WoW Memory Editing
    Replies: 9
    Last Post: 06-06-2009, 02:10 AM
  5. Can you read player names out of process?
    By sweeper18 in forum WoW Memory Editing
    Replies: 10
    Last Post: 07-06-2008, 08:54 PM
All times are GMT -5. The time now is 03:03 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search