Skip to content
MPGHThe Dark Arts
/
RegisterLog in
Forum
Community
What's NewLatest posts across the boardTrendingHottest threads right nowSubscribedThreads you follow
Discussion
GeneralIntroductionsEntertainmentDebate FortFlaming & Rage
Board
News & AnnouncementsMPGH TimesSuggestions & HelpGiveaways
More Sections
Art & Graphic DesignProgrammingHackingCryptocurrency
Hacks & Cheats
Games
ValorantCS2 / CS:GOCall of Duty / WarzoneFortniteApex LegendsEscape From Tarkov
+14 moreLeague of LegendsGTA VMinecraftRustROTMGBattlefieldTroveBattleOnCombat ArmsCrossFireBlackshotRuneScapeDayZDead by Daylight
Resources
Game Hacking TutorialsReverse EngineeringGeneral Game HackingAnti-CheatConsole Game Hacking
Tools
Game Hacking ToolsTrainers & CheatsHack/Release NewsNew
Submit a release →Share your cheat, tool, or config with the community.
AINEW
AI Tools
General & DiscussionPrompt EngineeringLLM JailbreaksHotAI Agents & AutomationLocal / Open Models
AI × Gaming
AI Aimbots & VisionML Anti-CheatGame Bots & Automation
Create
AI Coding / Vibe CodingAI Art & MediaAI Voice & TTS
The AI frontier →Where game hacking meets modern machine learning. Jump in.
Marketplace
Buy & Sell
SellingBuyingTradingUser Services
Trust & Safety
Middleman LoungeMarketplace TalkVouch Copy Profiles
Money
Cryptocurrency TalkCurrency ExchangeWork & Job Offers
Start selling →List accounts, services, and goods. Use the middleman to trade safe.
MPGH The Dark Arts

A community for offensive security research, reverse engineering, and AI.

Community

ForumMarketplaceSearch

Account

RegisterLog in

Legal

Privacy PolicyForum RulesHelp & FAQ
© 2026 MPGH · All rights reserved.Built by the community, for the community. For educational purposes onlyContent is shared for security research and education — we don't condone illegal use. You're responsible for complying with applicable laws. Use at your own risk.
Home › Forum › MultiPlayer Game Hacks & Cheats › Other MMORPG Hacks › Vindictus Hacks & Cheats › Vindictus Tutorials › Base for Vindictus, no Source SDK required

Base for Vindictus, no Source SDK required

Posts 1–11 of 11 · Page 1 of 1
NO
notabot99
Base for Vindictus, no Source SDK required
Not exactly a tutorial in the sense of tutorials, but there are comments related to each bit of code, and how\why they're used.

It also basically shows how you can use ClientCmd without needing the Source SDK to have the engine pointer.


To update the Engine_PTR (the only thing would ever need to be updated for this ) you need only a debugger - and client.dll, all of which are easily acquired.

For OllyDbg, for example, you could search for referenced string texts in the module Client.dll, and then search for text in the entire scope for "host_timescale", the very first result will bring you to where you need to be:

Code:
380F1E30   . 8B0D 04318E38  MOV ECX,DWORD PTR DS:[388E3104]
380F1E36   . 8B01           MOV EAX,DWORD PTR DS:[ECX]
380F1E38   . 8B50 1C        MOV EDX,DWORD PTR DS:[EAX+1C]
380F1E3B   . 68 A4CC7A38    PUSH client.387ACCA4                     ;  ASCII "host_timescale 0.0001"
Here, we see our current engine pointer, 0x388E3104:

Code:
 MOV ECX,DWORD PTR DS:[388E3104]
Which is the one we are using now, in this source.

This should work for every update, that is, until they attempt to patch it.
In which case, a new way will be made.

Plenty of things can be done with this, like spamming certain commands
without smashing a binded key repeatedably, via another thread, and
toggleable booleans.

It also doesn't have the drawback of requiring the Source SDK.


Code:
// ------------------- defines
#define Engine_PTR      0x388E3104  // Our pointer to the engine - address is current
// ------------------- defines

#include <windows.h> // The only include file we need. No Source SDK or anything.

// globals
bool g_bEngineReady = false; // Used to know if the engine pointer is ready to use or not.

DWORD g_dwEnginePtr = NULL; // Pointer to engine, setup when game is loaded.
// globals


// class

// Not fully mapped, at least not the vftable functions.
// The only really important one is ClientCmd, anyways.

struct IVGameEngine
{

public:
	virtual void A(); // 0
	virtual void B(); // 4
	virtual void C(); // 8
	virtual void D(); // C
	virtual void E(); // 10
	virtual void F(); // 14
	virtual void G(); // 18
	virtual void ClientCmd( char * pszCommand ); // 1C - ClientCmd
	virtual void H(); // 20
	virtual void I(); // 24
	virtual void J(); // 28
	virtual void K(); // 2C
	virtual void L(); // 30
	virtual void M(); // 34
	virtual void N(); // 38
	virtual void O(); // 3C
	virtual void P(); // 40
	virtual void Q(); // 44
	virtual void R(); // 48
	virtual void S(); // 4C
	virtual void T(); // 50
	virtual void U(); // 54
	virtual void V(); // 58
	virtual void W(); // 5C
	virtual void X(); // 60
	virtual void Y(); // 64
	virtual void Z(); // 68
	virtual void AA(); // 6C
	virtual void BB(); // 70
	virtual void CC(); // 74
	virtual void DD(); // 78
	virtual int Cmd_Argc(); // 7C - Cmd_Argc, returns # of commands passed to ClientCmd
	virtual void * Cmd_Argv( int iIndex ); // 80 - Cmd_Argv, returns command arguments
                                               // based on iIndex.

};

// class

// our engine pointer - not actually instantiated by us - since they're all virtual functions

IVGameEngine * g_pGameEngine = NULL;

// ------------------------------------------------------------------------------------------

// thread to create, testthread
void ThreadTest( )
{
     while( 1 )
     {
           if( GetAsyncKeyState( 0x61 ) & 1 ) // Numpad 1 key check, when 
           // you press Numpad 1 (only once) the engine pointer is setup.

           {
               // This is by no means the best way to do this 
               g_dwEnginePtr = *(PDWORD)( Engine_PTR ); // Access engine
               // pointer vftable.
               if( g_dwEnginePtr )  // if it != 0
               {
                   g_pGameEngine = (IVGameEngine*)( (DWORD)g_dwEnginePtr );
                   // Here, (above this comment) we point our pointer to 
                   // the current engine pointer in the game.

                   g_bGameEngineReady = true; // Here, we set the variable
                   // g_bGameEngineReady to true, so that we know
                   // it's ok to call ClientCmd.
               }
               
               
           }

           if( GetAsyncKeyState( 0x62 ) & 1 ) // Numpad 2 key check, when
           // you press Numpad 2 (only once) the commands you want to use
           // will be executed. You can also set convars here, if you want.
           {
              if( g_bGameEngineReady ) // Check if game engine pointer was 
              // setup.
              {
                  g_pGameEngine->ClientCmd("commands here\n"); // Issue a
                  // command.
              }
           }
      
           // This is also a way that you could make keybinds of your own, 
           // without using bind. Even unbindable keys, like escape.
           // A google search for virtual key codes will bring you to the
           // constants required to be passed to GetAsyncKeyState.
   
           Sleep( 50 );
     }
}

// ------------------------------------


// DLLMain, entrypoint for our DLL.

BOOL APIENTRY DllMain( HMODULE hModule, DWORD dwReasonForCall, 
                       LPVOID lpReserved
                     )
{
             switch ( dwReasonForCall )
             {
                    case DLL_PROCESS_ATTACH:
                         if( CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)&TestThread, 0, 0, INVALID_HANDLE_VALUE )
                            // Notify failure to create test thread, if you want
                            OutputDebugStringA( " Couldn't create TestThread " );
                    break;
             }
             return TRUE;
}
#1 · 15y ago
DanK
DanK
Very nice.. Always good to have more then one way of doing the same thing..
#2 · 15y ago
demonbhd
demonbhd
i compiled this finally and games crashing when i try to use pointer updated probably.. what client dll do i search in

u also have things unproper, im guessing intentionally

if( g_bGameEngineReady )

should be

if( g_bGameEngineReady = true )?

otherwise its not checking if pointers ready or it doesn and the value doesnt matter?
and whats the correct way to work this im trying

g_pGameEngine->ClientCmd("cc_system_message Why-Cant-I-Die?"); nothing happens for now all i want to do is see text,
#3 · edited 14y ago · 14y ago
NI
Nico
Quote Originally Posted by demonbhd View Post
i compiled this finally and games crashing when i try to use pointer updated probably.. what client dll do i search in

u also have things unproper, im guessing intentionally

if( g_bGameEngineReady )

should be

if( g_bGameEngineReady = true )?

otherwise its not checking if pointers ready or it doesn and the value doesnt matter?
and whats the correct way to work this im trying

g_pGameEngine->ClientCmd("cc_system_message Why-Cant-I-Die?"); nothing happens for now all i want to do is see text,
I recommend you to learn C++ first.
#4 · 14y ago
KO
kozakmamaruga
Quote Originally Posted by demonbhd View Post
if( g_bGameEngineReady )

should be

if( g_bGameEngineReady = true )?
if( g_bGameEngineReady ), in pluses you can check if something isn't 0 (var) or NULL (pointer) by writing if(something) ...
Also, according to the name of this variable, it is global bool, and boolean variables can be written alone in if statement even in more strict languages than pluses.
if( g_bGameEngineReady = true ) will be always true, try to think why.
#5 · 14y ago
demonbhd
demonbhd
Quote Originally Posted by kozakmamaruga View Post
if( g_bGameEngineReady ), in pluses you can check if something isn't 0 (var) or NULL (pointer) by writing if(something) ...
Also, according to the name of this variable, it is global bool, and boolean variables can be written alone in if statement even in more strict languages than pluses.
if( g_bGameEngineReady = true ) will be always true, try to think why.
ok thanks, in vb i would always write somthing like

if bgameengineready <=0 then

or > 0...
maybe i do it wrong??? it works tho
#6 · edited 14y ago · 14y ago
NI
Nico
Quote Originally Posted by demonbhd View Post
ok thanks, in vb i would always write somthing like

if bgameengineready <=0 then

or > 0...
maybe i do it wrong??? it works tho
Yea but this is C++, not your useless VB.
#7 · 14y ago
demonbhd
demonbhd
Quote Originally Posted by Nico View Post


Yea but this is C++, not your useless VB.

lol so much hatred for vb.. i know bud im still learning, ill get to c++, i spent almost all day trying to get this pointer, when i figure that out, ill add alot to his base, trial and error but ill get there, i dont think it will be to bad, ive played in c#, made windows forms apps, just very basic stuff in c++ just trying to learn, c# helped me with syntax errors alot
#8 · edited 14y ago · 14y ago
KO
kozakmamaruga
There is no hatred against VB.net you're using, as well as thousand of people. Both of vb and c# are translated to msil by compiler so they are functionally equivalent.
But the fact is - more people use C#, because of a shared C-based syntax. VB is a life-saver in a short run, while C# will aid you in a future. And also VB seems too easy to make you code badly and attract bad programmers.
#9 · 14y ago
demonbhd
demonbhd
yeah my bigggest thing is ive been playin around with vb the most, ive done alot of things with it that people think are impossible, i think that given enough time u can do almost anything in vb u want, another thing is 95% of people just thrash on other peoples work because its not c++, yes we all understand vb is nothing compared to c++, for reliability/stability.. i inderstood vb was a starting point to programing, well im not the best but im not gonna stop trying or give up because of others opinions. my time learning hasnt been in c++, as u can see u cant just go ask somone to teasch u, u cant even pay somone to do it privatly, ive tried, so i had to start with hello world in vb, research endless amounts of hours for some projects, tryial and error trying to get programs to function correctly, this is only a starting point for me. i will learn c++, i wownt be the best programer, but ill get decent, any free time i have im programing.. i play vindictus a couple times a week, figured id look into hacking it, its very interesting to me because ive never seen command hacking, this base here really sparks my interest, its small, looks like a very good place to start c++, directx, ive messed with ddraw/dx/andgdi in vb, all 3 u can write over fullscrene apps, mr.A hooked directx a few years ago in vb-for a game called black hawk down.., after learning this i was really interested and spent about 4 months, of carse not all day long but whenever i could to try and figure this out, i actually followed a c# tutorial in vb.. its on pastebin somewhere. i did ti in codbo/the bad it lagged like no other,*i could barely use the main menu* gdi is better, yet if ur not careful it can look really shitty/well it does anyway, i curently using a little of both in a project dd/gdi i just call it dx, the codes differnt its rly not dx/ for learnign dx in vb id suggest following jack hoxleys tutorial in vb6, i may not persue vb anymore..anyway my pospose of posting stuff is to help people like myself that dont know c++/ noone will help them, theyll flame call them names, im sorry guys but thats not right.. sorry for my type errores in a hurry... another thisng i had some guy telling me gd sucked for memory.. i havnet expirenced it yet.. ive half of vindictus covered an i dont lag at all..so for the guys trying google like crazy, thats the only way, noone is gonna help. the point im at i can understand wwhy to an extent, if someone asks questions that has no idea at all how to use any language where do u start/ where do u stop// honestly id have no idea where to start teaching someone myself. but if people are reallly trying and ask questions i will awnser to the best of my knnowlege,
#10 · edited 14y ago · 14y ago
NI
Nico
This doesn't work anymore tho
#11 · 14y ago
Posts 1–11 of 11 · Page 1 of 1

Post a Reply

Similar Threads

  • tier0 error when injecting dll project (Source SDK Base)By DanK in C++/C Programming
    5Last post 15y ago
  • New Bot required for Vindictus EUBy jascha00 in Vindictus Help
    9Last post 14y ago
  • pubh0ok 1.8 (for Counter-Strike: Source)By Ravello in CounterStrike (CS) 1.6 Hacks / Counter Strike: Source (CSS) Hacks
    36Last post 16y ago
  • [TRADE] SoldierFront Captain For C++ D3D SourceBy Kyle619 in C++/C Programming
    2Last post 18y ago
  • RS PURE , 86 str ,85 mage , 82 range , 1 def for a CS source !By 0nly l0ve pk in Trade Accounts/Keys/Items
    6Last post 17y ago

Tags for this Thread

None