Selene [Hyperion's Hack Manager]
Selene Hack Manager
[still in development]
[still in development]
Yes, i know most you idiots are going to say this is complex.... And some of you idiots are going to think this is a base, but the thing that hurts my heart the most is that nearly non of you idiots will ever get this work and will resort to your petty little lives never knowing that true greatness will be.
Now that was a beautiful and true little speech, now for those who want to learn something. Like I said about this is not a base, This is a hack manager that is implemented into a base. It have some of the improvements I've been showing and more. This hack manager allows you to start separating your different types of components in a base, leading to more organized bases. Most of you are going to think this is useless, and to some it will be, to others this will change the way your hack operates.
Selene comes with all the "improved" I've been working on.
Fail-Safe address.
Support for Pattern Searches.
and more, let me just say what you can do with this hack.
Reason to use:
Because of the way most of these bases are done you cannot implement address finding features of a logger because you define all of your addresses as Macros for exact numbers. so I purpose an alternative.
What I did in was pull the addresses away from the direct hack functions, so I can perform checks on these addresses and gather these addresses from somewhere else. I do these by setting all addresses to 0, so I know if the address is valid or not from step one. Then I Initialize all addresses, Here you can use your static address or use FindPattern().
Code:
bool HeliosHackManager::Clean(){
m_CShellModule = NULL;
m_EngineModule = NULL;
m_ClientFXModule = NULL;
m_PlayerManagerAddress = NULL;
m_GameClientShellAddress = NULL;
m_SendToServerAddress = NULL;
m_LTClientAddress = NULL;
m_ClientFXAddress = NULL;
m_ConsoleAddress = NULL;
m_GetLocalPlayAddress = NULL;
m_GetPlayerByIndexAddress = NULL;
m_ClientInfoMgrAddress = NULL;
m_DrawPrimAddress = NULL;
m_GameStatusAddress = NULL;
return true;
}
Code:
bool HeliosHackManager::Initilize()
{
Clean();
m_CShellModule = (ptr)GetModuleHandleA(STRING_CSHELL);
m_EngineModule = (ptr)GetModuleHandleA(STRING_ENGINE);
m_ClientFXModule = (ptr)GetModuleHandleA(STRING_CLIENTFX);
if (m_CShellModule.isValid())
{
m_PlayerManagerAddress = ADDR_PLAYERMANAGER;
m_GetLocalPlayAddress = LocalPlayer;
m_GetPlayerByIndexAddress = PlayerByIndex;
m_ClientInfoMgrAddress = ClientInfo;
m_DrawPrimAddress = DrawPrim;
m_GameClientShellAddress = ADDR_GCS;
m_ConsoleAddress = ADDR_Console;
m_SendToServerAddress = S2SE;
m_LTClientAddress = ADDR_LTCLIENT;
m_GameStatusAddress = ADDR_GAMESTATUS;
}
if (m_ClientFXModule.isValid())
{
m_ClientFXAddress = *(ptr*)(m_ClientFXModule + ADDR_CLIENTFX);
}
return m_CShellModule.isValid() ;
}
Code:
bool HeliosHackManager::Initilize()
{
Clean();
m_CShellModule = (ptr)GetModuleHandleA(STRING_CSHELL);
m_EngineModule = (ptr)GetModuleHandleA(STRING_ENGINE);
m_ClientFXModule = (ptr)GetModuleHandleA(STRING_CLIENTFX);
if (m_CShellModule.isValid())
{
m_PlayerManagerAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
m_GetLocalPlayAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
m_GetPlayerByIndexAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
m_ClientInfoMgrAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
m_DrawPrimAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
m_GameClientShellAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
m_ConsoleAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
m_SendToServerAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
m_LTClientAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
m_GameStatusAddress = FindPattern(m_CShellModule, (PBYTE)"xxx", "xxx?xx");
}
if (m_ClientFXModule.isValid())
{
m_ClientFXAddress = *(ptr*)(m_ClientFXModule + ADDR_CLIENTFX);
}
return m_CShellModule.isValid() ;
}
How to use Selene
Selene is special (to most of you). It uses Inheritance, to you who do not know what this is, it is a feature in Object Oriented programming languages that allow a class to be derived from a base class done in the code below. The functions Initilize (yes, i know i spelled it incorrectly) and Clean are both pure functions, meaning you need to inherit the class and create your own functions to use them. as shown above. Ofcourse you are going to have to include the header file for the HackManager class. The reason I did this is because Selene is a static library and i want you people to come up with your own fancy ways to add your addresses.
Code:
Code:
#include <HackManager.h>
class HeliosHackManager : public HackManager
{
public:
virtual bool Initilize();
virtual bool Clean();
};
Code:
HeliosHackManager hackManager; // ,,...,,..,,..,,..,,...,,..,,..,,..,,...,,..,,..,,..,,...,,..,,..,,.. hackManager.FPS(fps); hackManager.Jump(jumphack); //Please Note that Speed is done differently for this hack, where we have this //Ratio is a parameter that determines the speed of the person, ranging from 0.0 ~ 1.0 for how much you want to increase the speed. hackManager.Speed(SpeedHack, ratio);
Code:
void ESP(bool box, bool name, bool healthbar =true)
{
hackManager.SetESPPlayerCall([&](PlayerInfo_t* player, CharacterFX_t* fx, PlayerInfo_t* lplayer)
{
auto color = (player->iTeam == lplayer->iTeam) ? 0xFF00FF00 : 0xFFFF0000;
D3DXVECTOR3 vScreen, vFootScreen;
auto vPos = player->Object->RootPosition;
vPos.y = player->Object->MinRootPosition.y;
if (!hackManager.WorldToScreen(vPos, vScreen))
return;
if (box)
{
vPos.y = player->Object->MaxRootPosition.y;
if (hackManager.WorldToScreen(vPos, vFootScreen))
{
auto BoxDist = 0.2f * (vFootScreen.y - vScreen.y);
// Graphics::DrawBorder(vScreen.x - BoxDist, vScreen.y, BoxDist * 2, vFootScreen.y - vSc
}
}
if (name)
{
// Graphics::DrawFont(vScreen.x, vScreen.y - 5, color, player->sName, D3DFONT_CENTERED);
}
if (healthbar)
{
if (fx)
{
// DrawHealthBars(vScreen.x - 13, vScreen.y - 7, (int)fx->wHealth, fx->bSpawnSheild);
}
}
});
hackManager.ESP(box || name || healthbar);
}
ESP(box, name, healthbar);
For a Hacks function now
Code:
void RunHacks()
{
if (!hackManager.Initilize())
return;
hackManager.FPS(fps);
hackManager.Jump(jumphack);
hackManager.Speed(SpeedHack, ratio);
ESP(box, name, healthbar);
}
Credits
- Topblast : I coded this thing
- Caddy / @deaddead1 : Hacks
- --Fenix-- : Classes
- USSR : Classes

![=]](/forum/images/emotions/=].gif)

