elvis66666 Опубликовано 23 сентября, 2015 Поделиться Опубликовано 23 сентября, 2015 Случается так, что в игре адрес меняется постоянно и приходится каждый раз при записи/чтении в/из адреса прогонять все указатели,но бывают случаи(игра загружается) когда его не существует, и при попытке узнать адрес происходит крах... мой код: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;}Подскажите как организовать правильно проверку 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 23 сентября, 2015 Поделиться Опубликовано 23 сентября, 2015 __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; } 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 23 сентября, 2015 Автор Поделиться Опубликовано 23 сентября, 2015 __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;}Спасибки !!! ) Выручил Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения