Experienced Elementalist
- Joined
- Oct 11, 2008
- Messages
- 225
- Reaction score
- 423
Hello all)
Today i release emulation of ObjectStruct for client (it like OBJECTSTRUCT of GS, but for main.exe), with it very simply "decompile" some main moments and create hard customs.
And again some moments with "Unknown" names and gaps, but it work)
Geting structure adress from OllyDbg
- (Inter commands)
- (Go to result)
-
- (Down list)
8128AC4 -> Structure adress
How call to structure from DLL
How add structure to IDA (HexRoys)
Credits: Me (DarkSim)
Version: Season 6 Episode 3 GMO (maybe 1.04d+)
On other versions need make research and check all struct positions.
Bad english and etc :laugh:
Good luck to all with it)
Today i release emulation of ObjectStruct for client (it like OBJECTSTRUCT of GS, but for main.exe), with it very simply "decompile" some main moments and create hard customs.
Code:
#pragma pack(push, 1)
struct ObjectItem //-> Complete (size: 107)
{
/*+0*/ short ItemID;
/*+2*/ int Level;
/*+6*/ char Unknown6;
/*+7*/ char Unknown7;
/*+8*/ char Unknown8;
/*+9*/ short DamageMin;
/*+11*/ short DamageMax;
/*+13*/ char Unknown13;
/*+14*/ short Unknown14;
/*+16*/ short Unknown16;
/*+18*/ char Unknown18;
/*+19*/ char Unknown19;
/*+20*/ short Unknown20;
/*+22*/ char Durability;
/*+23*/ char ExcellentOption;
/*+24*/ char AncientOption;
/*+25*/ short ReqStrenght;
/*+27*/ short ReqDextirity;
/*+29*/ short ReqEnergy;
/*+31*/ short ReqVitality;
/*+33*/ short ReqCommand;
/*+35*/ short ReqLevel;
/*+37*/ char SpecialCount;
/*+38*/ WORD SpecialType[8];
/*+54*/ BYTE SpecialValue[8];
/*+62*/ int UniqueID;
/*+66*/ char Unknown66;
/*+67*/ char PosX;
/*+68*/ char PosY;
/*+69*/ WORD HarmonyType;
/*+71*/ short HarmonyValue;
/*+73*/ char Is380Item;
/*+74*/ char SocketOption[5];
/*+79*/ char Unknown79;
/*+80*/ char SocketSeedIndex[5];
/*+85*/ char SocketSphereLevel[5];
/*+90*/ char SocketSet;
BYTE gap01[5];
/*+96*/ char DurabilityState;
/*+97*/ char PeriodItem;
/*+98*/ char ExpiredItem;
/*+99*/ int ExpireDateConvert;
/*+103*/ int Unknown103;
};
#pragma pack(pop)
// ----------------------------------------------------------------------------------------------
#pragma pack(push, 1)
struct UnknownStruct0
{
/*+0*/ WORD Unknown0;//?
/*+2*/ WORD Unknown2;//?
/*+4*/ WORD Unknown4;//?
/*+6*/ WORD Unknown6;
/*+8*/ WORD Unknown8;
/*+10*/ WORD Unknown10;
/*+12*/ WORD Unknown12;//?
/*+14*/ WORD Unknown14;
/*+16*/ WORD Unknown16;
};
#pragma pack(pop)
// ----------------------------------------------------------------------------------------------
#pragma pack(push, 1)
struct ObjectCharacter //-> ~InDev (size: 6012) [8128AC4 | 8128AC8]
{
/*+0*/ char Name[11];
/*+11*/ BYTE Class;
/*+12*/ BYTE Unknown12;
/*+13*/ BYTE Unknown13;
/*+14*/ short Level;
/*+16*/ DWORD Experience;
/*+20*/ DWORD NextExperience;
/*+24*/ short Strength;
/*+26*/ short Dexterity;
/*+28*/ short Vitality;
/*+30*/ short Energy;
/*+32*/ short Leadership;
/*+34*/ WORD Life;
/*+36*/ WORD Mana;
/*+38*/ WORD MaxLife;
/*+40*/ WORD MaxMana;
/*+42*/ WORD Shield;
/*+44*/ WORD MaxShield;
/*+46*/ WORD AttackRate;
/*+48*/ WORD DefenseRate;
/*+50*/ short AddStrength;
/*+52*/ short AddDexterity;
/*+54*/ short AddVitality;
/*+56*/ short AddEnergy;
BYTE gap01[4];
/*+62*/ WORD AddLeadership; //GS use unsigned value...
/*+64*/ WORD Stamina;
/*+66*/ WORD MaxStamina;
/*+68*/ BYTE ItemSpecialUseFlag; //Bit decomposit (1, 2, 8)
BYTE UnknownGap;
/*+70*/ WORD ItemSpecialUseTime[3]; //[ ]
/*+76*/ WORD AddPoint; //FruitStat start
/*+78*/ WORD MaxAddPoint;
/*+80*/ WORD MinusPoint;
/*+82*/ WORD MaxMinusPoint; //FruitStat end
/*+84*/ WORD AttackSpeed;
/*+86*/ WORD DamageRate;
/*+88*/ WORD DamageMin;
/*+90*/ WORD DamageMax;
/*+92*/ WORD Unknown92;
/*+94*/ WORD Unknown94;
/*+96*/ WORD Unknown96;
BYTE gap02[10];
/*+108*/ WORD Unknown108;
/*+110*/ WORD Unknown110;
BYTE gap03[4];
/*+116*/ WORD LevelPoint;
/*+118*/ BYTE MagicCount;
/*+119*/ BYTE Unknown119;
/*+120*/ WORD pMagicList[650]; //maybe 150?
/*1420*/
BYTE gap04[3252];
/*+4672*/ ObjectItem pEquipment[12];
/*+5956*/ DWORD MoneyInventory; //(C4)
/*+5960*/ DWORD MoneyWarehouse; //(C4)
BYTE gap05[8];
/*+5972*/ UnknownStruct0 Unknown5972;
BYTE gap06[2];
/*+5992*/ WORD Unknown5992;
/*+5994*/ WORD Unknown5994;
BYTE gap07[2];
/*+5998*/ WORD Unknown5998;
/*+6000*/ WORD Unknown6000;
/*+6002*/ WORD Unknown6002;
/*+6004*/ WORD Unknown6004;
/*+6006*/ WORD Unknown6006;
/*+6008*/ BYTE Unknown6008;
/*+6009*/ BYTE Unknown6009;
/*+6010*/ BYTE Unknown6010;
/*+6011*/ BYTE Unknown6011;
};
#pragma pack(pop)
// ----------------------------------------------------------------------------------------------
And again some moments with "Unknown" names and gaps, but it work)
Geting structure adress from OllyDbg
- (Inter commands)
- (Go to result)
-
- (Down list)
8128AC4 -> Structure adress
How call to structure from DLL
Code:
ObjectCharacter * pPlayer = &*(ObjectCharacter*)*(DWORD*)0x8128AC4;
How add structure to IDA (HexRoys)
1. Shift + F1
2. Press Insert
3. Paste all code from thread head
4. Go to any function with structure adress
5. Set to he type ObjectCharacter*
6. View in result
Examples:
(
P.S.:
- Same need set it type to +4 from main structure (0x8128AC8)
- Same u can add type to ItemObject vars:
2. Press Insert
3. Paste all code from thread head
4. Go to any function with structure adress
5. Set to he type ObjectCharacter*
6. View in result
Examples:
(
You must be registered to see links
,
You must be registered to see links
)P.S.:
- Same need set it type to +4 from main structure (0x8128AC8)
- Same u can add type to ItemObject vars:
Credits: Me (DarkSim)
Version: Season 6 Episode 3 GMO (maybe 1.04d+)
On other versions need make research and check all struct positions.
Bad english and etc :laugh:
Good luck to all with it)
Attachments
You must be registered for see attachments list
Last edited: