• Amused
  • Angry
  • Annoyed
  • Awesome
  • Bemused
  • Cocky
  • Cool
  • Crazy
  • Crying
  • Down
  • Drunk
  • Embarrased
  • Enraged
  • Friendly
  • Geeky
  • Godly
  • Happy
  • Hateful
  • Hungry
  • Innocent
  • Meh
  • Piratey
  • Poorly
  • Sad
  • Secret
  • Shy
  • Sneaky
  • Tired
  • Wtf
  • At Work
  • CodenzHub
  • Coding
  • Deejaying
  • Donating
  • Drinking
  • Eating
  • Editing
  • Hacking
  • Hate Mailing
  • Jamin'
  • Lagging
  • Live Streaming
  • Lurking
  • No Status
  • Pawning
  • PC Gaming
  • PS Gaming
  • Raging
  • Reversing
  • Sleeping
  • Steam Gaming
  • Trolling
  • TwitchStreamer
  • Vodka!
  • Watching TV/Movie
  • Xbox Gaming
  • Youtuber
  • Zombies
  • Results 1 to 5 of 5
    1. #1
      Coder
      Learning to hack games!
       
      Feeling Normal
       
      BlackPitchPL's Avatar
      Join Date
      May 2012
      Location
      POLAND
      Posts
      171
      Thanks (-->)
      1
      Thanks (<--)
      14

      [TuT]BlackPitchPL - Multi Level pointer and reclass

      Silent VPN
      Hello

      I want to show you how easy we can make some dll hack.

      Tools we need :

      1 . Game to Hack :P
      2. Re Class - Drunken Cheat ( you can find it on UC_Forum)
      3. CheatEngine
      4. A bit of c++ knowledge .
      5. Brain and some VisualStudio or other program to dbg or release our dll

      First step :

      For our DLL hack we need to find Base address and offset ( this tutorial is only about multilvl pointers and reclass so if u don't know how to get base just fallow Fleep tutorial). I assume that you found your base in CE (CheatEngine) so you can see if it's point's to correct value and it's correct itself.

      Second Step:

      Now we open reclass ( DrunkenCheat) and attach to process (this tutorial also don't include how to use this program just watch any tutorial on You2b). After you done this create new class and name it like PlayerInfo and give this class address that you found in CE but not the final address. What i mean is that if your base is

      Code:
      Base = 12121212
      Ofs1 = 0x10 Ofs2 = 0x20 Ofs3 = 0x30 OfsHealth = 0x40 
      
      //So your class base address is Base+ofs1+ofs2+ofs3 dont add last one
      Now just name all data you want include in class and generate class ( copy it or save it).

      Third step:

      Now we have all data that we need to create simple DLL hack
      (Credit: DrunkenCheat Fleep unknowcheat's)

      so let's make some new project ( i use VisualStudio 2012) take empty project .

      Main.cpp
      Code:
      #include <Windows.h>
      #include "Class.h"
      
      
      
      
      DWORD WINAPI Hacks(LPVOID lpArgs)
      {
          while(1)
          {
              if(Player)
              {
                  
                  if(GetAsyncKeyState(VK_F5)&1) //If F5 is pressed
                  {
                      Player->Health = 100; // We don't use Write process memory function coz it make game buggy simple way is to use class
                  }
                   if(GetAsyncKeyState(VK_F6)&1) //If F5 is pressed
                  {
                      Player->Speed = 100000.f;
                  }
              }
          }
      
      
          return true;
      }
      
      
      bool WINAPI DllMain(HMODULE hModule, DWORD Reason,LPVOID lpReserved)
      {
          switch(Reason)
          {
          case DLL_PROCESS_ATTACH:
              CreateThread(NULL,0,Hacks,NULL,0,NULL);
              break;
          case DLL_PROCESS_DETACH:
              break;
          }
          return true;
      }
      now lets move to Header and make one ( i name it class) Copy our reclass class to this file
      Class.h
      Code:
      #include <Windows.h>
      
      class PlayerInfo;
      class PlayerInfo
      {
      public:
      char _0x0000[128];
          float Z_pos; //0x0080 
          float X_Pos; //0x0084 
          float Y_Pos; //0x0088 
      char _0x008C[848];
          float Jump; //0x03DC 
      char _0x03E0[44];
          __int8 Health; //0x040C 
      char _0x040D[1527];
          float Speed; //0x0A04 
      char _0x0A08[252];
          __int8 EQ_0; //0x0B04 Only Visual
      char _0x0B05[3];
          __int8 EQ_1; //0x0B08 Only Visual
      char _0x0B09[3];
          __int8 EQ_2; //0x0B0C Only Visual
      char _0x0B0D[3];
          __int8 EQ_3; //0x0B10 Only Visual
      
      
      };//Size=0x0B11
      extern PlayerInfo * Player;
      And for the last one move to source and add new file cpp

      Base.cpp
      Code:
      #include "Class.h"
      
      
      DWORD BaseAddress = {0x10C923C0}; // Static Base
      DWORD hackOffsets[] = { 0x10, 0x4C, 0x30}; //3 LEVEL pointer
      
      
      //This function is from Fleep source
      DWORD FindDmaAddy(int PointerLevel, DWORD Offsets[], DWORD BaseAddress)
      {
          //DEFINES OUR ADDRESS to write to 
          //if statements are crucial to make sure that the address is valid to write 
          //otherwise we crash. Address will not be valid when things like map changes or game loads are happening
          DWORD Ptr = *(DWORD*)(BaseAddress); //Base Address
          if(Ptr == 0) return NULL;//prevent crash
      
      
          //this is done to allow us to have pointers up to many levels e.g.10 
          for(int i = 0; i < PointerLevel; i ++)
          {
              //if it = PointerLevel-1 then it reached the last element of the array
              //therefore check if that address plus the offset is valid and leave the loop
              if(i == PointerLevel-1)
              {
                  //!!make sure the last address doesnt have the asterisk on DWORD otherwise incoming crash
                  Ptr = (DWORD)(Ptr+Offsets[i]);  //Add the final offset to the pointer
                  if(Ptr == 0) return NULL;//prevent crash
                  //we here return early because when it hits the last element 
                  //we want to leave the loop, specially adapted for offsets of 1
                  return Ptr;
              }
              else
              {
                  //if its just a normal offset then add it to the address
                  Ptr = *(DWORD*)(Ptr+Offsets[i]); //Add the offsets
                  if(Ptr == 0) return NULL;//prevent crash
              }
          }
          return Ptr;
      };
      
      
      
      
      DWORD FinalAddy = FindDmaAddy(3,hackOffsets,BaseAddress);// Lets get Final Address 
      PlayerInfo *Player = *(PlayerInfo**)FinalAddy;// Get our class this address
      And all is done. Now you can easy navigate and change player options as simple as Player->WhatYouWantToChange = I Want This
      i think it's nice and easy to use in Menu DLL hack so all code is clean and understandable.

      HOPE I HELP ALL PEOPLE WHO HAVE PROBLEM With Multi Levle Pointer's ( with how to code it in c++)

      IF YOU FOUND ANY BUG ERROR IN THIS tut just PM ME OR LET me know ill edit this post

    2. Thanks Fleep, maymonaise, tinmar0, Syperus, Virushack thanked for this post
    3. #2
      Coder
      Learning to hack games!
       
      Feeling Normal
       
      BlackPitchPL's Avatar
      Join Date
      May 2012
      Location
      POLAND
      Posts
      171
      Thanks (-->)
      1
      Thanks (<--)
      14
      Yeah true but it's just for people to see if it's work in base i have all in while but with sleep like u say

    4. Thanks Crypt thanked for this post
    5. #3
      Newbie
      Learning to hack games!
       
      Feeling Normal
       
      tinmar0's Avatar
      Join Date
      Jul 2012
      Location
      polska warszawa
      Posts
      12
      Thanks (-->)
      31
      Thanks (<--)
      1
      good job BlackPitchPL!!!
      podoba mi sie twoja praca wypróbuje. a mozna tego użyc do kazdej gry rozumiem?? chociaż zeby podmienić wartosc zdrowia w danej postaci??

    6. #4
      Coder
      Learning to hack games!
       
      Feeling Normal
       
      BlackPitchPL's Avatar
      Join Date
      May 2012
      Location
      POLAND
      Posts
      171
      Thanks (-->)
      1
      Thanks (<--)
      14
      Tak można ale nie wiem czy można tu pisać po polsku zobacz mój kanał na YouTube ( taki sam jak Nick ) i USE ENGLISH :P

    7. #5
      RTFM
      Shootin Pool!
       
      Coding
       
      Syperus's Avatar
      Join Date
      Oct 2012
      Location
      127.0.0.1
      Posts
      436
      Thanks (-->)
      101
      Thanks (<--)
      131
      Silent VPN
      Nice tut Black! I like to read through tutorials even when I know the topic to pick up on something I didn't previously know. Always good to expand knowledge. Thanks for the tut!

    Similar Game Hacker Threads

    1. Replies: 8
      Last Post: 03-24-2015, 07:54 AM
    2. [Help] Pointer / Multi-Level Pointer in VB.NET
      By Vultrax in forum Visual Basic
      Replies: 1
      Last Post: 10-30-2014, 03:23 AM
    3. [Help] Base Address and Multi Level Pointer (TrackMania)
      By FlexXx1212 in forum GH Tutorials Help
      Replies: 12
      Last Post: 11-27-2013, 12:53 PM
    4. Replies: 10
      Last Post: 09-03-2013, 11:53 PM
    5. C++ Writing Multi Level Pointer?
      By baseball435 in forum C/C++
      Replies: 4
      Last Post: 09-20-2012, 10:52 AM

    Tags for this Thread