Перейти к содержанию
Авторизация  
elvis66666

Как защититься от вылета при чтении несуществующего указателя?

Рекомендуемые сообщения

Случается так, что в игре адрес меняется постоянно и приходится каждый раз при записи/чтении в/из адреса прогонять все указатели,

но бывают случаи(игра загружается) когда его не существует, и при попытке узнать адрес происходит крах... мой код:

template <typename T1 = int, typename T2 = DWORD>T1* PointerReader(T2 base, int offsets[], int level){	//printf("Base = 0x%X	| (int*)Base = 0x%p\n", base, reinterpret_cast<T1*>(base));			T1 *pointer = reinterpret_cast<T1*>(base);	   			for (int i = 0; i < level; i++)		{                                //if (pointer != nullptr && (*pointer + offsets[i]) != nullptr) - пробовал так, но не спасает =\				pointer = reinterpret_cast<T1*>(*pointer + offsets[i]);				//printf("Pointer = 0x%p , *Pointer = 0x%X\n", pointer, *pointer);		}		return pointer;}

Подскажите как организовать правильно проверку :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

__try {

pointer = reinterpret_cast<T1*>(*pointer + offsets);

}

__except(EXCEPTION_EXECUTE_HANDLER) {

std::err << "Bad pointer at level " << i << ", address " << pointer << std::endl;

pointer = nullptr;

break;

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
__try {   pointer = reinterpret_cast<T1*>(*pointer + offsets[i]);}__except(EXCEPTION_EXECUTE_HANDLER) {   std::err << "Bad pointer at level " << i << ", address " << pointer << std::endl;   pointer = nullptr;   break;}

Спасибки !!! ) Выручил

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В данном топике никто не постил уже 4 месяца. Пости здесь только если твой вопрос точно совпадает с темой данного топика.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр
Авторизация  

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.