![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Зашитые в код строковые константы- как защитить их от просмотра?
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 уже шифрованную строку...