Защита области памяти процесса (Win32) от чтения/дампа
От: bybor  
Дата: 13.08.08 07:12
Оценка:
Есть приложение. Хочется защитить область памяти этого приложения от просмотра/дампа — по сути это должно быть анти-ArtMoney.
То есть будет запущено какое-то дополнительное приложение (B), которое блокирует доступ других программ (C) к памяти приложения A. То, что приложение (B) можно прибить — не рассматривается. Все это работает под пользователем с правами администратора.

Чисто теоретически — тот же Outpost отлавливает и сообщает о попытках одного процесса получить доступ к памяти другого.

Куда смотреть? В сторону системных хуков?

Спасибо.
Re: Защита области памяти процесса (Win32) от чтения/дампа
От: OdesitVadim Украина  
Дата: 13.08.08 19:16
Оценка:
Здравствуйте, bybor, Вы писали:
[scip]
B>Чисто теоретически — тот же Outpost отлавливает и сообщает о попытках одного процесса получить доступ к памяти другого.

B>Куда смотреть? В сторону системных хуков?


B>Спасибо.

Перехватить соответствующие функции записи/чтения памяти? Outpost как раз так и делает.
... << RSDN@Home 1.2.0 alpha rev. 787>>
Re: Защита области памяти процесса (Win32) от чтения/дампа
От: IID Россия  
Дата: 13.08.08 20:48
Оценка:
Здравствуйте, bybor, Вы писали:

От драйвера это не спасёт. Драйвер сможет читать любую память. Есть интересная концепция — Shadow walker, который позволяет управлять процессом чтения из памяти, используя факт кеширования PTE/PDE. Его, конечно, можно "задетектить" по факту перехвата Trap_0E, и он может серъёзно "просадить" производительность системы при доступе к защищённым данным, но "снять" дамп generinc способом не получится.
kalsarikännit
Re: Защита области памяти процесса (Win32) от чтения/дампа
От: Геннадий Майко США  
Дата: 14.08.08 02:51
Оценка:
Здравствуйте, bybor,

B>Есть приложение. Хочется защитить область памяти этого приложения от просмотра/дампа — по сути это должно быть анти-ArtMoney.

B>То есть будет запущено какое-то дополнительное приложение (B), которое блокирует доступ других программ (C) к памяти приложения A. То, что приложение (B) можно прибить — не рассматривается. Все это работает под пользователем с правами администратора.
--
Попробуйте сделать приложение В в виде специализированного "отладчика" для приложения А, котоорое "наблюдает" за памятью А.

C уважением,
Геннадий Майко.
Re: Защита области памяти процесса (Win32) от чтения/дампа
От: Roman Odaisky Украина  
Дата: 14.08.08 06:47
Оценка:
Здравствуйте, bybor, Вы писали:

B>Есть приложение. Хочется защитить


Главный вопрос — от кого?
До последнего не верил в пирамиду Лебедева.
Re[2]: Защита области памяти процесса (Win32) от чтения/дамп
От: bybor  
Дата: 14.08.08 07:24
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, bybor, Вы писали:


B>>Есть приложение. Хочется защитить


RO>Главный вопрос — от кого?


От тех, кто знает что такое ArtMoney и умеет этим пользоваться.
Такого уровня защиты будет вполне достаточно.
Re[2]: Защита области памяти процесса (Win32) от чтения/дамп
От: bybor  
Дата: 14.08.08 07:27
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:

ГМ>Попробуйте сделать приложение В в виде специализированного "отладчика" для приложения А, котоорое "наблюдает" за памятью А.


Спасибо.
А можно ссылку на поподробнее о специализированном "отладчике"?
Re[3]: Защита области памяти процесса (Win32) от чтения/дамп
От: Геннадий Майко США  
Дата: 14.08.08 07:47
Оценка: 2 (1)
Здравствуйте, bybor,

B>А можно ссылку на поподробнее о специализированном "отладчике"?

--
Под "специализированным" я понимал упрощенный отладчик, умеющий делать только то, что Вам нужно. Начать, наверное, можно отсюда.

C уважением,
Геннадий Майко.
Re[4]: Защита области памяти процесса (Win32) от чтения/дамп
От: bybor  
Дата: 14.08.08 08:25
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:

ГМ>Под "специализированным" я понимал упрощенный отладчик, умеющий делать только то, что Вам нужно. Начать, наверное, можно отсюда.


Посмотрел — правда наискосок. А разве присоединение к тому процессу как-то влияет на другие приложения?

То есть, если (B) открыл для отладки (A), то это означает, что никакой другой (С) не сможет вызвать ReadProcessMemory для (A) ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Защита области памяти процесса (Win32) от чтения/дамп
От: Геннадий Майко США  
Дата: 14.08.08 09:09
Оценка:
Здравствуйте, bybor,

B>Посмотрел — правда наискосок. А разве присоединение к тому процессу как-то влияет на другие приложения?


B>То есть, если (B) открыл для отладки (A), то это означает, что никакой другой (С) не сможет вызвать ReadProcessMemory для (A) ?

--
Увы, я не обратил внимание, что Вы защищаетесь от чтения памяти процесса, а не от записи. В таком случае отладчик вряд ли, наверное, поможет, если, конечно, не использовать защиту на чтение маленьких участков памяти с помощью отладочные регистров.

С уважением,
Геннадий Майко.
Re[3]: Защита области памяти процесса (Win32) от чтения/дамп
От: IID Россия  
Дата: 14.08.08 12:31
Оценка: 3 (1)
Здравствуйте, bybor, Вы писали:

B>От тех, кто знает что такое ArtMoney и умеет этим пользоваться.

B>Такого уровня защиты будет вполне достаточно.

Из описания на сайте ArtMoney:

# [PRO] Исправлена ошибка, вызывающая синий экран и перезагрузку, при одновременном запуске разных версий ArtMoney Pro.


Добавлена новая настройка "Использовать свои функции доступа к памяти". При установке данной галочки, ArtMoney использует свой сервис для обращения к памяти, тем самым, обходя все возможные защиты памяти


Это даёт основания полагать, что софтина использует драйвер. Перехватами АПИ-шек ReadVirtualMemory, даже в ядре, делу не поможешь Придётся либо использовать различные хаки (вроде отладочных регистров или манипуляций с PTE/PDE), что ОЧЕНЬ нежелательно. Или последовать совету от тех же авторов ArtMoney:

Специальные методы позволяют обмануть даже игры, в которых нет числовых видимых значений (например графическая полоска жизни) или игры, которые кодируют свои данные.


Зашифруйте данные вряд ли из-за кто-то серъезно будет реверсить вашу софтину, если вы не Blizzard, конечно
kalsarikännit
Re[4]: Защита области памяти процесса (Win32) от чтения/дамп
От: bybor  
Дата: 14.08.08 12:53
Оценка:
Здравствуйте, IID, Вы писали:

IID>Из описания на сайте ArtMoney:


IID>

IID>Добавлена новая настройка "Использовать свои функции доступа к памяти". При установке данной галочки, ArtMoney использует свой сервис для обращения к памяти, тем самым, обходя все возможные защиты памяти


Да, блин, врага надо знать в лицо. Пока идёт тока теоретическое обмусоливание задачки — и никто даже не догадался вылезти на сайт ArtMoney и посмотреть, с чем мы имеем дело. Спасибо!
Наличие драйвера открывает один из способов борьбы — скан системы и отказ запускаться, если мы его обнаружили. Понятно, что это всего лишь один конкретный случай. Но в данной ситуации — это выход.
Как я понял, способа защититься от человека, который очень захочет прочитать память, просто нет.

IID>Зашифруйте данные вряд ли из-за кто-то серъезно будет реверсить вашу софтину, если вы не Blizzard, конечно

Шифрование отпадает, так как защищаемая программа тока в виде exe.

Если подводить итоги, то 1) перехват функций Win32 API; 2) отлов конкретных приложений.

Еще раз спасибо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Защита области памяти процесса (Win32) от чтения/дамп
От: IID Россия  
Дата: 14.08.08 13:35
Оценка:
Здравствуйте, bybor, Вы писали:

B>Наличие драйвера открывает один из способов борьбы — скан системы и отказ запускаться, если мы его обнаружили.


а в какой момент сканировать будем ? И как детектировать ? Драйвер может быть загружен в любой момент, с любым именем. А хеш PE будет меняться от билда к билду. В конце концов загруженный драйвер может подкорректировать результат вашего сканирования

Понятно, что это всего лишь один конкретный случай. Но в данной ситуации — это выход.
Для данной конкретной версии ArtMoney — может и выход.

B>Как я понял, способа защититься от человека, который очень захочет прочитать память, просто нет.

Против KernelMode вообще бесполезно защищаться. Если вражеский драйвер загружен — он сделает с вами что пожелает.

B>Если подводить итоги, то 1) перехват функций Win32 API; 2) отлов конкретных приложений.


Лучше перехватывать не WinAPI а Native API. Перехват на уровне WinAPI легко обходится вызовом нижлежащего слоя. Ну а настоящие джигиты могут распарсить образ ntdll.dll на диске, посмотреть на индексы системных сервисов, и вызывать ядро "ручками", через int2e / sysenter

B>Еще раз спасибо.


Не за что
kalsarikännit
Re[6]: Защита области памяти процесса (Win32) от чтения/дамп
От: Аноним  
Дата: 14.08.08 22:40
Оценка: :)
B>>Если подводить итоги, то 1) перехват функций Win32 API; 2) отлов конкретных приложений.
IID>Лучше перехватывать не WinAPI а Native API. Перехват на уровне WinAPI легко обходится вызовом нижлежащего слоя. Ну а настоящие джигиты могут распарсить образ ntdll.dll на диске, посмотреть на индексы системных сервисов, и вызывать ядро "ручками", через int2e / sysenter
А ненастоящие джигиты скопируют ntdll.dll в ntdll2.dll загрузят ее и будут дергать ее за обычные экспорты.
Re[7]: Защита области памяти процесса (Win32) от чтения/дамп
От: IID Россия  
Дата: 15.08.08 09:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А ненастоящие джигиты скопируют ntdll.dll в ntdll2.dll загрузят ее и будут дергать ее за обычные экспорты.


Создавать ещё один файл на диске ? Как-то неаккуратненько да и проактивка/антивирус могут не дать этого сделать (неизвестное приложение пытается создать исполняемый файл). Лучше уж тогда как-нибудь так
Автор: Виталий
Дата: 09.01.04
kalsarikännit
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.