I just wanted to let you know that I've recently started diving back into in-memory hacking in NosTale. I'm patiently recreating the game's internal structures from scratch to gain a deeper understanding of its inner workings.
In-memory hacking requires a lot of patience and dedication, but it's incredibly fascinating and rewarding. I'm working hard to comprehend the data structures used within the game and finding safe ways to access pointers to items in the lists without encountering crashes or invalid memory access issues.
I would love to hear your advice and suggestions on safely accessing pointers to objects in the lists without crashing or encountering invalid memory issues. If you have any techniques or best practices to share, I'm all ears!
Right now I'm looping around lists like in this code snippet:
Code:
static bool IsPointerValid(const void* ptr)
{
MEMORY_BASIC_INFORMATION mbi;
SIZE_T result = VirtualQuery(ptr, &mbi, sizeof(mbi));
return (result != 0 && mbi.Protect != PAGE_NOACCESS);
}
...
for (int i = 0; i < sceneMgr->NpcListPointer->Length; i++) {
auto itemPtr = (MapNpcObj*)(sceneMgr->NpcListPointer)->FirstItemPtr[i];
if(IsPointerValid(itemPtr) && IsPointerValid(itemPtr->NpcName))
std::cout << std::dec << itemPtr->NpcName << " " << itemPtr->MapX << ";" << itemPtr->MapY << std::endl;
}
Thank you in advance!






