2012-01-05 4 views
1

Я изучаю программирование окон, и у меня есть вопрос.Как можно изменить данные памяти?

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

Это часто используется в анти-чит-двигателях в играх или программах для банковских приложений (я живу в Корее, поэтому я считаю, что это лучший пример. Почти в каждом онлайн-играх или банковском приложении есть алгоритм самозащиты .)

Мой вопрос: Есть ли какие-либо API или функции, которые об этом узнают?

спасибо.

P.S. я могу сделать пример,

если 0x01000000 данных памяти «А», некоторые другой процесс изменил его на «B». , когда я впервые подумал об этом, я подумал, что мне нужно сделать поток для проверки данных, и если он изменится, отключите процесс. , но я думаю, что это не очень хорошая идея. какие-либо предложения?

+0

Вы обнаруживаете другие приложения или свои собственные (т. Е. Это чисто внутренняя функциональность или используется для всей ОС)? Вы не можете легко получить доступ к памяти другого приложения из-за виртуальной памяти, однако это можно сделать. – RageD

+0

@Nagi: никакая современная ОС (включая Windows) не позволит одному процессу изменять память другого. О каком модуле безопасности вы говорите? –

+0

@IgorKorkhov: http://msdn.microsoft.com/en-us/library/windows/desktop/ms681674%28v=vs.85%29.aspx – SLaks

ответ

2

Общий ответ на ваш вопрос: нет, нет такого API или функций.

Но существуют разные методы, позволяющие достичь такого же результата. 1. Апи подключение. Вы можете использовать функции Hook в системе (например, WriteProcessMemory), а затем проверить, пытается ли кто-то что-то изменить в вашем процессе. Подробнее об этом here. 2. Отладка. Вы можете использовать контрольные точки для отладки функций или изменения памяти.

Смежные вопросы