Модераторы: BearBeer

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> защита своей проги! в каком месте встроить чтоб необошли 
:(
    Опции темы
h2o
Дата 3.4.2006, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Какие я только способы не придумывал, всю мою защиту можно обойти простой заменой проверки je на jnz и всё! прога будет сломана!!!
Куда мне встроить проверку чтобы её было сложно обойти?

Вроде защита нормальная придумана, выскажитесь так ли это:

получаю из своей проги серийники тома винта, винды, название биоса, инфа о проце, вся эта строка посимвольно переводится в число, кодируясь (Xor) кодовым словом. Закодированная строка кодируется в BASE64, и вычисляется 128бит хэш этой BASE64 строки.
В проге я не храню паролей, кодов, только алгоритмы их получения, а в качестве ключа предоставляю только хэш!

з.ы. посоветуйте НОРМАЛЬНЫЙ пример получения серийника проца, а то сколько я их не видел, все непутёвые либо не то что мне нужно!
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Snowy
Дата 3.4.2006, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(h2o @ 3.4.2006, 08:28 Найти цитируемый пост)
Куда мне встроить проверку чтобы её было сложно обойти?
Не проверку.
Просто кодируй какие-то данные.
Данные должны использоваться по ходу программы.
Если данные будут декодированы неверно, то программа будет глючить, т.к. константы будут неверны.
Простой способ: если используешь WinAPI сообщения, то используй не их сами, а массив DWORDов, который и кодируй.
При использовании, если в массиве неверные данные, то будут слаться совершенно левые сообщения и программа будет глючить по максимуму, если вообще будет работать.
Можно не только номера сообщений, а вообще любые константы привлечь к этому увлекательному процессу.

P.S. xor - не лучшая защита.
PM MAIL   Вверх
h2o
Дата 3.4.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Snowy @ 3.4.2006, 08:53 Найти цитируемый пост)
P.S. xor - не лучшая защита.

А что лучше?


Snowy, а пример того что описал не знаешь где найти или может у тебя есть?

а то неочень понимаю как это должно работать!


Я вообще думаю, а можно можно ли такое реализовать:

сделать главную процедуру закодированой, тоесть вместо
Код

procedure main;
begin
 ...
end;

написать в коде проги где-то
Код

dhkdgh sfsdf
sdfas
...
sdfa

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

з.ы. прочитав до конца, незабудьте что было вначале сообщения!

--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
_hunter
Дата 3.4.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



это реально, но только не на ЯВУ. на асме -- сколько угодно


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Snowy
Дата 3.4.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(h2o @ 3.4.2006, 10:50 Найти цитируемый пост)
Snowy, а пример того что описал не знаешь где найти или может у тебя есть?
Ну вот простой пример:
Код
var
  ar: array[0..20] of dword; // наш массив с константами.

  // .....

begin
  for i := 0 to Memo1.Lines.Count - ar[15] do
Здесь в 15 ячейку должно быть расшифрована 1.
Если в нее расшифрована не еденица, то получим ошибку.
И таких фокусов понавставлять во всю программу.
PM MAIL   Вверх
h2o
Дата 10.4.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

а как сделать чтобы всё кодировалось ключём - ID компа?

может другие варианты решения есть!!!

люди, хелп!!!
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Snowy
Дата 10.4.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(h2o @ 10.4.2006, 16:09 Найти цитируемый пост)
как предложил Snowy, так не универсально получается, т.е. нужно под каждую конфигурацию отдельно компилировать, либо для всех копий испоьзовать один и тот же ключ дешифровки!
Нет конечно.
В том-то и дело, что ключ состоит из 2-х частей.
1 - я складывается из параметров компьютера.
2 - я серийный номер для компьютера
Вместе они дают ключ, которым информация декодируется на любой машине.
А как этого добиться - алгоритмов много.
PM MAIL   Вверх
h2o
Дата 13.4.2006, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

добрые люди, если есть у кого примеры, запостите их тут плиз!

--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
ConstantinXXX
Дата 6.6.2006, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 27.5.2006
Где: U.S.A. :-)

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



Впринципе можно заблокировать все программу, После проверки кода прога разблокируется, если код декодирован неправильно то прога неразблокируется или т.п. 
--------------------
Как вы относитесь к девушкам, которые курят сигареты?Как не ослепнуть за компьютером© ORENCODE.info
PM MAIL WWW   Вверх
Rrader
Дата 23.6.2006, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



Создавайте все компоненты динамически, и желательно, чтобы компоненты для ввода данных не обслуживались API - т.е. были графическими smile  


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
nerezus
Дата 10.9.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



LUA


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
takedo
Дата 28.11.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Можно я тоже выскажусь?
на мой взгляд излишние алгоритмы шифрации ни к чему. Почему? Да потому, что крутой хацкер сидит в асме и ищет тот самый условный переход: если проверка прошла, то... если нет, то... Самое смешное заключается в том, что ему и декодировать не надо smile ! Поэтому, я думаю так:
1) делайте функцию проверки инлине подставляемой, чтобы вызов её осуществлялся не по одному и тому же адресу;
2) если уж программа не прошла проверку, то ни в коем разе не делайте так: ::AfxMessageBox("Проверки не пройдено",MB_OK);
почему? а) вы дали наводку на вызов функции AfxMessageBox, что будет обязательно увидено в вашем екзешнике б) вы дали наводку в виде текстовой строки "Проверки не пройдено", которая так и будет видна в исполняемом файле (я просто сам случайно, не зная никакого асембелера поламал одну демо версию, в которой было ограничение количества элементов 15000, я просто в екзешнике поменял в hiew это число на другое и наслаждался полноценной версией!! Почти.) в) никогда просто не делайте упра
Цитата


вляющие кнопки со стилем WS_HIDE, имею ввиду не задисабливайте. Это тоже очень просто, есть куча программ, которые просто пройдут по всем окнам и оживят их.
Таким образом, программа должна работать в идеале по другим, кривым алгоритмам(сами решайте а оно вам надо?).
3) лучшая защита - это ключ, который создан либо вами, либо вашим другом. Главное, чтобы протокол обмена между ключом и программой был известен только вам, ну и если протокол нестандартный - все ок.
4) для того, чтобы 3) конкретно работало, можно защититься хоть чуть чуть от дизассемблирования, например StarForce, который в принципе эмулируется частенько, но не дает дизассемблировать до понятных вещей. 
Ну в общем то и все. Почему же я это написал? Да потому, что сам сейчас об этом усиленно думаю smile  smile 


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
RedHat
Дата 6.1.2007, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(h2o @ 3.4.2006,  08:28)
 всю мою защиту можно обойти простой заменой проверки je на jnz и всё! прога будет сломана!!!

ты сам решил вопрос с защитой!! в том то всё и дело что крякер как выразился takedo не ищет методов шифрования !! он ищет тот самый переход jz или jnz который ведёт на demo или Full в программе что бы его изменить и его ни как не волнует как проходит шифрования ключа если он конечно решил не останавливатся на патче!!! 
Защита основанная на характеристиках железа тоже не очень!!! хотя если данные по железу являются кодом для распаковки - вот это реальная вещь (прям как электронный ключ). Вот тока юзер проапгрейдится и все...
после прочтения статей по защите программ стало ясно что если ктото хочет взломать программу и у него есть достаточный опыт тот её взломает!!! 
предложения использовать  серийный номер = часть программы. Юзер вводит серийный номер, программа использует этот номер для вычисления адреса процедуры, которая делает программу полной версией. Или к примеру в серийнике находятся части кода процедуры, или даже сама процедура регистрации в закриптованом виде. в этом случае без СН в программе просто не будет не хватающих байт для полной версии и крякеру будет ну очень сложно придумать их smile

PM MAIL   Вверх
Antonimus
Дата 12.1.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пустое это все! Если что-то попадает в память компьютера (в зашифрованнои виде или нет), все становится достоянием хакера, потому что под дебагерами все видно как черным по белому. А зашифрованные фрагменты Вы хакеру сами же и расшифруете своей же программой в один прекрасный момент, потому что в этот самый момент эти фрагменты должны быть выполнены, а в зашифрованном виде их выполнить нельзя. Так дождавшись расшифровки фрагмента хакер его сохраняет расшифрованным и блокирует функцию расшифровки. После этого программа будет работать лучше и быстрее, чем защищенная. Вобщем, такого рода защиты называют пятиминутками (утрированно конечно). Сам я пользую защиту USB-ключами "LOCK". Они позволяют запрятать во внутренней памяти до 256К программного кода, который не читается из ключа, а выполняется прямо внутри ключа. Вот это действительно защита. Программа (достаточно большая ее часть) вообще в комп никогда не попадает, поэтому хакеру и ломать нечего. Единственный вариант - разобраться по потоку данных через USB и по куску кода, который остается в компе, что прога делает и написать аналог. Не крутовастая ли задачка? smile  Если интересно, могу ссылку на доку по ключам скинуть.
PM MAIL   Вверх
Alex99
Дата 13.2.2007, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Может этот ключ спасёт вас ?
Senselock EL - www.senselock.ru
В него можно поместить часть вашей программы и она будет выполняться врямо внутри ключа. 
При грамотном использовании получится практически идеальная защита.
PM MAIL   Вверх
Google
  Дата 25.5.2019, 04:48 (ссылка)  





  Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Технологии защиты программного обеспечения | Следующая тема »


 




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


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

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