uintptr_t
auto addr = whyega :: address_t { 0x1337 } ; // математика addr += 0x228 ; addr -= 0x228 ; // доступные касты std :: uintptr_t { addr } ; // авто каст addr . ptr ( ) ; // к указателю addr . as ( ) ; // к типу std :: cout ( ) ) ; // запись (сам снимает протекцию) addr . write ( 1337 ) ; // протекция auto prot = addr . protect ( ) ; if ( ! prot . executable ( ) ) { addr . protect ( sizeof ( uint32_t ) , prot . read_write_execute ( ) ) ; auto flags = * addr ; // получаем PAGE флаги flags = addr . get ( ) ; // тоже самое через метод } // вызов функции addr . execute ( 255 ) ; // простой пример whyega :: address_t { 0x1337 } . write ( 1337 ) ; // работа со сложными типами auto buf = addr . span ( 100 ) ; std :: fill ( buf . begin ( ) , buf . end ( ) , 0x90 ) ; // + можете снять протект на диапазон