Results 1 to 7 of 7
  1. #1
    tommypxl's Avatar
    Join Date
    May 2017
    Gender
    male
    Posts
    236
    Reputation
    10
    Thanks
    368
    My Mood
    Cheerful

    Question Could someone explain what an offset is?

    These are needed for games, jailbreaks, etc.
    1) What are they?
    2) Why do we need them?
    3) Why do they get updated every patch/update?

  2. #2
    Zaczero's Avatar
    Join Date
    Oct 2013
    Gender
    male
    Location
    localhost
    Posts
    3,288
    Reputation
    1517
    Thanks
    14,262
    My Mood
    Angelic
    Quote Originally Posted by tommypxl View Post
    These are needed for games, jailbreaks, etc.
    1) What are they?
    2) Why do we need them?
    3) Why do they get updated every patch/update?
    1)
    Offset is a value delta
    For example:
    x1 = 2
    x2 = 6
    Δx = 4 <-- offset for x1 to get x2 (x1 + Δx = x2)

    2)
    All variables got their place in the memory
    For example:
    Player health is stored at 0x10A000 runtime
    When we get the base address of the process (0x100000 in this example)
    we can calculate the delta (aka. offset) for the health so it will work every application launch
    0x10A000 - 0x100000 = 0xA000 <--- offset for health
    We need them to locate that variable in memory and modify it

    ~Note: it's a REALLY basic example, some offsets got multiple levels and they are not that easy to find

    3)
    Application structures / functions can be changed so we have to find new offsets.
    They CAN change but don't have to. Depends what changes are made to the app / game.



    Example before update:

    Code:
    struct Player {
        int health;
        float x;
        float y;
        float z;
        int team; <-- we want this
    }
    To get the team variable in this structure we need a 0x4 + 0x4 * 3 = 0x10 offset



    Example after update:

    Code:
    struct Player {
        int health;
        float x;
        float y;
        float z;
        int state; <-- offset points here
        int team;
    }
    Now the 0x10 offset points to state variable which is wrong!
    We have to find the new offset which will be 0x14 now
    Last edited by Zaczero; 12-14-2017 at 01:48 PM.
    . . . malsignature.com . . .



    [ global rules ] [ scam report ] [ image title ] [ name change ] [ anime force ]
    [ league of legends marketplace rules ] [ battlefield marketplace rules ]

    "because everytime you post a picture of anime in here
    your virginity's time increases by 1 month"
    ~Smoke 2/18/2018


    Former Staff 09-29-2018
    Battlefield Minion 07-21-2018
    Premium Seller 03-04-2018
    Publicist 12-10-2017
    League of Legends Minion 05-31-2017
    Premium 02-05-2017
    Member 10-13-2013

  3. The Following User Says Thank You to Zaczero For This Useful Post:

    ReapersDeath2 (12-18-2017)

  4. #3
    Threadstarter
    Advanced Member
    tommypxl's Avatar
    Join Date
    May 2017
    Gender
    male
    Posts
    236
    Reputation
    10
    Thanks
    368
    My Mood
    Cheerful
    Wow! Thank you so much for this detail!

  5. The Following User Says Thank You to tommypxl For This Useful Post:

    Zaczero (12-15-2017)

  6. #4
    sgbadman's Avatar
    Join Date
    Mar 2013
    Gender
    male
    Posts
    124
    Reputation
    18
    Thanks
    34
    Why do we often define an offeset as DWORD? I've never really understood why we do that I just do it haha.

  7. #5
    Zaczero's Avatar
    Join Date
    Oct 2013
    Gender
    male
    Location
    localhost
    Posts
    3,288
    Reputation
    1517
    Thanks
    14,262
    My Mood
    Angelic
    Quote Originally Posted by sgbadman View Post
    Why do we often define an offeset as DWORD? I've never really understood why we do that I just do it haha.
    "DWORD is not a C++ type, it's defined in <windows.h>.

    The reason is that DWORD has a specific range and format Windows functions rely on, so if you require that specific range use that type. (Or as they say "When in Rome, do as the Romans do.") For you, that happens to correspond to unsigned int, but that might not always be the case. To be safe, use DWORD when a DWORD is expected, regardless of what it may actually be." ~~ GManNickG
    . . . malsignature.com . . .



    [ global rules ] [ scam report ] [ image title ] [ name change ] [ anime force ]
    [ league of legends marketplace rules ] [ battlefield marketplace rules ]

    "because everytime you post a picture of anime in here
    your virginity's time increases by 1 month"
    ~Smoke 2/18/2018


    Former Staff 09-29-2018
    Battlefield Minion 07-21-2018
    Premium Seller 03-04-2018
    Publicist 12-10-2017
    League of Legends Minion 05-31-2017
    Premium 02-05-2017
    Member 10-13-2013

  8. The Following User Says Thank You to Zaczero For This Useful Post:

    sgbadman (12-18-2017)

  9. #6
    sgbadman's Avatar
    Join Date
    Mar 2013
    Gender
    male
    Posts
    124
    Reputation
    18
    Thanks
    34
    Thanks!, That would actually explain a few things haah. Great help .

  10. #7
    Hell_Demon's Avatar
    Join Date
    Mar 2008
    Gender
    male
    Location
    I love causing havoc
    Posts
    3,976
    Reputation
    343
    Thanks
    4,320
    My Mood
    Cheeky
    Quote Originally Posted by Zaczero View Post
    "DWORD is not a C++ type, it's defined in <windows.h>.

    The reason is that DWORD has a specific range and format Windows functions rely on, so if you require that specific range use that type. (Or as they say "When in Rome, do as the Romans do.") For you, that happens to correspond to unsigned int, but that might not always be the case. To be safe, use DWORD when a DWORD is expected, regardless of what it may actually be." ~~ GManNickG
    Just a note; DWORD is an unsigned long, not an unsigned int. There is a difference, and this is both compiler and platform dependent.

    MSVC uses what is called the LLP64 model, which means both int and long are 32-bits, even in 64-bit mode.
    GCC uses what is called the LP64 model, which means that int is 32-bits but long are 64-bits under 64-bit mode.
    Ah we-a blaze the fyah, make it bun dem!

Similar Threads

  1. [Solved] Could someone explain to me what this is?
    By Invader_Zim in forum Realm of the Mad God Help & Requests
    Replies: 9
    Last Post: 07-09-2016, 05:45 AM
  2. [Discussion] Can someone explain what this is?
    By Barnys in forum Alliance of Valiant Arms (AVA) Discussions
    Replies: 3
    Last Post: 04-30-2011, 06:46 AM
  3. Replies: 35
    Last Post: 01-03-2011, 10:11 PM
  4. Could someone explain me what are addies?
    By C4P in forum Combat Arms EU Hack Coding/Source Code
    Replies: 7
    Last Post: 08-04-2010, 09:39 PM
  5. COULD SOMEONE EXPLAIN THIS TO ME!!
    By Eyheahaehaehaerherh in forum Combat Arms Hacks & Cheats
    Replies: 0
    Last Post: 02-28-2009, 11:32 AM