Есть программа (MSVC), нужно рассчитать контрольную сумму блока кода в рантайме. Все бы ничего, но при каждой загрузке меняются виртуальные адреса, соответственно каждый раз КС разная.Как это решить? Есть ли способ заставить виндовый загрузчик оставить PIC, или писать костыли вроде пропуска адресов при расчета КС?
>>677370 (OP)В рантайме ты можешь узнать адрес функции и метки. Дальше сам думай.
>>677527Так узнал же, что мне это дает?
>>677370 (OP)Конпелируй со включенными релоками и сделай небольшой костыль, который при подсчете чексуммы делает из виртуальных адресов относительные (RVA). Ну или просто выключи ASLR для образа.
>>677678>и сделай небольшой костыль, который при подсчете чексуммы делает из виртуальных адресов относительныебыла такая мыль, но это нужно создавать базу опкодов, закоторыми следует виртуальный адрес, или нет? Про ASLR почитаю.
>>677691> базу опкодовНет, не нужно. Тебе нужно пройтись по таблице релоков, там указаны виртуальные адреса, которые зависят от базы модуля. Тебе нужно взять каждый адрес и вычесть из него базу, вот и все. Какая там инструкция, и как она с этим адресом работает, тебя волновать не должно.
виртуальный адрес сгментов один и тотже, не?
>>677782при каждом запуске меняется
>>677828Нахуя оно тебе надо? Ты кого-то наебать пытаешься? Ты же не в зуб ногой, анивей профи хакнет твой защищённый код как два пальца обоссать.
>>677923Да какая разница то зачем оно мне, я же тебе не мешаю.
>>677828как он ментся, если вирт адреса сегментов назначаются системой и оди одни и теже для любого процесса?
>>678037попробуй код, что на оп-пике (или ему подобный) набрать и запустить, а потом после перезагрузки (или изменения PE, той части что не отностится к коду) запустить еще раз
>>678050ОП сраный нубище, сегментная адресация не канает в защищенном режиме, твое говноподелее будет работать только в чистом ДОС, иди нахуй и не морочь голову вирт. адресацией смысл которой тебе не понятен.
>>678068я же не говорю что оно работает, я спрашиваю как сделать иначе.
>>678050Давай-ка скрины из ольки, а то мне это какой-то хуйнёй кажется.
>>678184
>>678174используя WinApi типа ReadProcessMemory()
>>678220Что мне это даст, если я из своего же процесса читаю?
>>678189Второй скрин где?
>>678325сори, вот
>>678327В настройках линкера найди что-то вроде "рандомизировать адрес загрузки", выключи и попробуй снова. Должно помочь.
>>678396Фак, это работает, огромное тебе спасибо.Скажи, это я так хуево вопрос поставил или это не слишком популярная фича?
>>678399> это я так хуево вопрос поставилТы просто читать не умеешь. Про ASLR тебе написали в четвертом посте.
>>677370 (OP)Вот лол, никогда не кодил, но прочитал код. Ёбаные марки.