Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Зашитые в код строковые константы- как защитить их от просмотра?


Страницы:   1 2

roadster ©   (2009-05-20 10:47:00) 

Всем привет!
Имеется программа, которая, грубо говоря, читает из инишника зашифрованную с ключом строку, расшифровывает ее, использует, при необходимости делает обратную операцию.
С зашифровкой/расшифровкой все понятно.
Дело в том, что ключ шифрования не будет вводиться вручную пользователем (это служба архивации, вертится на сервере). Хранить ключ во внешнем файле- все равно что не шифровать вовсе.
Интересует вариант объявления этого ключа в коде программы.
Если объявить константой- этот ключ видно даже в ФАРе :).
Если объявить ресурсстрингом- вроде не видно.
То есть задача: каким-то образом объявить строку, но чтобы декомпилятором/дизассемблером и ничем иным ее в файле ехе-шника нельзя было посмотреть.


Юрий Зотов   (2009-05-20 12:12:00) [21]

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


brother   (2009-05-20 12:06:00) [22]

> 4. А для защиты от юных пионеров с гордо загнутыми пальцами
> вполне можно хранить зашифрованную строку, а код ее расшифровки
> вшить прямо в тело программы.

я про [6] автору уже сколько говорю ;)


Юрий Зотов   (2009-05-20 12:05:00) [23]

> roadster ©   (20.05.09 10:53) [2]

1. На каждый паковщик есть свой распаковщик.

2. Защиты от серьезного хакера не существует.

3. Непросто написать программу, взлом которой заинтересовал бы  серьезного хакера. Поэтому стоит подумать - а станет ли серьезный хакер вообще Вашей программой заниматься? Она представляет для него хоть какой-нибудь интерес?
 
4. А для защиты от юных пионеров с гордо загнутыми пальцами вполне можно хранить зашифрованную строку, а код ее расшифровки вшить прямо в тело программы.

5. Если существует некий проверочный оператор
if <условие> then <работаем> else <не _работаем>
то это самое уязвимое место и о нем стоит подумать в первую очередь.


brother   (2009-05-20 12:02:00) [24]

> Я хотел сказать, чтобы прошитый ключ НИЧЕМ нельзя было достать...

это не реально!
Вы даете не реальные планы, это как его - валюнтаризм (с) Приключения Шурика


roadster   (2009-05-20 12:01:00) [25]

Не, эт я немного недописал...
Я хотел сказать, чтобы прошитый ключ НИЧЕМ нельзя было достать...


brother   (2009-05-20 11:59:00) [26]

> Хотел ключ для расшифровки прошить в екзехе так, чтобы хекс-
> едитором
этот ключ нельзя было посмотреть.

так это же не

> декомпилятором/дизассемблером и ничем иным

;) Просто оч. строгие рамки ты поставил, тебе подойдет мой вариант


roadster   (2009-05-20 11:57:00) [27]


> зы зачем такие сложности? от кого защищаем в итоге? мой
> пример не катит?

Система резервного копирования.
Зипуху надо запаролить.
Пароль в инишнике в открытом виде держать не стоит.
Хочу ентот пароль зашифровать с ключом.

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

Хотел ключ для расшифровки прошить в екзехе так, чтобы хекс-едитором этот ключ нельзя было посмотреть.


brother   (2009-05-20 11:47:00) [28]

зы зачем такие сложности? от кого защищаем в итоге? мой пример не катит?


brother   (2009-05-20 11:46:00) [29]

> А ежли екзеху упаковщиком каким сжать?

ну если уж будут смотреть:

> декомпилятором/дизассемблером и ничем иным ее в файле ехе-
> шника нельзя было посмотреть

то тут уже ничего не спасет)


roadster   (2009-05-20 11:27:00) [30]


> только железный ключ тогда...

Не...
А ежли екзеху упаковщиком каким сжать?


brother   (2009-05-20 11:26:00) [31]

> но чтобы декомпилятором/дизассемблером и ничем иным ее в
> файле ехе-шника нельзя было посмотреть

только железный ключ тогда...


roadster   (2009-05-20 11:22:00) [32]


> ну очередной велосипед для молодых.

Тоже мне, старичок нашелся...
Абстрагируемся от всего, кроме "каким-то образом объявить строку, но чтобы декомпилятором/дизассемблером и ничем иным ее в файле ехе-шника нельзя было посмотреть".- по этому поводу есть еще мысли?


brother   (2009-05-20 10:58:00) [33]

res:='Всем привет';
res2:='';

for i:= 1 to length(res) do
 res2:=res2 + chr(ord(res[i])+i);
showmessage(res2);

типа так ;)


brother   (2009-05-20 10:57:00) [34]

> Рыдал, зачем тратить время на "защиту" от полных идиотов?

ну очередной велосипед для молодых.


Плохиш   (2009-05-20 10:55:00) [35]


> Интересует вариант объявления этого ключа в коде программы.

Ключ должен состоять из нечитаемого набора символов. А ещё можно и чередовать объявления константных символов.

> Если объявить ресурсстрингом- вроде не видно.

Рыдал, зачем тратить время на "защиту" от полных идиотов?


brother   (2009-05-20 10:54:00) [36]

> Ага, а ключ для расшифровки зашифрованной в стринг строки
> где хранить?

ключ не нужен, храни алгоритм расшифровки...


roadster   (2009-05-20 10:53:00) [37]

Ага, а ключ для расшифровки зашифрованной в стринг строки где хранить?
:)


brother   (2009-05-20 10:51:00) [38]

использовать шифрование и записывать в string уже шифрованную строку...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо