Page 1 of 2 12 LastLast
Results 1 to 15 of 20
  1. #1
    Ass007's Avatar
    Join Date
    Jul 2016
    Gender
    male
    Posts
    11
    Reputation
    10
    Thanks
    51

    Automatic offsets (pointers) finder

    How to use:
    1) Launch Trove
    2) Run exe file
    3) Done, you can select and copy offset (pointer) which you need

    The sequence of steps 1 and 2 is not important.
    Worked for 4 updates already. (finder uses big length signatures for uniq, maybe i should make them less, but gamigo will never fix or change anything linked with cheats)

    I was wondered when noticed posts where people were asking for explaining how to find "new pointer", because you can do it with Cheat Engine and youtube for 5 mins.
    <b>Downloadable Files</b> Downloadable Files

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

    11Dara (10-16-2023),1337Leetz0r (11-16-2023),3rd (10-07-2023),ahmedtarek (12-08-2023),Angel_Lok (07-19-2023),ArcticMods (08-04-2023),atcis04 (03-08-2024),b1ank3r (07-19-2023),bartekhej6 (12-17-2023),bladediamond4 (10-17-2023),bluetrove (1 Week Ago),Designwf (12-26-2023),Diidar (4 Weeks Ago),dorkice (10-02-2023),FirWall843 (10-06-2023),gamagagg (10-09-2023),geargmm123 (10-25-2023),Gfbd45 (01-04-2024),grishaaleksander (12-20-2023),hackkaa (09-24-2023),Hillychurl (10-22-2023),HuHuHu0313 (03-09-2024),id5200 (12-01-2023),IhateThisFeature (4 Weeks Ago),jamesadam (07-22-2023),jaykang (4 Weeks Ago),junkwarehere (01-31-2024),kaka80 (03-17-2024),KiroLePlusBeau (07-15-2023),lawsize1 (01-06-2024),Let's Have No Fun (07-23-2023),Lord12c (09-21-2023),Meso_Loner (11-12-2023),mongolos (07-27-2023),OhItsLegend (12-17-2023),Oneshotka (4 Weeks Ago),sashabez (07-14-2023),ShaiiKen (08-17-2023),SIDJEY (12-02-2023),sync7272 (10-08-2023),thaiclups96 (07-14-2023),ThatBenderGuy (4 Weeks Ago),tim2714 (07-18-2023),twotrove (10-06-2023),Vashtetr (4 Weeks Ago),Vienks (02-12-2024),werom13 (10-26-2023),zjunn5447 (08-22-2023),zubiukas (11-14-2023)

  3. #2
    Angel_Lok's Avatar
    Join Date
    Dec 2018
    Gender
    male
    Posts
    6
    Reputation
    10
    Thanks
    2
    Quote Originally Posted by Ass007 View Post
    How to use:
    1) Launch Trove
    2) Run exe file
    3) Done, you can select and copy offset (pointer) which you need

    The sequence of steps 1 and 2 is not important.
    Worked for 4 updates already. (finder uses big length signatures for uniq, maybe i should make them less, but gamigo will never fix or change anything linked with cheats)

    I was wondered when noticed posts where people were asking for explaining how to find "new pointer", because you can do it with Cheat Engine and youtube for 5 mins.
    I can't download it, it says "Invalid Attachment specified. If you followed a valid link, please notify the administrator."

  4. #3
    Ass007's Avatar
    Join Date
    Jul 2016
    Gender
    male
    Posts
    11
    Reputation
    10
    Thanks
    51
    Quote Originally Posted by Angel_Lok View Post
    I can't download it, it says "Invalid Attachment specified. If you followed a valid link, please notify the administrator."
    Attachment not approved yet. Waiting for moderator.

  5. #4
    Ass007's Avatar
    Join Date
    Jul 2016
    Gender
    male
    Posts
    11
    Reputation
    10
    Thanks
    51

    Post Source code

    Since the moderator(s) are lazy to approve the .rar, here is the source

    How to use:
    1 case: open Visual Studio (not Code, real IDE) or CLion (or any other cringe ide), create console project -> put code -> compile -> done
    2 case: open Visual Studio Code or other text editor which can use plugins -> install C++ compiler -> put code in "New file" -> compile -> done

    P.S. Sorry for the cringe code, I'm noob in cpp

    Code:
    #include <iostream>
    #include <vector>
    #include <Windows.h>
    #include <TlHelp32.h>
    
    //big signatures for best guarantee (i just selected random length))
    
    std::vector<int> player_offset_signature =
    {
        0x55, 0x8B, 0xEC, 0x83, 0xE4, 0xF8, 0x83, 0xEC, 0x08, 0xF3, 0x0F, 0x2A, 0x45, 0x10, 0x56, 0x8B, 0xF1,
        0x57, 0x8B, 0x3D
    };
    
    std::vector<int> world_offset_signature =
    {
        0x55, 0x8B, 0xEC, 0x83, 0x7D, 0x08, 0x04, 0x75, 0x10, 0xA1, -1, -1, -1, -1, 0x85, 0xC0, 0x74, 0x07,
        0xC6, 0x80, 0x59, 0x01, 0x00, 0x00, 0x01, 0x5D, 0xC2, 0x04, 0x00
    };
    
    std::vector<int> settings_offset_signature =
    {
        0x89, 0x45, 0xF4, 0x8B, 0x11, 0xFF, 0x52, 0x0C, 0x8B, 0x0D, -1, -1, -1, -1, 0x8B, 0xD8,
        0x6A, 0x03, 0x68, -1, -1, -1, -1, 0x8B, 0x11, 0xFF, 0x52, 0x0C, 0x8B, 0x0D
    };
    
    std::vector<int> chat_state_offset_signature =
    {
        0x8B, 0x0D, -1, -1, -1, -1, 0x6A, 0x00, 0x6A, 0x01, 0xC6, 0x41, 0x20, 0x00, 0xE8, -1,
        -1, -1, -1, 0x6A, 0x08, 0x8D, 0x8D, 0x60, 0xFF, 0xFF, 0xFF, 0xC7, 0x85, 0x60, 0xFF, 0xFF, 0xFF,
        0x00, 0x00, 0x00, 0x00, 0xC7, 0x85, 0x64, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x85, 0x68, 0xFF,
        0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x45, 0xF0, 0x01
    };
    
    HANDLE process_handle = 0;
    int process_id = 0;
    MODULEENTRY32W process_module;
    UINT32 module_address = 0;
    
    void get_process_id(const wchar_t* process_name)
    {
        HANDLE snapshot_handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if (snapshot_handle != INVALID_HANDLE_VALUE)
        {
            PROCESSENTRY32 process_entry;
            process_entry.dwSize = sizeof(process_entry);
    
            if (Process32First(snapshot_handle, &process_entry))
            {
                do
                {
                    if (!_wcsicmp(process_entry.szExeFile, process_name))
                    {
                        process_id = process_entry.th32ProcessID;
                        goto End;
                    }
                } while (Process32Next(snapshot_handle, &process_entry));
    
            }
        }
    End:
        CloseHandle(snapshot_handle);
    }
    
    void get_process_module(const wchar_t* module_name)
    {
        MODULEENTRY32W moduleEntry;
        HANDLE snapshot_handle = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, process_id);
        if (snapshot_handle != INVALID_HANDLE_VALUE)
        {
            MODULEENTRY32 mod_entry;
            mod_entry.dwSize = sizeof(mod_entry);
            if (Module32First(snapshot_handle, &mod_entry))
            {
                do
                {
                    if (!_wcsicmp(mod_entry.szModule, module_name))
                    {
                        process_module = mod_entry;
                        module_address = (UINT32)mod_entry.modBaseAddr;
                        goto End;
                    }
                } while (Module32Next(snapshot_handle, &mod_entry));
            }
        }
    End:
        CloseHandle(snapshot_handle);
    }
    
    int read_int(UINT32 address)
    {
        return ReadProcessMemory(process_handle, (LPCVOID)address, &address, sizeof(int), 0) ? (int)address : 0;
    }
    
    int find_signature_address(std::vector<int> pattern)
    {
        DWORD module_size = process_module.modBaseSize;
        auto buffer = (byte*)malloc(module_size);
        ReadProcessMemory(process_handle, (LPCVOID)module_address, buffer, module_size, 0);
        //ReadProcessMemory(process_handle, module_address, buffer);
        //ReadProcessMemory(process.Handle, moduleAddress, buffer, moduleSize, out _);
    
        int compare = 0;
        UINT32 count = pattern.size();
    
        int first_byte = pattern[0];
        auto is_first_empty = first_byte == -1;
        for (int i = 0; i < module_size; i++)
        {
            if (buffer[i] != first_byte && !is_first_empty) continue;
            for (int g = 1; g < count; g++)
            {
                if (buffer[i + g] != pattern[g] && pattern[g] != -1)
                {
                    compare = 1;
                    break;
                }
    
                compare++;
                if (compare == count)
                {
                    free(buffer);
                    return i + module_address;
                }
            }
        }
    
        free(buffer);
        return 0;
    }
    
    int main()
    {
        SetConsoleTitle(L"Offsets finder");
        get_process_id(L"Trove.exe");
        while (process_id == 0)
        {
            printf("process not found\n");
            Sleep(1000);
            get_process_id(L"Trove.exe");
        }
        printf("process found: %X (%i)\n\n", process_id, process_id);
        get_process_module(L"Trove.exe");
        process_handle = OpenProcess(PROCESS_ALL_ACCESS, NULL, process_id);
    
        UINT32 local_player_offset, world_offset, settings_offset, chat_state_offset;
    
        UINT32 address = find_signature_address(player_offset_signature) + player_offset_signature.size();
        address = read_int(address);
        local_player_offset = address - module_address;
    
        address = find_signature_address(world_offset_signature) + 10;
        address = read_int(address);
        world_offset = address - module_address;
    
        address = find_signature_address(settings_offset_signature) + settings_offset_signature.size();
        address = read_int(address);
        settings_offset = address - module_address;
    
        address = find_signature_address(chat_state_offset_signature) + 2;
        address = read_int(address);
        chat_state_offset = address - module_address;
    
        printf("Local Player offset: %X\nWorld offset: %X\nSettings offset: %X\nChat State offset: %X\n", local_player_offset, world_offset, settings_offset, chat_state_offset);
    
        getchar();
        return 0;
    }
    Last edited by Ass007; 07-15-2023 at 05:33 PM. Reason: small addition

  6. The Following User Says Thank You to Ass007 For This Useful Post:

    jamesadam (07-17-2023)

  7. #5
    Angel_Lok's Avatar
    Join Date
    Dec 2018
    Gender
    male
    Posts
    6
    Reputation
    10
    Thanks
    2
    Quote Originally Posted by Ass007 View Post
    Since the moderator(s) are lazy to approve the .rar, here is the source

    How to use:
    1 case: open Visual Studio (not Code, real IDE) or CLion (or any other cringe ide), create console project -> put code -> compile -> done
    2 case: open Visual Studio Code or other text editor which can use plugins -> install C++ compiler -> put code in "New file" -> compile -> done

    P.S. Sorry for the cringe code, I'm noob in cpp

    Code:
    #include <iostream>
    #include <vector>
    #include <Windows.h>
    #include <TlHelp32.h>
    
    //big signatures for best guarantee (i just selected random length))
    
    std::vector<int> player_offset_signature =
    {
        0x55, 0x8B, 0xEC, 0x83, 0xE4, 0xF8, 0x83, 0xEC, 0x08, 0xF3, 0x0F, 0x2A, 0x45, 0x10, 0x56, 0x8B, 0xF1,
        0x57, 0x8B, 0x3D
    };
    
    std::vector<int> world_offset_signature =
    {
        0x55, 0x8B, 0xEC, 0x83, 0x7D, 0x08, 0x04, 0x75, 0x10, 0xA1, -1, -1, -1, -1, 0x85, 0xC0, 0x74, 0x07,
        0xC6, 0x80, 0x59, 0x01, 0x00, 0x00, 0x01, 0x5D, 0xC2, 0x04, 0x00
    };
    
    std::vector<int> settings_offset_signature =
    {
        0x89, 0x45, 0xF4, 0x8B, 0x11, 0xFF, 0x52, 0x0C, 0x8B, 0x0D, -1, -1, -1, -1, 0x8B, 0xD8,
        0x6A, 0x03, 0x68, -1, -1, -1, -1, 0x8B, 0x11, 0xFF, 0x52, 0x0C, 0x8B, 0x0D
    };
    
    std::vector<int> chat_state_offset_signature =
    {
        0x8B, 0x0D, -1, -1, -1, -1, 0x6A, 0x00, 0x6A, 0x01, 0xC6, 0x41, 0x20, 0x00, 0xE8, -1,
        -1, -1, -1, 0x6A, 0x08, 0x8D, 0x8D, 0x60, 0xFF, 0xFF, 0xFF, 0xC7, 0x85, 0x60, 0xFF, 0xFF, 0xFF,
        0x00, 0x00, 0x00, 0x00, 0xC7, 0x85, 0x64, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x85, 0x68, 0xFF,
        0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x45, 0xF0, 0x01
    };
    
    HANDLE process_handle = 0;
    int process_id = 0;
    MODULEENTRY32W process_module;
    UINT32 module_address = 0;
    
    void get_process_id(const wchar_t* process_name)
    {
        HANDLE snapshot_handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if (snapshot_handle != INVALID_HANDLE_VALUE)
        {
            PROCESSENTRY32 process_entry;
            process_entry.dwSize = sizeof(process_entry);
    
            if (Process32First(snapshot_handle, &process_entry))
            {
                do
                {
                    if (!_wcsicmp(process_entry.szExeFile, process_name))
                    {
                        process_id = process_entry.th32ProcessID;
                        goto End;
                    }
                } while (Process32Next(snapshot_handle, &process_entry));
    
            }
        }
    End:
        CloseHandle(snapshot_handle);
    }
    
    void get_process_module(const wchar_t* module_name)
    {
        MODULEENTRY32W moduleEntry;
        HANDLE snapshot_handle = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, process_id);
        if (snapshot_handle != INVALID_HANDLE_VALUE)
        {
            MODULEENTRY32 mod_entry;
            mod_entry.dwSize = sizeof(mod_entry);
            if (Module32First(snapshot_handle, &mod_entry))
            {
                do
                {
                    if (!_wcsicmp(mod_entry.szModule, module_name))
                    {
                        process_module = mod_entry;
                        module_address = (UINT32)mod_entry.modBaseAddr;
                        goto End;
                    }
                } while (Module32Next(snapshot_handle, &mod_entry));
            }
        }
    End:
        CloseHandle(snapshot_handle);
    }
    
    int read_int(UINT32 address)
    {
        return ReadProcessMemory(process_handle, (LPCVOID)address, &address, sizeof(int), 0) ? (int)address : 0;
    }
    
    int find_signature_address(std::vector<int> pattern)
    {
        DWORD module_size = process_module.modBaseSize;
        auto buffer = (byte*)malloc(module_size);
        ReadProcessMemory(process_handle, (LPCVOID)module_address, buffer, module_size, 0);
        //ReadProcessMemory(process_handle, module_address, buffer);
        //ReadProcessMemory(process.Handle, moduleAddress, buffer, moduleSize, out _);
    
        int compare = 0;
        UINT32 count = pattern.size();
    
        int first_byte = pattern[0];
        auto is_first_empty = first_byte == -1;
        for (int i = 0; i < module_size; i++)
        {
            if (buffer[i] != first_byte && !is_first_empty) continue;
            for (int g = 1; g < count; g++)
            {
                if (buffer[i + g] != pattern[g] && pattern[g] != -1)
                {
                    compare = 1;
                    break;
                }
    
                compare++;
                if (compare == count)
                {
                    free(buffer);
                    return i + module_address;
                }
            }
        }
    
        free(buffer);
        return 0;
    }
    
    int main()
    {
        SetConsoleTitle(L"Offsets finder");
        get_process_id(L"Trove.exe");
        while (process_id == 0)
        {
            printf("process not found\n");
            Sleep(1000);
            get_process_id(L"Trove.exe");
        }
        printf("process found: %X (%i)\n\n", process_id, process_id);
        get_process_module(L"Trove.exe");
        process_handle = OpenProcess(PROCESS_ALL_ACCESS, NULL, process_id);
    
        UINT32 local_player_offset, world_offset, settings_offset, chat_state_offset;
    
        UINT32 address = find_signature_address(player_offset_signature) + player_offset_signature.size();
        address = read_int(address);
        local_player_offset = address - module_address;
    
        address = find_signature_address(world_offset_signature) + 10;
        address = read_int(address);
        world_offset = address - module_address;
    
        address = find_signature_address(settings_offset_signature) + settings_offset_signature.size();
        address = read_int(address);
        settings_offset = address - module_address;
    
        address = find_signature_address(chat_state_offset_signature) + 2;
        address = read_int(address);
        chat_state_offset = address - module_address;
    
        printf("Local Player offset: %X\nWorld offset: %X\nSettings offset: %X\nChat State offset: %X\n", local_player_offset, world_offset, settings_offset, chat_state_offset);
    
        getchar();
        return 0;
    }
    Why when I put this code in VS I have error "cannot open source file "iostream". Please run the 'Select IntelliSense Configuration...' command to locate your system headers." "cannot open source file "Windows.h" "cannot open source file "TlHelp32.h". What do I need to remove these errors?

  8. #6
    miNysus's Avatar
    Join Date
    Jul 2023
    Gender
    male
    Posts
    2
    Reputation
    10
    Thanks
    0

    question about offsets

    Quote Originally Posted by Ass007 View Post
    How to use:
    1) Launch Trove
    2) Run exe file
    3) Done, you can select and copy offset (pointer) which you need

    The sequence of steps 1 and 2 is not important.
    Worked for 4 updates already. (finder uses big length signatures for uniq, maybe i should make them less, but gamigo will never fix or change anything linked with cheats)

    I was wondered when noticed posts where people were asking for explaining how to find "new pointer", because you can do it with Cheat Engine and youtube for 5 mins.
    Like when I open this .exe file there's 4 offsets(local player,world,settings,chat state)what type of those offsets is Pointer that I need for fishing bot, and still I need to find StateWaterOffset and WaterOffset by myself right?

  9. #7
    Let's Have No Fun's Avatar
    Join Date
    Jan 2022
    Gender
    male
    Location
    Not a funny place
    Posts
    6
    Reputation
    10
    Thanks
    1
    Quote Originally Posted by miNysus View Post
    Like when I open this .exe file there's 4 offsets(local player,world,settings,chat state)what type of those offsets is Pointer that I need for fishing bot, and still I need to find StateWaterOffset and WaterOffset by myself right?
    I have the same issue, I'm using Nippy, (sorry that may be a dumb question) but don't you need the other pointers as well ? Such as these :

    Pointer=
    WaterOffset=
    ChocoOffset=
    LavaOffset=
    PlasmaOffset=
    StateWaterOffset=
    StateChocoOffset=
    StateLavaOffset=
    StatePlasmaOffset=

    I'm sorta stuck without these

  10. #8
    miNysus's Avatar
    Join Date
    Jul 2023
    Gender
    male
    Posts
    2
    Reputation
    10
    Thanks
    0
    Quote Originally Posted by Let's Have No Fun View Post
    I have the same issue, I'm using Nippy, (sorry that may be a dumb question) but don't you need the other pointers as well ? Such as these :

    Pointer=
    WaterOffset=
    ChocoOffset=
    LavaOffset=
    PlasmaOffset=
    StateWaterOffset=
    StateChocoOffset=
    StateLavaOffset=
    StatePlasmaOffset=

    I'm sorta stuck without these
    If you need to catch other fish not only from water you need other offsets

  11. #9
    jamesadam's Avatar
    Join Date
    Oct 2011
    Gender
    male
    Posts
    49
    Reputation
    10
    Thanks
    9
    **removed reply since i tested what i said and it still didnt work for finding fishing base pointer + offset so dont want to confuse anyone**
    Last edited by jamesadam; 07-23-2023 at 11:31 AM.

  12. #10
    Let's Have No Fun's Avatar
    Join Date
    Jan 2022
    Gender
    male
    Location
    Not a funny place
    Posts
    6
    Reputation
    10
    Thanks
    1
    Quote Originally Posted by miNysus View Post
    If you need to catch other fish not only from water you need other offsets
    But it doesn't even provide water offsets ? I'm a bit confused.. :'o

  13. #11
    3rd's Avatar
    Join Date
    Sep 2012
    Gender
    male
    Posts
    26
    Reputation
    10
    Thanks
    3
    for fishing its usles

  14. #12
    azamdanius's Avatar
    Join Date
    Nov 2020
    Gender
    male
    Posts
    12
    Reputation
    10
    Thanks
    0
    Привет. Почему-то не работает поинтер на флай, offset, все перепробовал с твоей программой, ни 1 код не подходит

  15. #13
    hackkaa's Avatar
    Join Date
    Sep 2023
    Gender
    male
    Posts
    4
    Reputation
    10
    Thanks
    0
    Need offers ms speed pls help
    Trove Movement Speed hack via STAT.

  16. #14
    Ass007's Avatar
    Join Date
    Jul 2016
    Gender
    male
    Posts
    11
    Reputation
    10
    Thanks
    51
    Prog works as before, gamigo added some vars so last offsets changed
    Last edited by Ass007; 10-07-2023 at 03:33 PM.

  17. #15
    azamdanius's Avatar
    Join Date
    Nov 2020
    Gender
    male
    Posts
    12
    Reputation
    10
    Thanks
    0
    offset code doesn't work

Page 1 of 2 12 LastLast

Similar Threads

  1. [Release] Some Basic Offsets + Pointers
    By Swag in forum CrossFire Europe Hack Source Code
    Replies: 5
    Last Post: 01-08-2012, 02:00 AM
  2. Some Offsets&Pointer [Source Codes]
    By CrossfireEU in forum CrossFire Europe Hack Source Code
    Replies: 13
    Last Post: 10-19-2011, 12:07 PM
  3. Automatic D3D9 Pointer Return
    By -Dimensions- in forum Combat Arms Coding Help & Discussion
    Replies: 5
    Last Post: 07-06-2011, 01:02 PM
  4. [Source Code] D3D Device Pointer Finder
    By supercarz1991 in forum Combat Arms Hack Coding / Programming / Source Code
    Replies: 15
    Last Post: 11-22-2010, 12:17 AM
  5. My UCE pointer finder works but how do i find pointer in WarRock?
    By scooby107 in forum WarRock - International Hacks
    Replies: 9
    Last Post: 05-01-2007, 01:14 PM