Что нового

Как защитить адресное пространство программы.

VladUs

Скриптер
Сообщения
621
Репутация
180
Подскажите пожалуйста. Есть ли возможность защитить память программы от записи в нее данных посторонним приложением. Посмотрел справку и обнаружил функции _WinAPI_ReadProcessMemory и _WinAPI_WriteProcessMemory, вот от последней мне и нужна защита. Либо защитить всю память ... либо определенные адреса.
Как я себе это представляю. Допустим существует программа (на Autoit), периодически, числовые данные, в этой программе, изменяются в определенной переменной. Необходимо чтобы при попытке изменения чужой программой
значения этой переменной по определенному адресу, выскакивало сообщение типа "несанкционированное изменение данных сторонней программой."
 

kosjachok

Новичок
Сообщения
30
Репутация
3
VladUs [?]
периодически, числовые данные, в этой программе, изменяются в определенной переменной.
нормально защитить всю память нереально, но отдельные переменные - попытаться можно.
Попробуй такой алгоритм:
Создай ещё одну переменную - дублёра(двойника) и периодически сравнивай их значения, если одинаковые - то порядок, если отличаются - то аларм.
 
Автор
V

VladUs

Скриптер
Сообщения
621
Репутация
180
Создай ещё одну переменную - дублёра(двойника)
Спасибо kosjachok
обходной маневр понятен и мне известен , но меня интересует способ защиты именно памяти.
Может быть существует такой атрибут как ReadOnly для адресов? Думаю это вопрос к специалистам по WinApi.
 
Автор
V

VladUs

Скриптер
Сообщения
621
Репутация
180
Чтобы быть более понятым, другой более конкретный пример.
Существуют программы т.н. взломщики игр (типа ArtMoney и т.п) они же редакторы памяти процессов.
Так вот эти программы ищут в памяти других процессов числовые или, какие - нибудь, другие значения и найдя их изменяют.
Если я даже создам хоть десять дублеров они их все вычислят и занесут в эти переменные - дублеры одинаковые значения (группой). Так что алгоритм со сравнением переменых не прокатывает.
 

kosjachok

Новичок
Сообщения
30
Репутация
3
VladUs [?]
Если я даже создам хоть десять дублеров они их все вычислят и занесут в эти переменные - дублеры одинаковые значения (группой). Так что алгоритм со сравнением переменых не прокатывает.
А ты создавай их с значением, изменённым по опред.алгоритму,
к примеру моя переменная = 5, я создаю двойника - 5+3 = 8
а перед сравнением делаю 8-3 и сравниваю с оригиналом...
 
Автор
V

VladUs

Скриптер
Сообщения
621
Репутация
180
Вот кажется нашел ... в <Memory.au3>

_MemVirtualAlloc
_MemVirtualAllocEx
 

kosjachok

Новичок
Сообщения
30
Репутация
3
VladUs [?]
Существуют программы т.н. взломщики игр (типа ArtMoney и т.п) они же редакторы памяти процессов.Так вот эти программы ищут в памяти других процессов числовые или, какие - нибудь, другие значения и найдя их изменяют.
А ещё существуют античитерские программы (HackShield, Frost, PankBaster), которые пытаются защитить память процесса игры на уровне драйверов, и это у них не особо то получается... Что уж тут гадать на Autoit (код которого можно банально декомпилировать) ?
Максимум, чем ещё можешь попортить жизнь взломщикам - это отлавливать ArtMoney (и т.п) либо по окну, либо по процессу - и закрывать их при обнаружении... Но это тоже очень легко обходится...
 
Верх