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 › Programming › C++/C Programming › Address Logger?

Address Logger?

Posts 1–15 of 34 · Page 1 of 3
Zhhot
Zhhot
Address Logger?
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


Code:
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
	for(;*szMask;++szMask,++pData,++bMask)
		if(*szMask=='x' && *pData!=*bMask ) 
			return false;
	return (*szMask) == NULL;
}

DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
{
	for(DWORD i=0; i < dwLen; i++)
		if( bCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
			return (DWORD)(dwAddress+i);

	return 0;
}
Now here is how to use this code


Code:
DWORD Your Address = FindPattern( 0x400000, 0x5000, ( PBYTE )
"\xA1\x00\x00\x00\x00\x83\xEC\x00\x80\x78\x00\x00", "x????xx?xx??" );
now i will explain a bit.


Code:
FindPattern( start address, + so many to the start address, ( PBYTE )
"bytes to scan for", "signature mask" );
signature mask is a "x" for the bytes that dont change,and a "?" for the bytes that do change.

Here is some ******* scan codes for you to use that i made myself.


Code:
   m_dwAKick     = FindPattern(0x400000, 0x01400000,(unsigned char*)"\x8B\x85\xFC\xE2\x04\x00\x39\x44\x24\x10\x75\x76\x8D\x8D\x70","xx??xxxxxxxxxx?");
   m_dwUAmmo1    = FindPattern(0x400000, 0x01400000,(unsigned char*)"\x89\x7E\x24\x7E\x15\x6A\x40\x6A\x01\xE8\x6C\x0A\x17\x00\x83","xxxxxxxxxx???xx");
   m_dwUAmmo2    = FindPattern(0x400000, 0x01400000,(unsigned char*)"\x89\x46\x20\x0F\xAF\xC7\x89\x46\x24\x5F\xB8\x01\x00\x00\x00","xxxxxxxxxxxxxxx");////
   m_dwUAmmo3    = FindPattern(0x400000, 0x01400000,(unsigned char*)"\x89\x46\x24\x5F\xB8\x01\x00\x00\x00\x5E\xC2\x04\x00\xCC\xCC","xxxxxxxxxxxxxxx");
   m_dwProne     = FindPattern(0x400000, 0x01400000,(unsigned char*)"\x84\xC0\x74\x0C\x8B\x8E\x78\x02\x00\x00\x8B\x01\x56\xFF\x50\x2C\x5E\xC3\x83","xxx?xx??xxxxxxxxxxx");
   m_dwNameEsp   = FindPattern(0x400000, 0x01400000,(unsigned char*)"\x75\x23\x8B\xCB\x69\xC9\x28\x1A\x00\x00\x8B\x81\xD8\x66\xBD","x?x?xx?xxxxx???");
   m_dwInvis     = FindPattern(0x400000, 0x01400000,(unsigned char*)"\x2C\x8B\x56\x10\x89\x57\x34\x66\x89\x2F\x8A\x86\x18\x02\x00","xx?xx?xxx?x??xx"); ///
   m_dwHeal      = FindPattern(0x400000, 0x01400000,(unsigned char*)"\x0F\x85\xA6\x00\x00\x00\x85\xC9\xC7\x05\x30\x1D\xB1\x00\x00\x00\x00\x40","xx????xxxx????xxxx");

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

I FOUND THIS INFORMATION ON A SITE, ABOUT HOW TO CREATE AN ADDRESS LOGGER, I DONT GET IT BUT MAYBE SOMEONE ELSE CAN?
#1 · edited 17y ago · 17y ago
ZE
zeco
Been to the site that you got that from, can't remember the name ATM. IPawn, and Killer were working on this for a while, i wonder what they are up to. Either way i'm too lazy to think about this. Also because i've never gotten a bypass to work for me thus it's pretty useless >_<.

edit: oh right its naeron's address logger;

edit edit: you know you've been coding for too long when you end your sentences with semicolons;
#2 · edited 17y ago · 17y ago
SY
Synns
Use Neo I.I.I's NSearch.
#3 · 17y ago
ZE
zeco
Quote Originally Posted by Longevity View Post
Use Neo I.I.I's NSearch.
And where exactly would i find this, and what exactly is it?
#4 · 17y ago
rwkeith
rwkeith
Quote Originally Posted by Longevity View Post
Use Neo I.I.I's NSearch.
Whoa, it's Longevity....*bows down*. Yea and use Neo's I actually use it too...
#5 · 17y ago
why06
why06
Well the first two lines confuse me. The guy who coded this must be a fkin genius or either have a lot of experienced:
Quote Originally Posted by Zhhot View Post
Code:
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
	for(;*szMask;++szMask,++pData,++bMask)
Look at that he used a for loop and incremented 3 pointers at the same time. D: ffs! I didn't even know you could do that :{. And if that's not enough he puts the increment things on the left. I forget what side does what. I'm going to have to look that back up in my book. Plus accessing addresses confuse me a little.

All I really know about addresses is this is a hex literal "0x....." and this is an oct literal "0..". I'm not sure what kind of literal just an "x..." is ??? I don't like jumping to far ahead, once I learn about classes and namespaces, and ASM. Then I'll try something like this. Goodluck though to whoever is attempting this.

BTW: Anyway I'm with zeco. Where is this tutorial at?
#6 · edited 17y ago · 17y ago
B1ackAnge1
B1ackAnge1
++x = pre-increment
x++ = post increment;
(same of course goes for decrement with '--');

say: x = 1;
y = ++x;
Now Y == 2 and X == 2;

if you say:
x = 1; y = x++;
then you'll have
Y==1 and X == 2;
#7 · 17y ago
ZE
zeco
I understand everything except one part
Code:
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
	for(;*szMask;++szMask,++pData,++bMask)
		if(*szMask=='x' && *pData!=*bMask ) 
			return false;
	return (*szMask) == NULL;
}

Well starting with :
if(*szMask=='x' && *pData!=*bMask )
return false;

Does it mean, If blah blah is true, just return false, ignoring the rest of the function.


and for return (*szMask) == NULL;, does that mean, return the value if it is null? Or something to that effect.

And if my guess is true, then what if the value isn't null, and doesn't comply with the previous if statement? Then the function that is supposed to return a bool won't be able to return anything. However this is assuming my guess was correct which it likely wasn't

And upon thinking about that last part, am i right in thinking that a function ends whenever a value is returned, except for void functions where it just ends at a break(?), or when there is no more code?
#8 · edited 17y ago · 17y ago
Zhhot
Zhhot
man, i totally forgot the site name, and i delete history and cookies every day, so probably not gunna be there, u can try googling it o.0?!
#9 · 17y ago
ZE
zeco
Quote Originally Posted by Zhhot View Post
man, i totally forgot the site name, and i delete history and cookies every day, so probably not gunna be there, u can try googling it o.0?!

It is naeron, apparently I've had a tab with it open, rather i forgot about this poor lonesome tab. So googling Naeron's address logger tutorial, should bring you to it.
#10 · 17y ago
Zhhot
Zhhot
Quote Originally Posted by zeco View Post
It is naeron, apparently I've had a tab with it open, rather i forgot about this poor lonesome tab. So googling Naeron's address logger tutorial, should bring you to it.
"lonesome tab" rofl
#11 · 17y ago
ZE
zeco
Quote Originally Posted by Zhhot View Post
"lonesome tab" rofl
Dude, i have 2 separate(chrome, and Firefox) browsers with 30 tabs each. I get forgetful sometimes.
#12 · 17y ago
why06
why06
Quote Originally Posted by zeco View Post
I understand everything except one part
Code:
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
	for(;*szMask;++szMask,++pData,++bMask)
		if(*szMask=='x' && *pData!=*bMask ) 
			return false;
	return (*szMask) == NULL;
}
Ok. which parts specifcally...

Quote Originally Posted by zeco
Well starting with :
if(*szMask=='x' && *pData!=*bMask )
return false;

Does it mean, If blah blah is true, just return false, ignoring the rest of the function.
Well to understand this we need to understand the part above it too. So all of this:
Code:
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
	for(;*szMask;++szMask,++pData,++bMask)
		if(*szMask=='x' && *pData!=*bMask ) 
			return false;
This confused me a little too. This guy (whoever wrote the code) put the "*"(pointer sign) next to the type instead of the variable. See here:
Code:
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
See I would have done it like this:

Code:
bool bCompare(const BYTE *pData, const BYTE *bMask, const char *szMask)
Ok so now we know that these are pointers we need to know what this statement does:

Code:
for(;*szMask;++szMask,++pData,++bMask)
		if(*szMask=='x' && *pData!=*bMask ) 
			return false;
Ok lets break it down. We will start with the for loop:
Code:
for(;*szMask;++szMask,++pData,++bMask)
It seems like as long as the value("*" that's what that little thing means) of pointer szMask is not "0" the loop will keep executing.

Remember Everytime it executes szMask, pData, and bMask all get incremented.

Code:
if(*szMask=='x' && *pData!=*bMask ) 
			return false;
All this means is that if the value of szMask is x (*szMask=='x') and (&&) the value of pData does not equal the value of bMask(*pData!=*bMask)....
then this boolean funtion will return false



Next question?
Quote Originally Posted by zeco
and for return (*szMask) == NULL;, does that mean, return the value if it is null? Or something to that effect.
Well lets break it down again:
Code:
return (*szMask) == NULL;
return can only return a boolean type because the function specifies that it returns a boolean. If it returned anything else there would be an erroe and this would not compile

Code:
return (*szMask) == NULL;
The == operator will evaluate the values on both sides of it to see if they are equal in value and then return a true or false (boolean) value.

Code:
return (*szMask) == NULL;
(*szMask) since szMask is a pointer to a byte, *szMask will return the value of that byte (byte values are usually char).

NULL is the character that marks the end of a string. I'm unsure if its zero but basically...

This whole express will evaluate to true or false depending if (*szMask) == NULL

sorry I couldn't explain further got to get to class. xD
#13 · edited 17y ago · 17y ago
ZE
zeco
xD i just Meant the tiny parts that Bolded. I understood everything else. But eitherway, what i really didn't understand is having the two returns. But based on the way you worded it i think i know my answer. Thanks for the part about return (*szMask) == NULL;. This alone made me fully understand.

I would have caught on faster though, if he had
return ((*szMask) == NULL);

P.S. I put my pointer thingy beside the type too >_>. It just makes more sense in my head. Well while initializing anyway. If i'm getting the pointed to value, i put it beside the variable.

So yeah i forgot that i knew how to code(kinda), and just did some tests of my own. Now everything makes sense
#14 · edited 17y ago · 17y ago
why06
why06
Quote Originally Posted by zeco View Post
xD i just Meant the tiny parts that Bolded. I understood everything else. But eitherway, what i really didn't understand is having the two returns.
Well I didn't know so I figured I'd just got over everything .... actually that took a long time.

Anyway the return sort of acts like a break statement. Since a function can only return once the first return that executes ends the code.


And yeh I lot of people put the * on the type, but its a little misleading because C++ doesn't recognize the type as pointers only specific variables. Say if you wanted to declare multiple pointer variables at once:

Code:
int* a, b, c;  // This would not work.
Code:
int *a, *b, *c;   // This would.
Some people who do this are just trying to make a point that Microsoft should change C++ to make an entirely new pointer type. :L
#15 · 17y ago
Posts 1–15 of 34 · Page 1 of 3

Post a Reply

Similar Threads

  • anyone got a address logger?By bldymarien in Combat Arms Hacks & Cheats
    3Last post 18y ago
  • Sorry for this but - Address Logger ?By D e a t h h a u n t S in WarRock - International Hacks
    7Last post 16y ago
  • Address logger for crossfire`?By GER-Domi. in CrossFire Help
    1Last post 16y ago
  • Warrock Address LoggerBy BMW M5 in WarRock Discussions
    5Last post 16y ago
  • Address LoggerBy iRobot™ in WarRock Hack Source Code
    30Last post 16y ago

Tags for this Thread

#address#keylogger#logger