|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||||
Защитить от записи страницы памяти24.01.2013, 11:37. Показов 2327. Ответов 14
Метки нет (Все метки)
Есть некая задачка где просят получить память под массив, установить некоторые значения, а потом защитить этот кусок памяти от записи и показать что туда ничего нельзя записать.
Делаю на винапи (хотя там в posix тоже что-то есть, но я тоже не смог это заставить работать у себя под виндой), раньше с такого рода задачами никогда не сталкивался. Как правильно защитить от записи страницы памяти? Набросал абстрактный пример:
0
|
||||||
| 24.01.2013, 11:37 | |
|
Ответы с готовыми решениями:
14
Как защитить Dll от редакторов памяти? Как защитить скрипт от обновления страницы? Защитить от записи флешку с Windows 7 |
|
33 / 33 / 6
Регистрация: 19.01.2013
Сообщений: 33
|
|
| 24.01.2013, 11:48 | |
|
А нельзя ли с помощью new привести массив к типу const int ?
0
|
|
|
840 / 347 / 67
Регистрация: 20.11.2012
Сообщений: 809
|
|
| 24.01.2013, 11:51 | |
|
Gepar, VirtualLock закрепляет виртуальную память в физической, т.е. запрещает скидывать страницу в своп.
Для изменения защиты страницы памяти нужно использовать VirtualProtect. Т.к. защита действует на всю страницу - нельзя лочить память в общей куче. Используй VirtualAlloc для выделения памяти (т.к. выделяет постранично) и потом настраивай доступ с помощью VirtualProtect.
1
|
|
|
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
|
||||||
| 24.01.2013, 11:56 | ||||||
0
|
||||||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 24.01.2013, 12:59 [ТС] | |
|
Kgfq, да не знаю, это же не защита памяти, этоя сам от себя спрятался
![]() WhiteP, видимо не так понял я msdn, а последнее моё общение с VirtualAlloc не очень было удачно и я в тот раз обошёлся без него. Ну чтоже, придётся попробовать пообщаться с ним ещё разок, может на этот раз более успешно.
0
|
|
|
840 / 347 / 67
Регистрация: 20.11.2012
Сообщений: 809
|
|||||||
| 24.01.2013, 13:25 | |||||||
1
|
|||||||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||
| 24.01.2013, 21:40 [ТС] | ||
|
Спасибо за хороший пример, я так понимаю эксепшены оно бросает только эти хитрые винапишные и просто в стиле с++ try / catch здесь сделать не получиться, да ?
0
|
||
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
| 24.01.2013, 22:25 | |
|
1
|
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 24.01.2013, 22:33 | |
|
если проектик в студии собирать с флагом /EHa, то можно будет их ловить catch (...)
еще вроде можно трансляторы ставить и ловить что-то более конкретное.
1
|
|
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
| 24.01.2013, 22:48 | |
|
DU, исключения могут генерироваться аппаратно. ИМХО, вы предлагаете не лучший вариант.
1
|
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 24.01.2013, 22:59 | |
|
в том то и дело, что этот флаг заставляет студию генерить код так, чтобы и аппаратные исключения ловились. только ловится они будут в catch (...) и ни в каком другом блоке. при наличии транслятора эти аппаратные транслируются в какой-то тип и можно уже кетчи ставить на именно аппаратные, а не абы какие, которые не словились раньше.
Что имеется в виду под аппаратными? деление на ноль - оно? если да, то оно таким макаром ловится.
1
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||
| 25.01.2013, 01:07 [ТС] | ||
![]() DU, а можно, подробнее, просто интересно. На практике я не могу сказать "вот тебе исходник, вон там вон галочку поставишь и оно соберётся и заработает тогда...", но мне самому попробовать интересно. Те просто поставить флаг /EHa и можно делать блок try(){ } catch(...){ } ? Но получается тогда потеряется возможность узнать а что вообще произошло и где именно.
0
|
||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 25.01.2013, 01:26 | |
|
я это все узнавал в книге Джеффри Рихтера:
Windows. Создание эффективных Win32-приложений с учётом специфики 64-разрядной версии Windows. Часть 5, главы 23, 24, 25 + в сети то там, то сям инфа всякая. Ищите инфу по структурной обработке исключений, они же SEH frames (Structured Exception Handling) http://msdn.microsoft.com/en-u... s.85).aspx
1
|
|
|
840 / 347 / 67
Регистрация: 20.11.2012
Сообщений: 809
|
|
| 25.01.2013, 06:59 | |
|
Еще есть векторная обработка исключений. Там даже во фрейм как таковой оборачивать не надо. И вызываются обработчики до SEH обработчиков и раскрутки стека.
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 26.01.2013, 17:26 [ТС] | |
|
WhiteP, что-то там и примеров нету ни одного, но если я всё правильно понял то читать код с таким перехватом исключений всё равно что читать код с goto
0
|
|
| 26.01.2013, 17:26 | |
|
Помогаю со студенческими работами здесь
15
Защитить переменную класса от записи Как защитить global.asa уложенный в корень страницы? Защитить папку от удаления в сильно ограниченной учетной записи Ошибка отсутствия страницы в памяти/сек
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|