IDC script to rename function accord to FearAndLawyering dumps.
All offset is relative (rebase 0x1000 in IDA).Functions.zip
//Edited ma post
Last edited by moritzmdm; 11-30-2011 at 12:38 PM.
edit -> segments -> anything with rebase :P
has someone the pointer for GlobalCooldown the old one was 0xD3F5AC? thx for help
woah thanks^^ how did you find that one, took me ages with no luck, though seemed to be an easy one.
IDA + CE
Find the string address in CE, "Find out what writes to this address", back-trace it to a static address in IDA
Edited Script to Dump/Label Databases. Thx to TOM_RUS for the script and BobbySing (some functions and the idea to dump als #defines)
To make life easyer it Dumps the Databases as #define macros and adds a #define on Top, where you can insert your Function/variable that holds the baseoffset (NULL) by default.
At the Start of main() you can set some variables to customize the output:
The Dump gets saved in /IDA/Output, so make sure the directory exists.Code:sPrefix = "g_DB_"; // Prefix of the Databases dumped and labeled sClassName = "(CClientDB*)"; // Classname to apply to the #define macros - leave empty if you just need the offsets bLabel = 0; // 0 = Dump only 1 = Dump + LabelDatabases in IDA sPath = GetTargetPath() + "Database_Enum.h";
IDC Script:
Sample Output:Code:#include <ida.idc> /************************************************************************ Desc: Label and Dump each database with an appropriate name and struct Author: kynox Modified for Cataclysm by TOM_RUS Modified to Dump Databases by BoredEvil Credits To: Bobbysing GetWoWVersionString(), static ExtractPath( sPath ),static GetTargetPath() Website: http://www.gamedeception.net *************************************************************************/ static GetWoWVersionString() { auto sVersion, sBuild, sDate; sVersion = FindBinary( INF_BASEADDR, SEARCH_DOWN, "\"=> WoW Version %s (%s) %s\"" ); if( sVersion == BADADDR ) { Message( "Version format string not found" ); return 0; } sVersion = DfirstB( sVersion ); if( sVersion == BADADDR ) { Message( "Version string unreferences" ); return 0; } sVersion = PrevHead( sVersion, 0 ); sBuild = PrevHead( sVersion, 0 ); sDate = PrevHead( sBuild, 0 ); sVersion = GetOperandValue( sVersion, 0 ); sBuild = GetOperandValue( sBuild, 0 ); sDate = GetOperandValue( sDate, 0 ); sVersion = GetString( sVersion, -1, ASCSTR_C ); sBuild = GetString( sBuild, -1, ASCSTR_C ); sDate = GetString( sDate, -1, ASCSTR_C ); return form( "Version: %s Build number: %s Build date: %s\n", sVersion, sBuild, sDate ); } static ExtractPath( sPath ) { auto dwIndex; for( dwIndex = strlen( sPath ); strstr( substr( sPath, dwIndex, -1 ), "\\" ); dwIndex-- ); return substr( sPath, 0, dwIndex + 1 ); } static GetTargetPath() { return ExtractPath( GetIdbPath() ) + "IDC\\Output\\"; } static WoWDb_GetName( dbBase ) { auto dbName; // mov eax, offset aDbfilesclientA ; "DBFilesClient\\Achievement.dbc" dbName = GetString( Dword(dbBase), -1, ASCSTR_C ); //Message("%s", dbName); // Return the the token after \ and before . return substr( dbName, strstr( dbName, "\\" ) + 1, -5 ); } static BuildStruct() { // struct size changed, need figure out what was removed.... auto id; id = AddStrucEx(-1,"WoWClientDB",0); AddStrucMember(id, "funcTable", 0X00, 0x20500400, 0X0, 4, 0XFFFFFFFF, 0X0, 0x000002); AddStrucMember(id, "numRows", 0X04, 0x20000400, -1, 4); AddStrucMember(id, "maxIndex", 0X08, 0x20000400, -1, 4); AddStrucMember(id, "minIndex", 0X0C, 0x20000400, -1, 4); AddStrucMember(id, "stringTable", 0X10, 0x20000400, -1, 4); AddStrucMember(id, "FirstRow", 0X14, 0x20000400, -1, 4); AddStrucMember(id, "Rows", 0X18, 0x25500400, 0XFFFFFFFF, 4, 0XFFFFFFFF, 0X0, 0x000002); return id; } static StructBuilt() { return ( GetStrucIdByName( "WoWClientDB" ) != -1 ); } static HandleLoadLoop(xref, hFile, sPrefix,sClassName,bLabel) { auto count; do { auto dbNameOffset, dbStruct, dbName; dbStruct = Dword(xref); dbNameOffset = Dword(xref + 4); if(dbStruct == 0 || dbNameOffset == 0) break; dbName = WoWDb_GetName(dbNameOffset); if(bLabel) { Message("Labeling : %X %X %s\n", dbStruct, dbNameOffset, dbName); SetType( dbStruct, "WoWClientDB;" ); MakeStruct( dbStruct, "WoWClientDB" ); MakeName( dbStruct, form( sPrefix + dbName ) ); } Message("Dumping : #define " + sPrefix + "%s (" + sClassName + " DB_BaseOffset + 0x%08X)\n", dbName, dbStruct); fprintf( hFile, "#define " + sPrefix + "%s (" + sClassName + " DB_BaseOffset + 0x%08X)\n", dbName, dbStruct ); xref = xref + 8; count++; } while(1); return count; } static GetNameEffset( xref ) { auto offset, dbName; offset = ReadOperand( xref, "push", "offset" ); dbName = GetString( Dword(offset), -1, ASCSTR_C ); if(strstr( dbName, ".dbc" ) > -1) return offset; return BADADDR; } static ReadOperand( xref, operand, filter ) { auto prevFunc; prevFunc = PrevFunction( xref ); //Message("%X %X\n", xref, prevFunc); do { auto disasm; disasm = GetDisasm( xref ); if ( strstr( disasm, operand ) > -1 && strstr( disasm, filter ) > -1 ) break; xref = PrevHead( xref, prevFunc ); } while ( 1 ); return GetOperandValue( xref, operand == "mov" ? 1 : 0); } static main() { auto curAddr, y, count, hFile, sPath,sPrefix,sClassName,bLabel; /////////////////////////////////////////// /////// Customisation start /////////////////////////////////////////// sPrefix = "g_DB_"; // Prefix of the Databases dumped and labeled sClassName = "(CClientDB*)"; // Classname to apply to the #define macros - leave empty if you just need the offsets bLabel = 0; // 0 = Dump only 1 = Dump + LabelDatabases in IDA sPath = GetTargetPath() + "Database_Enum.h"; /////////////////////////////////////////// /////// Customisation end /////////////////////////////////////////// // 55 8B EC 51 53 56 57 8B 7D 08 8D 45 08 89 4D FC 8B 0F 50 51 E8 ? ? ? ? 83 7D 08 00 75 15 8B //curAddr = FindBinary( 0, SEARCH_DOWN, "55 8B EC 51 53 56 8B 75 08 57 8D 45 08 8B D9 8B 0E 50 51 E8 ? ? ? ? 83 7D 08 00 75 15 8B 16" ); // 55 8B EC 81 EC 04 01 00 00 53 56 57 8B 7D 08 8D 45 08 89 4D FC 8B 0F 50 51 E8 ? ? ? ? 83 7D //curAddr = FindBinary( 0, SEARCH_DOWN, "55 8B EC 51 53 56 57 8B 7D 08 8D 45 08 89 4D FC 8B 0F 50 51 E8 ? ? ? ? 83 7D 08 00 75 15 8B" ); curAddr = FindBinary( 0, SEARCH_DOWN, "55 8B EC 81 EC 04 01 00 00 53 56 57 8B 7D 08 8D 45 08 89 4D FC 8B 0F 50 51 E8 ? ? ? ? 83 7D" ); if(curAddr == BADADDR) { Message("Can't find dbcLoadFunction, aborting...\n"); return -1; } if ( !StructBuilt() ) { Message( "Building struct..\n" ); if( BuildStruct() == -1 ) { Message( "Failed to build struct..\n" ); return; } } hFile = fopen(sPath,"w"); if(hFile == -1) { return 0; } fprintf( hFile, "#ifndef __DATABASE_ENUM_H__\n#define __DATABASE_ENUM_H__\n\n" ); fprintf(hFile,"//" + GetWoWVersionString() + "\n\n"); fprintf( hFile, "#define " + sPrefix + "BaseOffset ( 0 )\n\n" ); for(y = RfirstB(curAddr); y != BADADDR; y = RnextB(curAddr, y)) { auto dbNameOffset, dbStruct, dbName; dbStruct = ReadOperand(y, "mov", "offset"); dbNameOffset = GetNameEffset(y); Message("%X %X %X\n", y, dbStruct, dbNameOffset); if(dbNameOffset == BADADDR) { count = count + HandleLoadLoop(dbStruct, hFile, sPrefix,sClassName, bLabel); continue; } if(bLabel) { SetType( dbStruct, "WoWClientDB;" ); MakeStruct( dbStruct, "WoWClientDB" ); } dbName = WoWDb_GetName( dbNameOffset ); Message("%s\n", dbName); //MakeName( dbStruct, form( sPrefix + dbName, dbName ) ); count++; } fprintf( hFile, "\n#endif //__DATABASE_ENUM_H__" ); fclose(hFile); Message("DBC count %u\n", count); }
If somebody is interested i can also post my Script that dumps functionnames and offsets the same way.Code:#ifndef __DATABASE_ENUM_H__ #define __DATABASE_ENUM_H__ //Version: 4.0.1 Build number: 13164 Build date: Oct 6 2010 #define DB_BaseOffset ( NULL ) #define DB_AnimationData ((CClientDB*) DB_BaseOffset + 0x00796C54) #define DB_LiquidMaterial ((CClientDB*) DB_BaseOffset + 0x00796C70) #define DB_LiquidObject ((CClientDB*) DB_BaseOffset + 0x00796C8C) #define DB_LiquidType ((CClientDB*) DB_BaseOffset + 0x00796CA8) #define DB_SoundEntriesAdvanced ((CClientDB*) DB_BaseOffset + 0x00796CC4) #define DB_SoundEntries ((CClientDB*) DB_BaseOffset + 0x00796CE0) #define DB_SoundEntriesFallbacks ((CClientDB*) DB_BaseOffset + 0x00796CFC) #define DB_TerrainMaterial ((CClientDB*) DB_BaseOffset + 0x00796D18) #define DB_Achievement ((CClientDB*) DB_BaseOffset + 0x00797934) #define DB_Achievement_Criteria ((CClientDB*) DB_BaseOffset + 0x00797950) #define DB_Achievement_Category ((CClientDB*) DB_BaseOffset + 0x0079796C) #define DB_AnimKit ((CClientDB*) DB_BaseOffset + 0x00797988) #define DB_AnimKitBoneSet ((CClientDB*) DB_BaseOffset + 0x007979A4) #define DB_AnimKitBoneSetAlias ((CClientDB*) DB_BaseOffset + 0x007979C0) #define DB_AnimKitConfig ((CClientDB*) DB_BaseOffset + 0x007979DC) #define DB_AnimKitConfigBoneSet ((CClientDB*) DB_BaseOffset + 0x007979F8) #define DB_AnimKitPriority ((CClientDB*) DB_BaseOffset + 0x00797A14) #define DB_AnimKitSegment ((CClientDB*) DB_BaseOffset + 0x00797A30) #define DB_AnimReplacement ((CClientDB*) DB_BaseOffset + 0x00797A4C) #define DB_AnimReplacementSet ((CClientDB*) DB_BaseOffset + 0x00797A68) #define DB_AreaGroup ((CClientDB*) DB_BaseOffset + 0x00797A84) #define DB_AreaPOI ((CClientDB*) DB_BaseOffset + 0x00797AA0) #define DB_AreaPOISortedWorldState ((CClientDB*) DB_BaseOffset + 0x00797ABC) #define DB_AreaTable ((CClientDB*) DB_BaseOffset + 0x00797AD8) #define DB_AreaAssignment ((CClientDB*) DB_BaseOffset + 0x00797AF4) #define DB_AreaTrigger ((CClientDB*) DB_BaseOffset + 0x00797B10) #define DB_ArmorLocation ((CClientDB*) DB_BaseOffset + 0x00797B2C) #define DB_AuctionHouse ((CClientDB*) DB_BaseOffset + 0x00797B48) #define DB_BankBagSlotPrices ((CClientDB*) DB_BaseOffset + 0x00797B64) #define DB_BannedAddOns ((CClientDB*) DB_BaseOffset + 0x00797B80) #define DB_BarberShopStyle ((CClientDB*) DB_BaseOffset + 0x00797B9C) #define DB_BattlemasterList ((CClientDB*) DB_BaseOffset + 0x00797BB8) #define DB_CameraMode ((CClientDB*) DB_BaseOffset + 0x00797BD4) #define DB_CameraShakes ((CClientDB*) DB_BaseOffset + 0x00797BF0) #define DB_CastableRaidBuffs ((CClientDB*) DB_BaseOffset + 0x00797C0C) #define DB_Cfg_Categories ((CClientDB*) DB_BaseOffset + 0x00797C28) #define DB_Cfg_Configs ((CClientDB*) DB_BaseOffset + 0x00797C44) #define DB_CharBaseInfo ((CClientDB*) DB_BaseOffset + 0x00797C60) #define DB_CharHairGeosets ((CClientDB*) DB_BaseOffset + 0x00797C7C) #define DB_CharSections ((CClientDB*) DB_BaseOffset + 0x00797C98) #define DB_CharStartOutfit ((CClientDB*) DB_BaseOffset + 0x00797CB4) #define DB_CharTitles ((CClientDB*) DB_BaseOffset + 0x00797CD0) #define DB_CharacterFacialHairStyles ((CClientDB*) DB_BaseOffset + 0x00797CEC) #define DB_ChatChannels ((CClientDB*) DB_BaseOffset + 0x00797D08) #define DB_ChatProfanity ((CClientDB*) DB_BaseOffset + 0x00797D24) #define DB_ChrClasses ((CClientDB*) DB_BaseOffset + 0x00797D40) #define DB_ChrRaces ((CClientDB*) DB_BaseOffset + 0x00797D5C) #define DB_CinematicCamera ((CClientDB*) DB_BaseOffset + 0x00797D78) #define DB_CinematicSequences ((CClientDB*) DB_BaseOffset + 0x00797D94) #define DB_CreatureDisplayInfoExtra ((CClientDB*) DB_BaseOffset + 0x00797DB0) #define DB_CreatureDisplayInfo ((CClientDB*) DB_BaseOffset + 0x00797DCC) #define DB_CreatureFamily ((CClientDB*) DB_BaseOffset + 0x00797DE8) #define DB_CreatureModelData ((CClientDB*) DB_BaseOffset + 0x00797E04) #define DB_CreatureMovementInfo ((CClientDB*) DB_BaseOffset + 0x00797E20) #define DB_CreatureSoundData ((CClientDB*) DB_BaseOffset + 0x00797E3C) #define DB_CreatureSpellData ((CClientDB*) DB_BaseOffset + 0x00797E58) #define DB_CreatureType ((CClientDB*) DB_BaseOffset + 0x00797E74) #define DB_CurrencyTypes ((CClientDB*) DB_BaseOffset + 0x00797E90) #define DB_CurrencyCategory ((CClientDB*) DB_BaseOffset + 0x00797EAC) #define DB_DanceMoves ((CClientDB*) DB_BaseOffset + 0x00797EC8) #define DB_DeathThudLookups ((CClientDB*) DB_BaseOffset + 0x00797EE4) #define DB_DestructibleModelData ((CClientDB*) DB_BaseOffset + 0x00797F38) #define DB_DungeonEncounter ((CClientDB*) DB_BaseOffset + 0x00797F54) #define DB_DungeonMap ((CClientDB*) DB_BaseOffset + 0x00797F70) #define DB_DungeonMapChunk ((CClientDB*) DB_BaseOffset + 0x00797F8C) #define DB_DurabilityCosts ((CClientDB*) DB_BaseOffset + 0x00797FA8) #define DB_DurabilityQuality ((CClientDB*) DB_BaseOffset + 0x00797FC4) #define DB_Emotes ((CClientDB*) DB_BaseOffset + 0x00797FE0) #define DB_EmotesTextData ((CClientDB*) DB_BaseOffset + 0x00797FFC) #define DB_EmotesTextSound ((CClientDB*) DB_BaseOffset + 0x00798018) #define DB_EmotesText ((CClientDB*) DB_BaseOffset + 0x00798034) #define DB_EnvironmentalDamage ((CClientDB*) DB_BaseOffset + 0x00798050) #define DB_Exhaustion ((CClientDB*) DB_BaseOffset + 0x0079806C) #define DB_FactionGroup ((CClientDB*) DB_BaseOffset + 0x00798088) #define DB_Faction ((CClientDB*) DB_BaseOffset + 0x007980A4) #define DB_FactionTemplate ((CClientDB*) DB_BaseOffset + 0x007980C0) #define DB_FileData ((CClientDB*) DB_BaseOffset + 0x007980DC) #define DB_FootprintTextures ((CClientDB*) DB_BaseOffset + 0x007980F8) #define DB_FootstepTerrainLookup ((CClientDB*) DB_BaseOffset + 0x00798114) #define DB_GameObjectArtKit ((CClientDB*) DB_BaseOffset + 0x00798130) #define DB_GameObjectDisplayInfo ((CClientDB*) DB_BaseOffset + 0x0079814C) #define DB_GameTables ((CClientDB*) DB_BaseOffset + 0x00798168) #define DB_GameTips ((CClientDB*) DB_BaseOffset + 0x00798184) #define DB_GemProperties ((CClientDB*) DB_BaseOffset + 0x007981A0) #define DB_GlueScreenEmote ((CClientDB*) DB_BaseOffset + 0x007981BC) #define DB_GlyphProperties ((CClientDB*) DB_BaseOffset + 0x007981D8) #define DB_GlyphSlot ((CClientDB*) DB_BaseOffset + 0x007981F4) #define DB_GMSurveyAnswers ((CClientDB*) DB_BaseOffset + 0x00798210) #define DB_GMSurveyCurrentSurvey ((CClientDB*) DB_BaseOffset + 0x0079822C) #define DB_GMSurveyQuestions ((CClientDB*) DB_BaseOffset + 0x00798248) #define DB_GMSurveySurveys ((CClientDB*) DB_BaseOffset + 0x00798264) #define DB_GMTicketCategory ((CClientDB*) DB_BaseOffset + 0x00798280) #define DB_GroundEffectDoodad ((CClientDB*) DB_BaseOffset + 0x0079829C) #define DB_GroundEffectTexture ((CClientDB*) DB_BaseOffset + 0x007982B8) #define DB_gtBarberShopCostBase ((CClientDB*) DB_BaseOffset + 0x007982D4) #define DB_gtCombatRatings ((CClientDB*) DB_BaseOffset + 0x007982F0) #define DB_gtChanceToMeleeCrit ((CClientDB*) DB_BaseOffset + 0x0079830C) #define DB_gtChanceToMeleeCritBase ((CClientDB*) DB_BaseOffset + 0x00798328) #define DB_gtChanceToSpellCrit ((CClientDB*) DB_BaseOffset + 0x00798344) #define DB_gtChanceToSpellCritBase ((CClientDB*) DB_BaseOffset + 0x00798360) #define DB_gtNPCManaCostScaler ((CClientDB*) DB_BaseOffset + 0x0079837C) #define DB_gtOCTClassCombatRatingScalar ((CClientDB*) DB_BaseOffset + 0x00798398) #define DB_gtOCTRegenMP ((CClientDB*) DB_BaseOffset + 0x007983B4) #define DB_gtRegenMPPerSpt ((CClientDB*) DB_BaseOffset + 0x007983D0) #define DB_gtSpellScaling ((CClientDB*) DB_BaseOffset + 0x00798408) #define DB_gtShieldBlockRegular ((CClientDB*) DB_BaseOffset + 0x007983EC) #define DB_GuildColorBackground ((CClientDB*) DB_BaseOffset + 0x00798424) #define DB_GuildColorBorder ((CClientDB*) DB_BaseOffset + 0x00798440) #define DB_GuildColorEmblem ((CClientDB*) DB_BaseOffset + 0x0079845C) #define DB_GuildPerkSpells ((CClientDB*) DB_BaseOffset + 0x00798478) #define DB_HelmetGeosetVisData ((CClientDB*) DB_BaseOffset + 0x00798494) #define DB_HolidayDescriptions ((CClientDB*) DB_BaseOffset + 0x007984B0) #define DB_HolidayNames ((CClientDB*) DB_BaseOffset + 0x007984CC) #define DB_Holidays ((CClientDB*) DB_BaseOffset + 0x007984E8) #define DB_ItemArmorQuality ((CClientDB*) DB_BaseOffset + 0x00798520) #define DB_ItemArmorTotal ((CClientDB*) DB_BaseOffset + 0x00798504) #define DB_ItemArmorShield ((CClientDB*) DB_BaseOffset + 0x0079853C) #define DB_ItemBagFamily ((CClientDB*) DB_BaseOffset + 0x00798558) #define DB_ItemClass ((CClientDB*) DB_BaseOffset + 0x00798574) #define DB_ItemCurrencyCost ((CClientDB*) DB_BaseOffset + 0x00798590) #define DB_ItemDamageAmmo ((CClientDB*) DB_BaseOffset + 0x007985AC) #define DB_ItemDamageOneHand ((CClientDB*) DB_BaseOffset + 0x007985C8) #define DB_ItemDamageOneHandCaster ((CClientDB*) DB_BaseOffset + 0x007985E4) #define DB_ItemDamageRanged ((CClientDB*) DB_BaseOffset + 0x00798600) #define DB_ItemDamageThrown ((CClientDB*) DB_BaseOffset + 0x0079861C) #define DB_ItemDamageTwoHand ((CClientDB*) DB_BaseOffset + 0x00798638) #define DB_ItemDamageTwoHandCaster ((CClientDB*) DB_BaseOffset + 0x00798654) #define DB_ItemDamageWand ((CClientDB*) DB_BaseOffset + 0x00798670) #define DB_ItemDisenchantLoot ((CClientDB*) DB_BaseOffset + 0x0079868C) #define DB_ItemDisplayInfo ((CClientDB*) DB_BaseOffset + 0x007986A8) #define DB_ItemExtendedCost ((CClientDB*) DB_BaseOffset + 0x007986C8) #define DB_ItemGroupSounds ((CClientDB*) DB_BaseOffset + 0x007986E4) #define DB_ItemLimitCategory ((CClientDB*) DB_BaseOffset + 0x00798700) #define DB_ItemPetFood ((CClientDB*) DB_BaseOffset + 0x0079871C) #define DB_ItemPurchaseGroup ((CClientDB*) DB_BaseOffset + 0x00798738) #define DB_ItemRandomProperties ((CClientDB*) DB_BaseOffset + 0x00798754) #define DB_ItemRandomSuffix ((CClientDB*) DB_BaseOffset + 0x00798770) #define DB_ItemReforge ((CClientDB*) DB_BaseOffset + 0x0079878C) #define DB_ItemSet ((CClientDB*) DB_BaseOffset + 0x007987A8) #define DB_ItemSubClassMask ((CClientDB*) DB_BaseOffset + 0x007987C4) #define DB_ItemSubClass ((CClientDB*) DB_BaseOffset + 0x007987E0) #define DB_ItemVisualEffects ((CClientDB*) DB_BaseOffset + 0x007987FC) #define DB_ItemVisuals ((CClientDB*) DB_BaseOffset + 0x00798818) #define DB_LanguageWords ((CClientDB*) DB_BaseOffset + 0x00798834) #define DB_Languages ((CClientDB*) DB_BaseOffset + 0x00798850) #define DB_LfgDungeonExpansion ((CClientDB*) DB_BaseOffset + 0x0079886C) #define DB_LfgDungeonGroup ((CClientDB*) DB_BaseOffset + 0x00798888) #define DB_LfgDungeons ((CClientDB*) DB_BaseOffset + 0x007988A4) #define DB_Light ((CClientDB*) DB_BaseOffset + 0x007A15FC) #define DB_LightFloatBand ((CClientDB*) DB_BaseOffset + 0x007A15C0) #define DB_LightIntBand ((CClientDB*) DB_BaseOffset + 0x007A15A0) #define DB_LightParams ((CClientDB*) DB_BaseOffset + 0x007A15E0) #define DB_LightSkybox ((CClientDB*) DB_BaseOffset + 0x007A1584) #define DB_LoadingScreens ((CClientDB*) DB_BaseOffset + 0x007988C0) #define DB_LoadingScreenTaxiSplines ((CClientDB*) DB_BaseOffset + 0x007988DC) #define DB_Lock ((CClientDB*) DB_BaseOffset + 0x007988F8) #define DB_LockType ((CClientDB*) DB_BaseOffset + 0x00798914) #define DB_MailTemplate ((CClientDB*) DB_BaseOffset + 0x00798930) #define DB_Map ((CClientDB*) DB_BaseOffset + 0x0079894C) #define DB_MapDifficulty ((CClientDB*) DB_BaseOffset + 0x00798968) #define DB_Material ((CClientDB*) DB_BaseOffset + 0x00798984) #define DB_MountCapability ((CClientDB*) DB_BaseOffset + 0x007989A0) #define DB_MountType ((CClientDB*) DB_BaseOffset + 0x007989BC) #define DB_Movie ((CClientDB*) DB_BaseOffset + 0x007989D8) #define DB_MovieFileData ((CClientDB*) DB_BaseOffset + 0x007989F4) #define DB_MovieVariation ((CClientDB*) DB_BaseOffset + 0x00798A10) #define DB_NameGen ((CClientDB*) DB_BaseOffset + 0x00798A2C) #define DB_NPCSounds ((CClientDB*) DB_BaseOffset + 0x00798A48) #define DB_NamesProfanity ((CClientDB*) DB_BaseOffset + 0x00798A80) #define DB_NamesReserved ((CClientDB*) DB_BaseOffset + 0x00798A9C) #define DB_NumTalentsAtLevel ((CClientDB*) DB_BaseOffset + 0x00798A64) #define DB_OverrideSpellData ((CClientDB*) DB_BaseOffset + 0x00798AB8) #define DB_Package ((CClientDB*) DB_BaseOffset + 0x00798AD4) #define DB_PageTextMaterial ((CClientDB*) DB_BaseOffset + 0x00798AF0) #define DB_PaperDollItemFrame ((CClientDB*) DB_BaseOffset + 0x00798B0C) #define DB_ParticleColor ((CClientDB*) DB_BaseOffset + 0x00798B28) #define DB_PetPersonality ((CClientDB*) DB_BaseOffset + 0x00798B44) #define DB_Phase ((CClientDB*) DB_BaseOffset + 0x00798B60) #define DB_PhaseXPhaseGroup ((CClientDB*) DB_BaseOffset + 0x00798B98) #define DB_PowerDisplay ((CClientDB*) DB_BaseOffset + 0x00798BB4) #define DB_PvpDifficulty ((CClientDB*) DB_BaseOffset + 0x00798BD0) #define DB_QuestFactionReward ((CClientDB*) DB_BaseOffset + 0x00798BEC) #define DB_QuestInfo ((CClientDB*) DB_BaseOffset + 0x00798C08) #define DB_QuestPOIBlob ((CClientDB*) DB_BaseOffset + 0x00798C24) #define DB_QuestPOIPoint ((CClientDB*) DB_BaseOffset + 0x00798C40) #define DB_QuestSort ((CClientDB*) DB_BaseOffset + 0x00798C5C) #define DB_QuestXP ((CClientDB*) DB_BaseOffset + 0x00798C78) #define DB_Resistances ((CClientDB*) DB_BaseOffset + 0x00798C94) #define DB_ResearchBranch ((CClientDB*) DB_BaseOffset + 0x00798CE8) #define DB_ResearchField ((CClientDB*) DB_BaseOffset + 0x00798CCC) #define DB_ResearchProject ((CClientDB*) DB_BaseOffset + 0x00798D04) #define DB_ResearchSite ((CClientDB*) DB_BaseOffset + 0x00798D20) #define DB_RandPropPoints ((CClientDB*) DB_BaseOffset + 0x00798CB0) #define DB_ScalingStatDistribution ((CClientDB*) DB_BaseOffset + 0x00798D3C) #define DB_ScalingStatValues ((CClientDB*) DB_BaseOffset + 0x00798D58) #define DB_ScreenEffect ((CClientDB*) DB_BaseOffset + 0x00798D74) #define DB_ScreenLocation ((CClientDB*) DB_BaseOffset + 0x00798D90) #define DB_ServerMessages ((CClientDB*) DB_BaseOffset + 0x00798DAC) #define DB_SkillLineAbility ((CClientDB*) DB_BaseOffset + 0x00798DC8) #define DB_SkillLineAbilitySortedSpell ((CClientDB*) DB_BaseOffset + 0x00798DE4) #define DB_SkillLineCategory ((CClientDB*) DB_BaseOffset + 0x00798E00) #define DB_SkillLine ((CClientDB*) DB_BaseOffset + 0x00798E1C) #define DB_SkillRaceClassInfo ((CClientDB*) DB_BaseOffset + 0x00798E38) #define DB_SkillTiers ((CClientDB*) DB_BaseOffset + 0x00798E54) #define DB_SoundAmbience ((CClientDB*) DB_BaseOffset + 0x00798E70) #define DB_SoundEmitters ((CClientDB*) DB_BaseOffset + 0x00798E8C) #define DB_SoundProviderPreferences ((CClientDB*) DB_BaseOffset + 0x00798EA8) #define DB_SpamMessages ((CClientDB*) DB_BaseOffset + 0x00798EC4) #define DB_SpellActivationOverlay ((CClientDB*) DB_BaseOffset + 0x00798EE0) #define DB_SpellAuraOptions ((CClientDB*) DB_BaseOffset + 0x00798EFC) #define DB_SpellAuraRestrictions ((CClientDB*) DB_BaseOffset + 0x00798F18) #define DB_SpellCastingRequirements ((CClientDB*) DB_BaseOffset + 0x00798F34) #define DB_SpellCastTimes ((CClientDB*) DB_BaseOffset + 0x00798F50) #define DB_SpellCategories ((CClientDB*) DB_BaseOffset + 0x00798F6C) #define DB_SpellCategory ((CClientDB*) DB_BaseOffset + 0x00798F88) #define DB_SpellChainEffects ((CClientDB*) DB_BaseOffset + 0x00798FA4) #define DB_SpellClassOptions ((CClientDB*) DB_BaseOffset + 0x00798FC0) #define DB_SpellCooldowns ((CClientDB*) DB_BaseOffset + 0x00798FDC) #define DB_Spell ((CClientDB*) DB_BaseOffset + 0x0079927C) #define DB_SpellDescriptionVariables ((CClientDB*) DB_BaseOffset + 0x00798FF8) #define DB_SpellDifficulty ((CClientDB*) DB_BaseOffset + 0x00799014) #define DB_SpellDispelType ((CClientDB*) DB_BaseOffset + 0x00799030) #define DB_SpellDuration ((CClientDB*) DB_BaseOffset + 0x0079904C) #define DB_SpellEffect ((CClientDB*) DB_BaseOffset + 0x00799068) #define DB_SpellEffectCameraShakes ((CClientDB*) DB_BaseOffset + 0x00799084) #define DB_SpellEquippedItems ((CClientDB*) DB_BaseOffset + 0x007990A0) #define DB_SpellFlyout ((CClientDB*) DB_BaseOffset + 0x007990BC) #define DB_SpellFlyoutItem ((CClientDB*) DB_BaseOffset + 0x007990D8) #define DB_SpellFocusObject ((CClientDB*) DB_BaseOffset + 0x007990F4) #define DB_SpellIcon ((CClientDB*) DB_BaseOffset + 0x00799110) #define DB_SpellInterrupts ((CClientDB*) DB_BaseOffset + 0x0079912C) #define DB_SpellItemEnchantment ((CClientDB*) DB_BaseOffset + 0x00799148) #define DB_SpellItemEnchantmentCondition ((CClientDB*) DB_BaseOffset + 0x00799164) #define DB_SpellLevels ((CClientDB*) DB_BaseOffset + 0x00799180) #define DB_SpellMechanic ((CClientDB*) DB_BaseOffset + 0x0079919C) #define DB_SpellMissile ((CClientDB*) DB_BaseOffset + 0x007991B8) #define DB_SpellMissileMotion ((CClientDB*) DB_BaseOffset + 0x007991D4) #define DB_SpellRadius ((CClientDB*) DB_BaseOffset + 0x0079920C) #define DB_SpellRange ((CClientDB*) DB_BaseOffset + 0x00799228) #define DB_SpellPower ((CClientDB*) DB_BaseOffset + 0x007991F0) #define DB_SpellReagents ((CClientDB*) DB_BaseOffset + 0x00799260) #define DB_SpellRuneCost ((CClientDB*) DB_BaseOffset + 0x00799244) #define DB_SpellScaling ((CClientDB*) DB_BaseOffset + 0x00799298) #define DB_SpellShapeshift ((CClientDB*) DB_BaseOffset + 0x007992B4) #define DB_SpellShapeshiftForm ((CClientDB*) DB_BaseOffset + 0x007992D0) #define DB_SpellTargetRestrictions ((CClientDB*) DB_BaseOffset + 0x007992EC) #define DB_SpellTotems ((CClientDB*) DB_BaseOffset + 0x00799308) #define DB_SpellVisual ((CClientDB*) DB_BaseOffset + 0x00799394) #define DB_SpellVisualEffectName ((CClientDB*) DB_BaseOffset + 0x00799324) #define DB_SpellVisualKit ((CClientDB*) DB_BaseOffset + 0x00799340) #define DB_SpellVisualKitAreaModel ((CClientDB*) DB_BaseOffset + 0x0079935C) #define DB_SpellVisualKitModelAttach ((CClientDB*) DB_BaseOffset + 0x00799378) #define DB_Stationery ((CClientDB*) DB_BaseOffset + 0x007993B0) #define DB_StringLookups ((CClientDB*) DB_BaseOffset + 0x007993CC) #define DB_SummonProperties ((CClientDB*) DB_BaseOffset + 0x007993E8) #define DB_Talent ((CClientDB*) DB_BaseOffset + 0x00799404) #define DB_TalentTab ((CClientDB*) DB_BaseOffset + 0x00799420) #define DB_TalentTreePrimarySpells ((CClientDB*) DB_BaseOffset + 0x0079943C) #define DB_TaxiNodes ((CClientDB*) DB_BaseOffset + 0x00799458) #define DB_TaxiPathNode ((CClientDB*) DB_BaseOffset + 0x00799474) #define DB_TaxiPath ((CClientDB*) DB_BaseOffset + 0x00799490) #define DB_TerrainType ((CClientDB*) DB_BaseOffset + 0x007994AC) #define DB_TerrainTypeSounds ((CClientDB*) DB_BaseOffset + 0x007994C8) #define DB_TotemCategory ((CClientDB*) DB_BaseOffset + 0x007994E4) #define DB_TransportAnimation ((CClientDB*) DB_BaseOffset + 0x00799500) #define DB_TransportPhysics ((CClientDB*) DB_BaseOffset + 0x0079951C) #define DB_TransportRotation ((CClientDB*) DB_BaseOffset + 0x00799538) #define DB_UnitBloodLevels ((CClientDB*) DB_BaseOffset + 0x00799554) #define DB_UnitBlood ((CClientDB*) DB_BaseOffset + 0x00799570) #define DB_UnitPowerBar ((CClientDB*) DB_BaseOffset + 0x0079958C) #define DB_Vehicle ((CClientDB*) DB_BaseOffset + 0x007995A8) #define DB_VehicleSeat ((CClientDB*) DB_BaseOffset + 0x007995C4) #define DB_VehicleUIIndicator ((CClientDB*) DB_BaseOffset + 0x007995E0) #define DB_VehicleUIIndSeat ((CClientDB*) DB_BaseOffset + 0x007995FC) #define DB_VocalUISounds ((CClientDB*) DB_BaseOffset + 0x00799618) #define DB_WMOAreaTable ((CClientDB*) DB_BaseOffset + 0x00799634) #define DB_World_PVP_Area ((CClientDB*) DB_BaseOffset + 0x00799650) #define DB_WeaponImpactSounds ((CClientDB*) DB_BaseOffset + 0x0079966C) #define DB_WeaponSwingSounds2 ((CClientDB*) DB_BaseOffset + 0x00799688) #define DB_Weather ((CClientDB*) DB_BaseOffset + 0x007996A4) #define DB_WorldMapArea ((CClientDB*) DB_BaseOffset + 0x007996C0) #define DB_WorldMapContinent ((CClientDB*) DB_BaseOffset + 0x007996DC) #define DB_WorldMapOverlay ((CClientDB*) DB_BaseOffset + 0x007996F8) #define DB_WorldMapTransforms ((CClientDB*) DB_BaseOffset + 0x00799714) #define DB_WorldSafeLocs ((CClientDB*) DB_BaseOffset + 0x00799730) #define DB_WorldStateUI ((CClientDB*) DB_BaseOffset + 0x0079974C) #define DB_ZoneIntroMusicTable ((CClientDB*) DB_BaseOffset + 0x00799768) #define DB_ZoneLight ((CClientDB*) DB_BaseOffset + 0x00799784) #define DB_ZoneLightPoint ((CClientDB*) DB_BaseOffset + 0x007997A0) #define DB_ZoneMusic ((CClientDB*) DB_BaseOffset + 0x007997BC) #define DB_WorldStateZoneSounds ((CClientDB*) DB_BaseOffset + 0x007997D8) #define DB_WorldChunkSounds ((CClientDB*) DB_BaseOffset + 0x007997F4) #define DB_ObjectEffect ((CClientDB*) DB_BaseOffset + 0x00799810) #define DB_ObjectEffectGroup ((CClientDB*) DB_BaseOffset + 0x0079982C) #define DB_ObjectEffectModifier ((CClientDB*) DB_BaseOffset + 0x00799848) #define DB_ObjectEffectPackage ((CClientDB*) DB_BaseOffset + 0x00799864) #define DB_ObjectEffectPackageElem ((CClientDB*) DB_BaseOffset + 0x00799880) #define DB_SoundFilter ((CClientDB*) DB_BaseOffset + 0x0079989C) #define DB_SoundFilterElem ((CClientDB*) DB_BaseOffset + 0x007998B8) #define DB_PhaseShiftZoneSounds ((CClientDB*) DB_BaseOffset + 0x00798B7C) #endif //__DATABASE_ENUM_H__
If anybody has happened to have reversed the new item cache struct, it'd be much appreciated.
Seems they doubled the size of it. (It's no longer a .wdb file, so finding the loader func is fairly useless, as it reads in a few different files generically.)
Spent the last 36hrs reversing it, and not make a whole lot of progress.![]()