Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Защита данных, Как защитить значения переменных? 
:(
    Опции темы
Aprol
Дата 21.9.2007, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Как можно защитить значения переменных от чужих рук?
А то так получается что можно изменить значения через Artmoney или другую софтину.
PM MAIL   Вверх
Alexeis
Дата 21.9.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



      Никак. Винда разрешает это сделать, разве что взять под контроль всю систему и перехватывать все опасные функции, но это не дружественно.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 21.9.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



1. Продублировать в нескольких местах и регулярно синхронизировать их значения.
2. Хранить не в виде отображения. То есть, например в игре написано "здоровье 55%" а в переменной храни 255, и при отображении вычитай 200.
3. Конвертировать в другой вид. Например шифрованием, ксором или другим алгоритмом преобразования.
4. Не использовать статичное хранение в памяти. То есть выделить область памяти рэндомного размера, потом создать переменную и освободить память. Это лишит артемона возможности делать савы к найденому значению - адрес всегда разный.
PM MAIL   Вверх
Mikh@il
Дата 23.9.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



а можешь значения хранить в картинках
PM MAIL   Вверх
lukas
Дата 23.9.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



по-моему динамические переменные арт-мани не видит... ну или храни переменные в списках... в общем работай с указателями... тогда точно практически не найдет ничего....  smile


Это сообщение отредактировал(а) lukas - 23.9.2007, 15:41


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
BaD_SeCt0R
Дата 23.9.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 4
Всего: 18



Цитата(lukas @  23.9.2007,  15:37 Найти цитируемый пост)
в общем работай с указателями

А то их нельзя найти...

PS Snowy все разжевал дальше некуда.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Aprol
Дата 25.9.2007, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



То есть нужно переделать переменные в динамические?
Код

var j:integer

поменять на 
Код

var j:integer^

Так?

Добавлено через 2 минуты и 9 секунд
Несколько переменных делать не вариант мне кажется, ведь артмоней и прочие найдут все значения...
А если еще делать хэш мд5, для нескольких переменных особо важных?
PM MAIL   Вверх
aktuba
Дата 25.9.2007, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

А если еще делать хэш мд5, для нескольких переменных особо важных? 


А как ты потом их значения достанешь????


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Aprol
Дата 25.9.2007, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



нет сделать нормальную переменную, а потом сравнивать её с хэшем. По идее значение этой переменной не должно меняться в ходе работы и задается только вначале.
PM MAIL   Вверх
Alexeis
Дата 25.9.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Aprol @  25.9.2007,  07:07 Найти цитируемый пост)
нет сделать нормальную переменную, а потом сравнивать её с хэшем. По идее значение этой переменной не должно меняться в ходе работы и задается только вначале. 

  Ребят это уже не переменная, а константа раз ее значение не меняется. Одно дело переменную прятать, а другое защищать. Какого рода эта переменная и для чего служит? 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Aprol
Дата 25.9.2007, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Она берется из базы данных и обозначает номер пользователя...
PM MAIL   Вверх
Alexeis
Дата 25.9.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Тут может оказаться узким местом само получение, т.е. вызов внешней функции, но все это уже относиться скорее к отладке программами типа OllyDebug или просто к дизассемблированию с поиском нужной функции. Лучше чтобы это все в самой базе было уже зашифровано определенным образом, а затем нетривиальным образом сверялось. Т.е. не так чтобы if (UserNum = 007) then SetAllPrivileges();


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 25.9.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ну так сделай её полем объекта "Пользователь"
Сделай для неё сеттер и геттер, которые будут выполнять преобразования при назначении и получении.
PM MAIL   Вверх
W4FhLF
Дата 25.9.2007, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



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

Это сообщение отредактировал(а) W4FhLF - 25.9.2007, 11:42


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Alexeis
Дата 25.9.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(W4FhLF @  25.9.2007,  11:41 Найти цитируемый пост)
если уж запустят твою прогу в отладчик, то и хеши тебе не помогут. 

  Боюсь что нужно и это судя по 
Цитата(Aprol @  21.9.2007,  11:04 Найти цитируемый пост)
можно изменить значения через Artmoney или другую софтину. 

Отладчик попадает в категорию "другая софтина."



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
W4FhLF
Дата 25.9.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



Цитата(Alexeis @  25.9.2007,  12:11 Найти цитируемый пост)
Отладчик попадает в категорию "другая софтина."


Насколько я понял, имелись ввиду только сканеры памяти. В таком случае, всё будет зависеть от уровня того, кто будет юзать "другую софтину". 



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Aprol
Дата 26.9.2007, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



На счет объекта Пользователь, его что артмоней не возьмет?

2Alexeis , "Лучше чтобы это все в самой базе было уже зашифровано определенным образом, а затем нетривиальным образом сверялось. Т.е. не так чтобы if (UserNum = 007) then SetAllPrivileges(); "
каждый раз делать запрос к базе на проверку привелегий?

PM MAIL   Вверх
Alexeis
Дата 26.9.2007, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Ну можно сделать скажем набор чисел определяющие привелегии пользователя (например массив) и соответственно от этих чисел будет зависеть порядок некоторых операций, что в конечном итоге позволит или нет произвести операцию для которой нужны особые права. Можно смешать эти числа с другими данными о пользователе, а имя пользователя (его номер) использовать чисто для вывода на экран. Т.е. сверять пользователя не по имени, а по другим замаскированным под что-то полезное данным. Можно делать это даже в разное время. Типа сначала получить имя затем другие параметры. Желательно проверки на права осуществлять не в момент, когда нужно произвести операцию и не в момент, когда пользователь логинится , а некоторым образом между этими двумя событиями, таким образом при отладке нельзя будет определить момент, когда программа запретила что-то и исправить условный jne на безусловный jmp.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 26.9.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Aprol @  26.9.2007,  08:23 Найти цитируемый пост)
На счет объекта Пользователь, его что артмоней не возьмет?
В нём просто можно реализовать геттеры и сеттеры для прозрачного преобразования.
Также объект можно создать динамически, по принципу, который я описал выше.
Да. Артмани его не возьмёт, если проделать вышеуказанные мной операции.
PM MAIL   Вверх
Aprol
Дата 26.9.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Цитата(Alexeis @ 26.9.2007,  09:20)
Ну можно сделать скажем набор чисел определяющие привелегии пользователя (например массив) и соответственно от этих чисел будет зависеть порядок некоторых операций, что в конечном итоге позволит или нет произвести операцию для которой нужны особые права. Можно смешать эти числа с другими данными о пользователе, а имя пользователя (его номер) использовать чисто для вывода на экран. Т.е. сверять пользователя не по имени, а по другим замаскированным под что-то полезное данным. Можно делать это даже в разное время. Типа сначала получить имя затем другие параметры. Желательно проверки на права осуществлять не в момент, когда нужно произвести операцию и не в момент, когда пользователь логинится , а некоторым образом между этими двумя событиями, таким образом при отладке нельзя будет определить момент, когда программа запретила что-то и исправить условный jne на безусловный jmp.

ТО есть нужно будет в базе вводить еще одно поле?
Ну оно у меня есть где обозначается тип пользователя.
PM MAIL   Вверх
Alexeis
Дата 26.9.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Aprol, ну чтобы давать конкретные советы нужно уточнить, что и от кого нужно защитить? Т.е. если нужно разграничить права пользователей на доступ к информации, то это лучше делать на стороне сервера. Если нужно защитить данные на локальной машине от того что кто-то может запустить чужую машину и достать из нее информацию, то защита должна быть в программе. 
  Имя и тип пользователя это хорошо, когда эту информацию нельзя подменить.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Aprol
Дата 27.9.2007, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Alexeis,   конечно нужно и то и то.
Я сделал вывод: при каждой операции требующей определенные права, делается запрос на сервер и проверяется тип пользователя по его логину и id. Перед запросом программа-клиент проверяет верность этих данных, т.е. сверяет логин при авторизации с текущим.
правильно думаю?)))
PM MAIL   Вверх
Alexeis
Дата 27.9.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.