Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Вниз

О декомпиляции, клонировании, Dephi и Java   Найти похожие ветки 

 
IMHO ©   (2007-06-23 11:11) [0]

Господа, поправьте, если неправ.

Делая продукты на Delphi и выкладывая их в Инет (или запуская их в офф-лайне), вы не сильно беспокоитесь о том, что кто-то декомпилирует вашу программу, изменит ряд авторских и прочих данных, склонирует и выложит под своим именем.

А как обстоят подобные делаю с Джавой? Что получаем на выходе? JAR-файл, в который можно залезть и изменить его.

Слышал про какие-то обфускаторы... Насколько они действенны?


 
Инс ©   (2007-06-23 11:18) [1]


> изменит ряд авторских и прочих данных, склонирует и выложит
> под своим именем.

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


 
IMHO ©   (2007-06-23 11:29) [2]


> так от этого существуют специальные методы защиты.


Для Java существуют методы защиты?


 
KSergey ©   (2007-06-23 11:57) [3]

> IMHO ©   (23.06.07 11:29) [2]
> Для Java существуют методы защиты?

Зашить небольшую, но критическую часть логики во внешний бинарный модуль?


 
Инс ©   (2007-06-23 11:57) [4]

Да, с Java есть проблема, она связана с тем, что полученный исполняемый файл представляет собой не готовый к исполнению машинный код, а нечто, что еще будет транслироваться. Поэтому для Java существуют декомпиляторы, которые позволяют достаточно успешно получить исходный код Java из промежуточного байт-кода. Исполняемый файл, собранный в Delphi же, представляет собой полноценный готовый к исполнению PE-модуль, полностью декомпилировать его назад в код на Delphi невозможно. Частично конечно можно повытаскивать RTTI, еще что-нибудь, но не более того. Можно дизассемблировать - получить код на ассемблере. Именно так взломщики и поступают, но как я уже сказал, есть методы защиты. Самый мощный (ИМХО) - шифрование кода. Думаю, для Java существуют какие-либо методы защиты от модификации, но тут я не компетентен.


 
KSergey ©   (2007-06-23 12:08) [5]

> Инс ©   (23.06.07 11:57) [4]
> Самый мощный (ИМХО) - шифрование кода.

А по-моему - довольно бестолковый, т.к. в любом зшифрованной коде будет обязательно присутсвовать нешифрованный расшифровщик.


 
Инс ©   (2007-06-23 12:16) [6]


> А по-моему - довольно бестолковый, т.к. в любом зшифрованной
> коде будет обязательно присутсвовать нешифрованный расшифровщик.


Алгоритм шифрования не нужно ни от кого скрывать. Секретным должен быть ключ. Если защита построена на том, что алгоритм никто не знает - это плохая защита. Алгоритмы рекомендую использовать стандартные, всем известные - DES, 3DES, RC2, RC4, RC6 и другие. А ключ нужно генерить с помощью ассиметричных алгоритвом (RSA, например). Могу привести полную схему защиты, буду рад, если вы укажите на узкие места, о которых я не знаю.


 
KSergey ©   (2007-06-23 12:20) [7]

> Инс ©   (23.06.07 12:16) [6]
> Могу привести полную схему защиты,
>  буду рад, если вы укажите на узкие места, о которых я не  знаю.

Самому думать лень  -так что было бы интересно


 
DrPass ©   (2007-06-23 12:23) [8]


> Инс ©   (23.06.07 12:16) [6]


> Алгоритм шифрования не нужно ни от кого скрывать. Секретным
> должен быть ключ

А каким образом ключ будет секретным, если для выполнения "зашифрованного" кода он все равно должен присутствовать в исполняемом файле?


 
KSergey ©   (2007-06-23 12:27) [9]

> DrPass ©   (23.06.07 12:23) [8]
> А каким образом ключ будет секретным, если для выполнения
> "зашифрованного" кода он все равно должен присутствовать
> в исполняемом файле?

зачем торопиться с вопросами? пусть раскажет.
именно ответ на этот вопрос я и хотел увидеть ответ :)


 
Инс ©   (2007-06-23 12:28) [10]

Здесь я приводил схему:

http://www.delphikingdom.com/asp/answer.asp?IDAnswer=51289


 
Инс ©   (2007-06-23 12:30) [11]


> А каким образом ключ будет секретным


А таким, что ключ не нужно давать кому попало, а только тому, кто за него заплатил ;)


 
DrPass ©   (2007-06-23 12:34) [12]


> А таким, что ключ не нужно давать кому попало, а только
> тому, кто за него заплатил ;)

А что это даст? Я ведь и исполняемый файл могу давать только тому, кто заплатил. Но безопасность от этого никак не возрастет - ключ и зашифрованные данные будут распространяться вместе.


 
Инс ©   (2007-06-23 12:36) [13]

Не вместе, а раздельно. Никогда не приобретали ПО через интернет? Скачиваем триальную версию, юзаем 30 дней, понравилось - платим деньги - получаем ключ.


 
DrPass ©   (2007-06-23 12:43) [14]


> Инс ©   (23.06.07 12:36) [13]

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


 
Инс ©   (2007-06-23 12:46) [15]


> Автор темы сформулировал вполне конкретную задачу - как
> защитить свой Java-код от декомпиляции?


Я же сказал - шифрование кода. Убивает дизассемблер наповал. А вы мне пытаетесь доказать, что этот метод неэффективен. Пока не убедили.


> твой, кстати, ничем не лучше других... только геморроя с
> ним намного больше


А это не мой, это вполне стандартный и общеизвестный ;)


 
Инс ©   (2007-06-23 12:49) [16]


> А как триал сделать - есть миллион способов, эффективных
> против обычных пользователей и неэффективных против заинтересованных
> профессионалов (твой, кстати, ничем не лучше других... только
> геморроя с ним намного больше)


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


 
Инс ©   (2007-06-23 12:51) [17]

Только, опять таки, к Java это не относится, я говорил про Delphi, впрочем, об этом я тоже писал.


 
DrPass ©   (2007-06-23 12:57) [18]


> Я же сказал - шифрование кода. Убивает дизассемблер наповал.
>  А вы мне пытаетесь доказать, что этот метод неэффективен.
>  Пока не убедили


> Наезд я услышал, а теперь, хотелось бы, чтобы Вы в подтверждение
> своих слов привели аргументы

Без проблем. Итак, разработчик А выпускает Java-продукт, в котором применяем свою крутую авторскую технологию. Алгоритм он шифрует, а ключ для дешифровки даже не распространяет в открытом виде, а для пущей крутизны помещает на eToken и продает эту железку только лицензированным пользователям
Разработчик В заинтересован в крутой авторской технологии. Поэтому он покупает лицензионную копию (1 шт), получает eToken в свое распоряжение. Дальше он дизассемблирует приложение (к Java-софту термин "дизассемблирование" не особо клеится, но ладно, оставим его)... находит зашифрованный участок, выясняет чем шифровалось (DES, 3DES, RSA - больше eToken аппаратно ничего не поддерживает)... ну а потом пишет простую утилитку, которая работает с eToken, подсовывает ей зашифрованный код и своим же ключиком и расшифровывает. И все. А дальше он может подарить всем своим друзьям уже исправленное расшифрованное приложение (оно ведь от ключика уже отвязано - попробуй выясни, от какого клиента была утечка информации). И использовать ту самую крутую авторскую технологию в своем софте и т.д.
Так как твой метод поможет скрыть алгоритм от профессионала?


 
Virgo_Style ©   (2007-06-23 13:04) [19]

Инс ©   (23.06.07 12:49) [16]
укажите на слабые места


Забить в Readme.txt вместо одной строки
S/N: AAAA-BBBB-CCCC-DDD
две
UserName: ABCDEF
S/N: AAAA-BBBB-CCCC-DDD

не намного сложнее, по-моему.


 
Инс ©   (2007-06-23 13:17) [20]


> [18] DrPass ©   (23.06.07 12:57)


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


 
Anatoly Podgoretsky ©   (2007-06-23 13:19) [21]

> Инс  (23.06.2007 12:36:13)  [13]

Да, да, крякеры так и поступают, оплачивают по ворованой кредитке и что интересно не ждут окончания 30 дневного срока, сразу покупают :-)


 
Anatoly Podgoretsky ©   (2007-06-23 13:19) [22]

> DrPass  (23.06.2007 12:23:08)  [8]

Цифровая подпись, распространяется только открытый ключ


 
KSergey ©   (2007-06-23 13:22) [23]

> Инс ©   (23.06.07 12:30) [11]
>
> > А каким образом ключ будет секретным
>
>
> А таким, что ключ не нужно давать кому попало, а только
> тому, кто за него заплатил ;)

Я вот не видел, чтобы MS раздавала свои ключи тем, кто не заплатил. Однако изучив ассортимент ларька и следуя вашей логике прихожу к выводу, что таки раздавала. Это верно? Я где-то просмотрел раздачу?

PS
Хотя вру.
Я участвовал в одной раздаче: Windows Server 2000, пробная версия. Серийник был на всех дисках одинаковый, однако он подходил и к полной версии, чем пираты и воспользовались немного позднее.


 
Anatoly Podgoretsky ©   (2007-06-23 13:22) [24]

> Инс  (23.06.2007 12:46:15)  [15]

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

Ты пока мыслишь по ламерски, не с точки зрения хакера и поэтому тебе кажется что все ОК.


 
Инс ©   (2007-06-23 13:23) [25]


> [21] Anatoly Podgoretsky ©   (23.06.07 13:19)


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


 
Anatoly Podgoretsky ©   (2007-06-23 13:26) [26]

> DrPass  (23.06.2007 12:57:18)  [18]

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


 
Anatoly Podgoretsky ©   (2007-06-23 13:33) [27]

> Инс  (23.06.2007 13:17:20)  [20]

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


 
DrPass ©   (2007-06-23 13:38) [28]


> Инс ©   (23.06.07 13:23) [25]

Речь не о том, что защита в программе не нужна. Нужна. Но потраченное время, усилия и средства на разработку защиты должны, скажем так, себя оправдывать. Не так то просто реализовать шифрование части кода приложения да еще и с расшифровкой "на лету". И лишь для крохотного процента приложений такая защита будет актуальной.


 
Инс ©   (2007-06-23 13:40) [29]


> Переходить на промышленные маштабы, например про WinZip
> наверно слышал?


Да и Windows сюда тоже подходит :) Некоторые еще делают программные продукты бесплатными для ExUSSR, в расчете на то, что большинство взломщиков как раз оттуда, чтобы отбить интерес ко взлому. А продают пользователям из тех стран, где в общем-то покупать, а не воровать, общепринято. Некоторые еще и прилагают к программе подробную инструкцию по взлому - с той же самой целью, отбить спортивный интерес. Но это мы отошли от темы, действительно, вопрос был как скрыть код. Решение с ВЕБ-сервисами надежно, но не всегда удобно для пользователя.


 
Инс ©   (2007-06-23 13:45) [30]


> Но потраченное время, усилия и средства на разработку защиты
> должны, скажем так, себя оправдывать.


Мне это говорить не нужно, я в курсе. В той ссылке, что я вам дал я об этом говорил. Защита - это многоярусная система и в каждом конкретном случае нужно выбирать свой подход. Пока мы тут просто набрасываем версии. Давайте все же определимся, о каком случае мы говорим, тогда можно будет подумать, как в данном случае лучше поступить.


 
Anatoly Podgoretsky ©   (2007-06-23 13:45) [31]

> Инс  (23.06.2007 13:40:29)  [29]

Ты это скажи взломщикам FAR :-)
Веб сервисы конечно надежны, но и применимость ниже


 
Инс ©   (2007-06-23 13:48) [32]


> Ты это скажи взломщикам FAR :-)


Я не могу судить насколько это эффективно. Я лишь констатировал факт, что некоторые так делают из расчета на снижение кряков.


 
DrPass ©   (2007-06-23 13:50) [33]


> Давайте все же определимся, о каком случае мы говорим, тогда
> можно будет подумать, как в данном случае лучше поступить.
>

Это как бы уже давно определено и без нас. Не секрет, что правило

> цена ключа меньше, чем полученная потом выгода от кражи
> алгоритма

для крупнотиражного массового ПО (того, где действительно применяются уникальные алгоритмы) действует почти всегда
Крупные промышленные системы (типа SAP R3, ITM и т.д.) не воруют :)
А вот сегмент специализированного "наукоемкого" ПО действительно может нуждаться в такой защите. Это всякие конструкторские, математические и т.п. приложения, которые стоят тысячи/десятки тысяч у.е. и продаются небольшими тиражами.


 
IMHO ©   (2007-06-23 14:02) [34]

Я вот что имел в виду, когда создавал тему.
Вы, господа, сразу увлеклись темой shareware, покупкой по ворованным картам и отошли от главного.

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

Делая EXE-бинарник, я могу быть относительно спокоен в этом, но делая JAR - где гарантия???


 
isasa ©   (2007-06-23 14:06) [35]

DrPass ©   (23.06.07 13:50) [33]
Ну в таком случае, мы тихо подходим к мысли о том, что такой код размещается в отдельном маленьком дивайсе, продаваемом индивидуально заказчику. Ключ.


 
IMHO ©   (2007-06-23 14:07) [36]

А даже если говорить о shareware.
Продавая ключик (за полнофункциональный EXE), я всего лишь даю возможность пользоваться программой неограниченно, а не возможность рыться в ней.


 
IMHO ©   (2007-06-23 14:11) [37]

Интересно мнение Юрия Зотова в этом вопросе. Ведь он (дельфист до мозга костей) перешел на Java и Eclipse.


 
KSergey ©   (2007-06-23 14:46) [38]

> IMHO ©   (23.06.07 14:02) [34]
>  но я не
> хочу делать доступными некоторые реализации, имею на то
> право как автор.

Мдя...
Очевидно алгоритмы в моих программах столь тривиальны (и сделуны на всем доступных источниках), что такая мысль мне даже в олову не приходила... :(
Жалею о бесцельно прожитых годах :(

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


 
DrPass ©   (2007-06-23 16:39) [39]


> IMHO ©   (23.06.07 14:02) [34]


> но делая JAR - где гарантия???

Гарантии нет, но обфускатор более-менее защитит. По крайней мере, разобрать кашу из кода не намного проще, чем исполняемый файл


 
P   (2007-06-23 20:02) [40]


>
> IMHO ©   (23.06.07 11:11)
> А как обстоят подобные делаю с Джавой? Что получаем на выходе?
>  JAR-файл, в который можно залезть и изменить его.
>
> Слышал про какие-то обфускаторы... Насколько они действенны?


например просто понять такой код:
jksdjkds754 += rer43438943 -(dfjdfl5 + rrrttr474)/rthewrjwk493;
for(trjrtjk3443 = 10; trjrtjk3443 < 34; trjrtjk3443++){};

Ну и тому подобное. Имеем полное запутывание имен переменных.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.59 MB
Время: 0.053 c
2-1183367944
RomanH
2007-07-02 13:19
2007.07.29
MySQL


15-1183475164
TUser
2007-07-03 19:06
2007.07.29
Американская ПРО


2-1183368943
Tonich
2007-07-02 13:35
2007.07.29
COM-порт


15-1183121929
IMHO
2007-06-29 16:58
2007.07.29
Почему на постсоветском пространстве...


1-1179816164
leonidus
2007-05-22 10:42
2007.07.29
Как переконвертировать Color в Hex ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский