[Memory] League of Legends 3.8.13_06_14_16_46 [EUW]

07/08/2013 02:46 Alisami#1
Hi, since I began memory editing a while ago, I thought that we could work on getting the structs and the adresses from the memory to the public.

I don't have much information, but I am currently working on it.


Adresses:
Code:
X_POS = 0x01CE8770 (float)
Z_POS = 0x01CE8774 (float)
Y_POS = 0x01CE8778 (float)
I found a multilevel pointer pointing to the Current and Max HP and Mana:


Code:
"League of Legends.exe"+018AA5DC

+14 FIRST
+48 SECOND
+2C THIRD
+58 FORTH



-------------------
FIFTH

+68 = CurrMana
+6c = MaxMana

+58 = CurrHP
+5c = MaxHP
Tons of more stuff by NikM (thanks!):
Code:
        //Pointer
        private int iLocalEntity                = 0x01CAA104;
        private int iEntityList                 = 0x01CAA7AC;
        private int iGameTime                   = 0x01CA9FE0;
        private int iStats                      = 0x01CAA124;

        //Entity Offsets
        private int iType                       = 0x004;
        private int iUserName                   = 0x02C;
        private int iPositionX                  = 0x068;
        private int iPositionY                  = 0x06C;
        private int iPositionZ                  = 0x070;
        private int iCurrentHealth              = 0x120;
        private int iMaxHealth                  = 0x130;
        private int iCurrentMana                = 0x18C;
        private int iMaxMana                    = 0x19C;
        private int iCharName                   = 0x534;
        private int iCooldownReduction          = 0x5EC;
        private int iTenacity                   = 0x638;
        private int iArmorPenetration           = 0x668;
        private int iMagicPenetration           = 0x66C;
        private int iArmorPenetrationPerCent    = 0x670;
        private int iMagicPenetrationPerCent    = 0x674;
        private int iAdditionalAD               = 0x694;
        private int iAbilityPower               = 0x69C;
        private int iLifeSteal                  = 0x6E8;
        private int iSpellVamp                  = 0x6EC;
        private int iAttackSpeed                = 0x6F8;
        private int iBaseAD                     = 0x6FC;
        private int iCritChance                 = 0x714;
        private int iArmor                      = 0x718;
        private int iMagicResist                = 0x71C;
        private int iHealthReg                  = 0x720;
        private int iManaReg                    = 0x728;
        private int iWalkSpeed                  = 0x72C;
        private int iAttackRange                = 0x730;
        private int iGold                       = 0xF68;
        private int iAllGold                    = 0xF78;
        private int iSpells                     = 0xFD0;
        private int iItemsArray                 = 0xFE0;

        //TimeOffset
        private int iGameTimeOfs                = 0x004;

        //Stats Offsets
        private int iToStats                    = 0x098;
        private int iKills                      = 0x008;
        private int iDeath                      = 0x00C;
        private int iAssists                    = 0x010;
        private int iMinions                    = 0x014;

        private int iIterator                   = 0;
        private int iCurrentPlayer              = 0;

        public bool isLastPlayerFound = false;

        public void SetLocal()
        {
            this.iCurrentPlayer = this.ReadLongInt(this.iLocalEntity);
        }

        public void NextPlayer()
        {
            int iEntitys = this.ReadLongInt(this.iEntityList);

            for (; this.iIterator < this.ReadLongInt(this.iEntityList + 0x04); ++this.iIterator)
            {
                int iTempEntity = this.ReadLongInt(iEntitys + (this.iIterator * 0x04));

                if (iTempEntity != 0 && this.ReadByte (iTempEntity + 0x21) == 0x14)
                {
                    if (this.ReadLongInt(this.iLocalEntity) == iTempEntity) continue;
                    if (this.iCurrentPlayer == iTempEntity) continue;
                    this.iCurrentPlayer = iTempEntity;
                    return;
                }
            }

            this.iIterator = 0;
            this.isLastPlayerFound = true;
        }

        private float toPerCent(float f)
        {
            return (f * 100.0f);
        }

        public string getUserName()
        {
            return (this.ReadStringASCII(this.iCurrentPlayer + this.iUserName, 0x10));
        }

        public string getCharName()
        {
            return (this.ReadStringASCII(this.iCurrentPlayer + this.iCharName, 0x10));
        }

        public float[] getPosition()
        {
            return (this.ReadFloatArray(this.iCurrentPlayer + this.iPositionX, 3));
        }

        public float getCurrentHealth()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iCurrentHealth));
        }

        public float getMaxHealth()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iMaxHealth));
        }

        public float getCurrentMana()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iCurrentMana));
        }

        public float getMaxMana()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iMaxMana));
        }

        public float getCooldownReduction()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iCooldownReduction)) * (-1.0f));
        }

        public float getTenacity()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iTenacity)));
        }

        public float getArmorPenetration()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iArmorPenetration));
        }

        public float getMagicPenetration()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iMagicPenetration));
        }

        public float getArmorPenetrationPerCent()
        {
            return (100.0f - this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iArmorPenetrationPerCent)));
        }

        public float getMagicPenetrationPerCent()
        {
            return (100.0f - this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iMagicPenetrationPerCent)));
        }

        public float getAttackDamage()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iBaseAD) + this.ReadFloat(this.iCurrentPlayer + this.iAdditionalAD));
        }

        public float getAbilityPower()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iAbilityPower));
        }

        public float getLifeSteal()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iLifeSteal)));
        }

        public float getSpellVamp()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iSpellVamp)));
        }

        public float getAttackSpeed()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iAttackSpeed) * 0.625f);
        }

        public float getCritChance()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iCritChance)));
        }

        public float getArmor()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iArmor));
        }

        public float getMagicResist()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iMagicResist));
        }

        public float getHealthReg()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iHealthReg));
        }

        public float getManaReg()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iManaReg));
        }

        public float getWalkSpeed()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iWalkSpeed));
        }

        public float getAttackRange()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iAttackRange));
        }

        public float getGold()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iGold));
        }

        public float getAllGold()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iAllGold));
        }

        public float getGameTime()
        {
            int iTemp = this.ReadLongInt(this.iGameTime);
            return (this.ReadFloat(iTemp + this.iGameTimeOfs));
        }

        public int [] getStats()
        {
            int iTemp = this.ReadLongInt(this.iStats);
            iTemp = this.ReadLongInt(iTemp + this.iToStats);
            return (this.ReadLongIntArray(iTemp + this.iKills, 4));
        }
I did not try this on another computer/client, it would be great if someone could test these pointers/adresses.

I'd also appreciate some contribution, since this is a lot of work to do. (For me atleast :P)
07/08/2013 03:10 neinax#2
wtf this code doo?
07/08/2013 03:43 HackTec#3
Quote:
Originally Posted by Alisami View Post
Hi, since I began memory editing a while ago, I thought that we could work on getting the structs and the adresses from the memory to the public.

I don't have much information, but I am currently working on it.


Adresses:
Code:
X_POS = 0x01CE8770 (float)
Z_POS = 0x01CE8774 (float)
Y_POS = 0x01CE8778 (float)
X_POS = 0x01CE8770 (float)
Z_POS = 0x01CE8774 (float)
Y_POS = 0x01CE8778 (float)

test it with :
Quote:
Addy:
//================ Position X,Y,Z ==========//
#define ADR_POSITION_X 0x01CE8770
#define ADR_POSITION_Y 0x01CE8778
#define ADR_POSITION_Z 0x01CE8774
//==========================================//
#define ADR_PlayerPointer ?????????
#define ADR_ServerPointer ?????????

Funktion:


DWORD Player = *(DWORD*) ADR_PlayerPointer;
DWORD Server = *(DWORD*) ADR_ServerPointer;


CH_Teleport =0;

if(CH_Teleport==1)
{DWORD dwPlayerPointer = *(DWORD*)ADR_PlayerPointer;
if(dwPlayerPointer != 0){
if (GetAsyncKeyState(VK_F5))
{
x = *(float*)(dwPlayerPointer + ADR_POSITION_X);
z = *(float*)(dwPlayerPointer + ADR_POSITION_Y);
y = *(float*)(dwPlayerPointer + ADR_POSITION_Z);
}
if (GetAsyncKeyState(VK_F6))
{
*(float*)(dwPlayerPointer + ADR_POSITION_X) = x;
*(float*)(dwPlayerPointer + ADR_POSITION_Y) = y;
*(float*)(dwPlayerPointer + ADR_POSITION_Z) = z + 10;
}}}
07/08/2013 08:44 Alisami#4
Quote:
Originally Posted by HackTec View Post
test it with : /code
I do not think that a PlayerPointer is needed to look up the Coordinates of the player.

What exactly do you want to test with your code? Since the variable CH_Teleport is zero, the if conditions wont work - I guess it is just a PART of the whole code.

Still it looks interesting that you have some kind of teleport functionality, even if I do not quite understand why you would teleport the character in the z-axis.

I guess that the Coordinates and the player movements are handled serverside - I will run tests today in the evening or tomorrow.

If this works, we might be able to create a teleport hack in League of Legends!
07/08/2013 14:03 HackTec#5
Quote:
Originally Posted by Alisami View Post
I do not think that a PlayerPointer is needed to look up the Coordinates of the player.

What exactly do you want to test with your code? Since the variable CH_Teleport is zero, the if conditions wont work - I guess it is just a PART of the whole code.

Still it looks interesting that you have some kind of teleport functionality, even if I do not quite understand why you would teleport the character in the z-axis.

I guess that the Coordinates and the player movements are handled serverside - I will run tests today in the evening or tomorrow.

If this works, we might be able to create a teleport hack in League of Legends!
if u want i have a D3D9 Menü Base for u :)
07/08/2013 14:12 NikM#6
You cannot do a teleport cheat in LoL but you can read the enemy stats if they are visible. If they are not visible their stats are frozen.
If you are interested in some more offsets:

Code:
        //Pointer
        private int iLocalEntity                = 0x01CAA104;
        private int iEntityList                 = 0x01CAA7AC;
        private int iGameTime                   = 0x01CA9FE0;
        private int iStats                      = 0x01CAA124;

        //Entity Offsets
        private int iType                       = 0x004;
        private int iUserName                   = 0x02C;
        private int iPositionX                  = 0x068;
        private int iPositionY                  = 0x06C;
        private int iPositionZ                  = 0x070;
        private int iCurrentHealth              = 0x120;
        private int iMaxHealth                  = 0x130;
        private int iCurrentMana                = 0x18C;
        private int iMaxMana                    = 0x19C;
        private int iCharName                   = 0x534;
        private int iCooldownReduction          = 0x5EC;
        private int iTenacity                   = 0x638;
        private int iArmorPenetration           = 0x668;
        private int iMagicPenetration           = 0x66C;
        private int iArmorPenetrationPerCent    = 0x670;
        private int iMagicPenetrationPerCent    = 0x674;
        private int iAdditionalAD               = 0x694;
        private int iAbilityPower               = 0x69C;
        private int iLifeSteal                  = 0x6E8;
        private int iSpellVamp                  = 0x6EC;
        private int iAttackSpeed                = 0x6F8;
        private int iBaseAD                     = 0x6FC;
        private int iCritChance                 = 0x714;
        private int iArmor                      = 0x718;
        private int iMagicResist                = 0x71C;
        private int iHealthReg                  = 0x720;
        private int iManaReg                    = 0x728;
        private int iWalkSpeed                  = 0x72C;
        private int iAttackRange                = 0x730;
        private int iGold                       = 0xF68;
        private int iAllGold                    = 0xF78;
        private int iSpells                     = 0xFD0;
        private int iItemsArray                 = 0xFE0;

        //TimeOffset
        private int iGameTimeOfs                = 0x004;

        //Stats Offsets
        private int iToStats                    = 0x098;
        private int iKills                      = 0x008;
        private int iDeath                      = 0x00C;
        private int iAssists                    = 0x010;
        private int iMinions                    = 0x014;

        private int iIterator                   = 0;
        private int iCurrentPlayer              = 0;

        public bool isLastPlayerFound = false;

        public void SetLocal()
        {
            this.iCurrentPlayer = this.ReadLongInt(this.iLocalEntity);
        }

        public void NextPlayer()
        {
            int iEntitys = this.ReadLongInt(this.iEntityList);

            for (; this.iIterator < this.ReadLongInt(this.iEntityList + 0x04); ++this.iIterator)
            {
                int iTempEntity = this.ReadLongInt(iEntitys + (this.iIterator * 0x04));

                if (iTempEntity != 0 && this.ReadByte (iTempEntity + 0x21) == 0x14)
                {
                    if (this.ReadLongInt(this.iLocalEntity) == iTempEntity) continue;
                    if (this.iCurrentPlayer == iTempEntity) continue;
                    this.iCurrentPlayer = iTempEntity;
                    return;
                }
            }

            this.iIterator = 0;
            this.isLastPlayerFound = true;
        }

        private float toPerCent(float f)
        {
            return (f * 100.0f);
        }

        public string getUserName()
        {
            return (this.ReadStringASCII(this.iCurrentPlayer + this.iUserName, 0x10));
        }

        public string getCharName()
        {
            return (this.ReadStringASCII(this.iCurrentPlayer + this.iCharName, 0x10));
        }

        public float[] getPosition()
        {
            return (this.ReadFloatArray(this.iCurrentPlayer + this.iPositionX, 3));
        }

        public float getCurrentHealth()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iCurrentHealth));
        }

        public float getMaxHealth()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iMaxHealth));
        }

        public float getCurrentMana()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iCurrentMana));
        }

        public float getMaxMana()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iMaxMana));
        }

        public float getCooldownReduction()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iCooldownReduction)) * (-1.0f));
        }

        public float getTenacity()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iTenacity)));
        }

        public float getArmorPenetration()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iArmorPenetration));
        }

        public float getMagicPenetration()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iMagicPenetration));
        }

        public float getArmorPenetrationPerCent()
        {
            return (100.0f - this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iArmorPenetrationPerCent)));
        }

        public float getMagicPenetrationPerCent()
        {
            return (100.0f - this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iMagicPenetrationPerCent)));
        }

        public float getAttackDamage()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iBaseAD) + this.ReadFloat(this.iCurrentPlayer + this.iAdditionalAD));
        }

        public float getAbilityPower()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iAbilityPower));
        }

        public float getLifeSteal()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iLifeSteal)));
        }

        public float getSpellVamp()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iSpellVamp)));
        }

        public float getAttackSpeed()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iAttackSpeed) * 0.625f);
        }

        public float getCritChance()
        {
            return (this.toPerCent(this.ReadFloat(this.iCurrentPlayer + this.iCritChance)));
        }

        public float getArmor()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iArmor));
        }

        public float getMagicResist()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iMagicResist));
        }

        public float getHealthReg()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iHealthReg));
        }

        public float getManaReg()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iManaReg));
        }

        public float getWalkSpeed()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iWalkSpeed));
        }

        public float getAttackRange()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iAttackRange));
        }

        public float getGold()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iGold));
        }

        public float getAllGold()
        {
            return (this.ReadFloat(this.iCurrentPlayer + this.iAllGold));
        }

        public float getGameTime()
        {
            int iTemp = this.ReadLongInt(this.iGameTime);
            return (this.ReadFloat(iTemp + this.iGameTimeOfs));
        }

        public int [] getStats()
        {
            int iTemp = this.ReadLongInt(this.iStats);
            iTemp = this.ReadLongInt(iTemp + this.iToStats);
            return (this.ReadLongIntArray(iTemp + this.iKills, 4));
        }
07/08/2013 21:06 Alisami#7
Quote:
Originally Posted by HackTec View Post
if u want i have a D3D9 Menü Base for u :)
Thanks, but I have access to a really really great D3D9 Menu.

And Thanks NikM, ill try some things with your data!
07/08/2013 21:42 .Dêvile-#8
How I can find adresses? Is there any tutorial here?
07/08/2013 22:52 Samulau#9
Quote:
Originally Posted by Son~Goku View Post
How I can find adresses? Is there any tutorial here?
CheatEngine, OllyDBG :)
Tutorials can be found in YT etc. ^^
07/09/2013 09:14 Wrayzer2#10
how can I use these codes? What do I gain and how do I enable them?
07/09/2013 10:05 SkySurf#11
Don't use them if you have no idee about what's happening here.