[Question] Finding the Player Base Address in C++ menu

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 30
  1. #1
    l0l1dk's Avatar Elite User

    Reputation
    494
    Join Date
    Sep 2010
    Posts
    342
    Thanks G/R
    1/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [Question] Finding the Player Base Address in C++

    How would I find the Player Base Address in C++? I know how to read and write memory in C++, and I've been googling it for a few hours and haven't found anything.

    These ads disappear when you log in.

  2. #2
    hamburger12's Avatar Contributor CoreCoins Purchaser
    Reputation
    86
    Join Date
    Jan 2010
    Posts
    297
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hello! Here is some Code:

    Code:
    DWORD Addr,value;
    HWND Wow = FindWindow(NULL,"World of Warcraft");
    DWORD Pid;
    GetWindowThreadProcessId(Wow,&Pid);
    HANDLE WowHandle = OpenProcess(PROCESS_ALL_ACCESS,0,Pid);
    ReadProcessMemory(WowHandle,(LPVOID)Addr,&value,sizeof(int),0);
    this are all functions you need to read playerbase... and much more!

  3. #3
    l0l1dk's Avatar Elite User

    Reputation
    494
    Join Date
    Sep 2010
    Posts
    342
    Thanks G/R
    1/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I know that, but how would I find it as a specific memory address. Doesn't it change whenever you restart the game?
    Heres the part of my source that I need it for:
    Code:
    LPVOID playerbase = ; // i need the playerbase address right here
    LPVOID address = GetModuleHandle("Wow.exe") + playerbase + 0x1855E2;
    DWORD datasize = sizeof( percent ); // get the size of the new value
    (WriteProcessMemory(hProcess, (LPVOID) address, &percent, datasize, NULL)); // write the new speed
    Last edited by l0l1dk; 12-05-2010 at 02:03 PM.

  4. #4
    hamburger12's Avatar Contributor CoreCoins Purchaser
    Reputation
    86
    Join Date
    Jan 2010
    Posts
    297
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    o.O Playerbase is a Multilevel Pointer. That means you have to read an address that points to annother addres. This looks like this:

    fisrt = Read(PlayerbaseStatic)
    secondlevel = Read(first+offset)
    threadlevel = Read(secondlevel+offset2)
    ...
    The playerbase Pointer is at an Level 3 Pointer. So you have to read 3 Times to get the Right address!

    The playerbase change every new patch that modifies the wow.exe.

  5. #5
    l0l1dk's Avatar Elite User

    Reputation
    494
    Join Date
    Sep 2010
    Posts
    342
    Thanks G/R
    1/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I can get the offsets and PlayerBaseStatic from IDA right?

  6. #6
    hamburger12's Avatar Contributor CoreCoins Purchaser
    Reputation
    86
    Join Date
    Jan 2010
    Posts
    297
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yes but you can also use Cheat Engine. Or have a look at

    http://www.mmowned.com/forums/world-...mp-thread.html

    or you can use this :P

    DWORD PlayerBaseStatic = 0x924720;
    DWORD Offset1 = 0x38;
    DWORD Offset2 = 0x24;

  7. #7
    l0l1dk's Avatar Elite User

    Reputation
    494
    Join Date
    Sep 2010
    Posts
    342
    Thanks G/R
    1/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Heres the part of the source that's not working now:
    Code:
    DWORD PlayerBaseStatic = 0x924720;
    DWORD Offset1 = 0x38;
    DWORD Offset2 = 0x24;
    DWORD playerbase = PlayerBaseStatic + Offset1 + Offset2;
    LPVOID address = GetModuleHandle("Wow.exe") + playerbase + 0x1855E2;
    DWORD datasize = sizeof( percent ); // get the size of the new value
    Writ
    ProcessMemory(hProcess, (LPVOID) address, &percent, datasize, NULL); // write the new speed
    It's not writing to the memory address now. It's not giving errors, its just not doing anything.
    Last edited by l0l1dk; 12-05-2010 at 03:12 PM.

  8. #8
    Neffarian's Avatar Member
    Reputation
    -5
    Join Date
    Sep 2006
    Posts
    53
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    might want to actually learn c++ before you try and start hacking.. just a tip

  9. #9
    l0l1dk's Avatar Elite User

    Reputation
    494
    Join Date
    Sep 2010
    Posts
    342
    Thanks G/R
    1/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I know C++, just new to memory editing.

  10. #10
    _Mike's Avatar Contributor
    Reputation
    310
    Join Date
    Apr 2008
    Posts
    531
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by l0l1dk View Post
    I know C++, just new to memory editing.
    You obviously don't know the win32 api if you claim WriteProcessMem fails without "giving errors".

  11. #11
    l0l1dk's Avatar Elite User

    Reputation
    494
    Join Date
    Sep 2010
    Posts
    342
    Thanks G/R
    1/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I did think of that, but only after I posted.

  12. #12
    _Mike's Avatar Contributor
    Reputation
    310
    Join Date
    Apr 2008
    Posts
    531
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by l0l1dk View Post
    I did think of that, but only after I posted.
    Did you think about the fact that hamburger said it was a multi level pointer?
    If it was as simple as
    DWORD playerbase = PlayerBaseStatic + Offset1 + Offset2;
    don't you think he would have just said "read 0x92477C"?

    Oh, and why are you even using WriteProcessMem to begin with since you're injected? (Or have no clue what GetModuleHandle() does). Just use pointers..

  13. #13
    l0l1dk's Avatar Elite User

    Reputation
    494
    Join Date
    Sep 2010
    Posts
    342
    Thanks G/R
    1/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    yes, yes, and yes, I know what GetModuleHandle does

  14. #14
    _Mike's Avatar Contributor
    Reputation
    310
    Join Date
    Apr 2008
    Posts
    531
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Then I fail to see what the problem is.. This may sound harsh, but if you can't figure out what to do from all the information that's been given to you in this thread then maybe you don't know C as well as you think you do.

  15. #15
    l0l1dk's Avatar Elite User

    Reputation
    494
    Join Date
    Sep 2010
    Posts
    342
    Thanks G/R
    1/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'm working on it. When I try to read or write it says the memory is inaccessable. I'm probably doing something wrong with the pointers. I haven't used multi-level pointers before.
    Last edited by l0l1dk; 12-05-2010 at 06:36 PM.

Page 1 of 2 12 LastLast
All times are GMT -5. The time now is 10:16 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search