Дело не том сколько битные/байтные переменные ты используешь в коде, а в том, что из них получается после компиляции.
Вот скажи, зачем ты в каждой 2ой теме тролиш? Хочешь отличится умом и сообразительностью, помоги ТСу или напиши статью про особенности программирования под х64, из своего опыта, если такой имеется.
ты че ему х64 бинарник на х86 платформу подогнал чтоли? 1) обратно совместима только х64 с х86 а не наоборот 2) операции с указателями, в х64 они соответственно 64 бита (все остальные типы - также как в х86) 3) соглашения о вызовах - х64 в основном использует fastcall (первые 4 параметра через регистры rcx, rdx, r8, r9 - остальные если есть - в стеке) (ап и повальная lea соответсна везде) 4) абсолютные смещения - плохое решение - лучше сканируй по паттерну. 5) объявления препроцессора _WIN64 _AMD64_ etc 6) максимальный юзермодный адрес - 0x7FF`FFFEFFFF минимальный - 0х10000(как вин32) 8) kernel32, user32, ntdll находятся ниже приложения, остальные выше (не помню почему) 7) page size x64(AMD64)==x86==4KB (IA64(itanium/itanium2) == 8KB) это минимум чего ты мог не учесть при сборке смотри чтоб были настроены препроцессор компилятор и компоновщик на х64 сборку и библиотеки (те с точностью до наоборот - на х86) кстати х64(который амд64 а не ia64) вроде тока 48 битами виртуальной адресации ограничен и 52мя физической + накладно делать 4хКБ каталоги страниц. что несомненно минус.
sn0w , из твоих пунктов я понял только то, что ты опытный и компетентный в этом вопросе человек. К сожалению применить все что ты сказал не в силах, так как я ничего не понял Но спасибо за разъяснения. Кстати, а смешения по патернам сложно реализуемо? на С++ , например
_ttp://www.uc-forum.com/forum/c-and-c/58694-address-logger.html Каждый тручитмейкер должен это знать.
Спасибо за новую информацию. Правда для моего трейнера это не оправдано. Адреса все время можно узнать используя указатели, а не маску (патерн)