THREAD: Creating an RTM Tool in C#: Part 2 (Clients)
  1. 10-11-2015, 06:05 AM
    Freezee's Avatar
    Freezee
    Bounty hunter
    Freezee's Avatar
    Freezee
    Bounty hunter
    172
    Posts
    1,116
    Reputation
    Jan 2015
    NextGenUpdate
    Introduction


    This tutorial is for those who are need help adding Client Modifications for their tools.






    Creating / Loading your project


    You want to Create or Load a Project in your Visual Studio IDE, If you need help on Creating a Form or Connect and Attach Buttons, Check out my other tutorialYou must login or register to view this content..





    Getting Client names
    We can use a few different objects to display the clients name, we will use a label, and I'll explain using it on a 'Awesome faceata Grid View' object.

    Go into your toolbox and drag a Label onto your form, this will be used to display the clients name. Also drag a Button onto your form, we will use this to get the names.




    byte[] Client0 = new byte[24]; //Gets the Bytes of the defined offset below, It's [24] because of the character length of the players name.

    YourAPI.GetMemory(0x0110D694, Client0); //Getting the Memory of Client 0.

    string Client0Name = Encoding.ASCII.GetString(Client0); //Gets the String of Client 0's name.

    YourLabelName.Text = Client0Name; //Changing your Label(s) text to the Players name.





    You can use a 'Awesome faceataGridView' with this.


    uint CalculateAddress(uint Address, int Client, uint Offset)
    {
    //This adds up address + the offset (aka mod).
    //Then adds the client number, * by the size of the structure which in this case is 0x5808.
    //Then returns the total value.
    return Address + Offset + ((uint)Client * 0x580Cool Man (aka Tustin);
    }



    for (int i = 0; i < 18; i++)// Loops from 0 - 17, since we have 18 clients, player 1 is client 0, player 18 is client 17.
    {
    uint AddressToRead = CalculateAddress(0x01780F28, i, 0x5544);//Address is our client 0 main address, i is the client number which increases, 0x5544 is the Name offset.
    string PlayersName = YourAPI.Extension.ReadString(AddressToRead);//Read the name from the address
    dataGridView1.Rows.Add(PlayersName); // Adds items to DataGridView
    }







    Client Addresses:
    Client 0: 0x0110D694
    Client 1: 0x01111014
    Client 2: 0x01114994
    Client 3: 0x01118314
    Client 4: 0x0111BC94
    Client 5: 0x0111F614
    Client 6: 0x01122F94
    Client 7: 0x01126914
    Client 8: 0x0112A294
    Client 9: 0x0112DC14
    Client 10: 0x01131594
    Client 11: 0x01134F14
    Client 12: 0x01138894
    Client 13: 0x0113C214
    Client 14: 0x0113FB94
    Client 15: 0x01143514
    Client 16: 0x01146E94
    Client 17: 0x0114A814
    [/COLOR]




    Giving Client Modifications


    We will make a God Mode Function for Client 0. Drag an Object onto your Form (Check-box, Radio-Button, Button etc.) and Click It.

    As Always, There are explanations and code snippets.

    Byte[] bytes = new Byte[] { 0xFF }; //Defines the byte (0xFF enables godmode).
    YourAPIName.SetMemory(0x0FCA41E, bytes); // 0x0FCA41E is the offset, "bytes" is 0xFF.

    Byte[] bytes = new Byte[] { 0x00 }; //Defines the byte (0x00 disables godmode)
    YourAPIName.SetMemory(0x0FCA41E, bytes); //Same exact thing as above.


    You can do other things to get it to work with datagridview, I'll leave that too the user to decide.




    Definitions and Offsets

    Definitions!

    Spoiler:
    What are Clients?

    It's a player or a 'client' that connects to the server.



    Offsets

    Spoiler:


    Credits to whomever found these.

    client 0: 0x0110A29C
    health: 0x0FCA41E
    ammo: 0x0110a62b
    vision: 0x0110a293
    primary weapon: 0x0110A4FF
    secondary weapon: 0x0110A4F7

    client 1: 0x0110DC1C
    health: 0x00fca69e
    ammo: 0x110DFAB
    vision: 0x110DC13
    primary weapon: 0x110DE7F
    secondary weapon: 0x110DE77

    client 2: 0x0111159C
    health: 0xFCA91E
    ammo: 0x111192B
    vision: 0x1111593
    primary weapon: 0x11117FF
    secondary weapon: 0x11117F7

    client 3: 0x01114F1C
    health: 0xFCAB9E
    ammo: 0x11152AB
    vision: 0x1114F13
    primary weapon: 0x111517F
    secondary weapon: 0x1115177

    client 4: 0x0111889C
    health: 0xFCAE1E
    ammo: 0x1118C2B
    vision: 0x1118893
    primary weapon: 0x1118AFF
    secondary weapon: 0x1118AF7

    client 5: 0x0111C21C
    health: 0xFCB09E
    ammo: 0x111C5AB
    vision: 0x111C213
    primary: 0x111C47F
    secondary: 0x111C477


    client 6: 0x0111FB9C
    health: 0xFCB31E
    ammo: 0x111FF2B
    vision: 0x111FB93
    primary: 0x111FDFF
    secondary: 0x111FDF7

    client 7: 0x0112351C
    health: 0xFCB59E
    ammo: 0x11238AB
    vison: 0x1123513
    primary: 0x112377F
    secondary: 0x1123777

    client 8: 0x01126E9C
    health: 0xFCB81E
    ammo: 0x112722B
    vison: 0x1126E93
    primary: 0x11270FF
    secondary: 0x11270F7

    client 9: 0x0112A81C
    health: 0xFCBA9E
    ammo: 0x112ABAB
    vision: 0x112A813
    primary: 0x112AA7F
    secondary: 0x112AA77

    client 10: 0x0112E19C
    health: 0xFCBD1E
    ammo: 0x112E52B
    vision: 0x112E193
    primary: 0x112E3FF
    secondary: 0x112E3F7

    client 11: 0x01131B1C
    health: 0xFCBF9E
    ammo: 0x1131EAB
    vision: 0x1131B13
    primary: 0x1131D7F
    secondary: 0x1131D77

    client 12: 0x0113549C
    health: 0xFCC21E
    ammo: 0x113582B
    vision: 0x1135493
    primary: 0x11356FF
    secondary: 0x11356F7

    client 13: 0x1138E1C
    health: 0xFCC49E
    ammo: 0x11391AB
    vision: 0x1138E13
    primary: 0x113907F
    secondary: 0x1139077

    client 14: 0x113C79C
    health: 0xFCC71E
    ammo: 0x113CB2B
    vision: 0x113C793
    primary: 0x113C9FF
    secondary: 0x113C9F7

    client 15: 0x114011C
    health: 0xFCC99E
    ammo: 0x11404AB
    vision: 0x1140113
    primary: 0x114037F
    secondary: 0x1140377

    client 16: 0x1143A9C
    health: 0xFCCC1E
    ammo: 0x1143E2B
    vision: 0x1143A93
    primary: 0x1143CFF
    secondary: 0x1143CF7

    client 17: 0x114741C
    health: 0xFCCE9E
    ammo: 0x11477AB
    vision: 0x1147413
    primary: 0x114767F
    secondary: 0x1147677




    Thanks to You must login or register to view this content.
    Last edited by Freezee ; 04-25-2017 at 01:12 AM. Reason: Changed layout.

  2. The Following 2 Users Say Thank You to Freezee For This Useful Post:

    ,

  3. 10-25-2015, 07:05 AM
    LovleyPurpz's Avatar
    LovleyPurpz
    Save Point
    LovleyPurpz's Avatar
    LovleyPurpz
    Save Point
    8
    Posts
    30
    Reputation
    Oct 2015
    NextGenUpdate
    Why only one person thanks this
  4. 10-29-2015, 03:27 AM
    Freezee's Avatar
    Freezee
    Bounty hunter
    Freezee's Avatar
    Freezee
    Bounty hunter
    172
    Posts
    1,116
    Reputation
    Jan 2015
    NextGenUpdate
    Originally Posted by LovleyPurpz View Post
    Why only one person thanks this


    You tell me.
  5. 10-31-2015, 05:01 PM
    Bch's Avatar
    Bch
    Guest
    Bch's Avatar
    Bch
    Guest
    n/a
    Posts
    n/a
    Reputation
    Once upon a time...
    NextGenUpdate
    Originally Posted by Freezee View Post
    You tell me.


    Heres some suggestions/improvements..
    1) The locations you are writing to memory are called "Addresses". They are commonly known in the modding community as "offsets", however an offset describes a value in relation to another value. Therefore in regards to call of duty, an example could be the clients. Lets call client 0 (0x01780F2Cool Man (aka Tustin) our main address and our client 0's name address is 0x178646C. Therefore, our client 0's name offset is the value in relation to our main address. Therefore we do name address (0x178646C) - main address (0x01780F28= our offset, which in this case is 0x5544. (BO2 Addresses)

    2) How it's stored in memory, each "client" is stored as a structure. A specific sequence in memory, which has a certain size. The following i got from a BO2 1,19 offset thread so credit to them;
    playerState - 0x01780F28 //This is our "main" client 0 Address. Where the structure starts.
    playerState_size - 0x5808 //This is the size of the structure. The structure is replicated in memory 18 times (max number of players in a game). Which stores information about each individual client.

    Name in Game - 0x5544 //Offset in relation to our Address
    Clantag - 0x55B0
    Health - 0x18
    ButtonMonitoring - 0x569C
    Freeze Player - 0x5694
    Kill Player - 0x30
    Speed - 0x54F0
    Lag - 0x543B
    Perks - 0x548
    3rd Person - 0x84
    Invisible - 0xFD
    TeleportPlayer - 0x28
    Change Team - 0x5507
    Earthquake - 0x15F
    Origin - 0x28
    Alive - 0x55D0
    Angles - 0x56BC
    PrimaryAmmo - 0x43C
    SecondaryAmmo - 0x438
    LethalAmmo - 0x440
    Killstreak 1 - 0x42B
    Killstreak 2 - 0x4302
    Killstreak 3 - 0x434
    PrimmaryCamo - 0x2A3
    SecondaryCamo - 0x2DB
    Auto Prone - 0x57F0

    So seems as all clients are identical in memory. We can create a simple function which will do the maths for us, and save us alot of time and memory storing all addresses.
    uint CalculateAddress(uint Address, int Client, uint Offset)
    {

    //This adds up address + the offset (aka mod).
    //Then adds the client number, * by the size of the structure which in this case is 0x5808.
    //Then returns the total value.

    return Address + Offset + ((uint)Client * 0x580Cool Man (aka Tustin);

    }

    PS3API PS3 = new PS3API(SelectAPI.ControlConsole);//Create an instance of PS3API and set the default to CCAPI.

    Then you can simply use it as follows, in this case it will simply populate a list box.

    listbox1.Items.Clear();//Empty the listbox
    for (int i = 0; i < 18; i++)//Loop from 0-17, because you can have 18 clients.
    {
    //I will break this into steps to make it clearer, but you could put it all in one line
    uint AddressToRead = CalculateAddress(0x01780F28, i, 0x5544);//Address is our client 0 main address, i is the client number which increases, 0x5544 is the Name offset.
    string PlayersName = PS3.Extension.ReadString(AddressToRead);//Read the name from the address
    listbox1.Items.Add(PlayersName);//Add the players name to the list box.

    }
    Last edited by Bch ; 10-31-2015 at 06:46 PM.

  6. 01-14-2016, 10:41 PM
    28
    Posts
    190
    Reputation
    Jan 2016
    NextGenUpdate
    Thank You
  7. 04-25-2017, 07:33 AM
    Freezee's Avatar
    Freezee
    Bounty hunter
    Freezee's Avatar
    Freezee
    Bounty hunter
    172
    Posts
    1,116
    Reputation
    Jan 2015
    NextGenUpdate
    Updated to change the layout and fixed some text / wording issues;.