|
|
|
h2o |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: нет Всего: 1 |
Какие я только способы не придумывал, всю мою защиту можно обойти простой заменой проверки je на jnz и всё! прога будет сломана!!!
Куда мне встроить проверку чтобы её было сложно обойти? Вроде защита нормальная придумана, выскажитесь так ли это: получаю из своей проги серийники тома винта, винды, название биоса, инфа о проце, вся эта строка посимвольно переводится в число, кодируясь (Xor) кодовым словом. Закодированная строка кодируется в BASE64, и вычисляется 128бит хэш этой BASE64 строки. В проге я не храню паролей, кодов, только алгоритмы их получения, а в качестве ключа предоставляю только хэш! з.ы. посоветуйте НОРМАЛЬНЫЙ пример получения серийника проца, а то сколько я их не видел, все непутёвые либо не то что мне нужно! --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
Snowy |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Не проверку.
Просто кодируй какие-то данные. Данные должны использоваться по ходу программы. Если данные будут декодированы неверно, то программа будет глючить, т.к. константы будут неверны. Простой способ: если используешь WinAPI сообщения, то используй не их сами, а массив DWORDов, который и кодируй. При использовании, если в массиве неверные данные, то будут слаться совершенно левые сообщения и программа будет глючить по максимуму, если вообще будет работать. Можно не только номера сообщений, а вообще любые константы привлечь к этому увлекательному процессу. P.S. xor - не лучшая защита. |
|||
|
||||
h2o |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: нет Всего: 1 |
А что лучше? Snowy, а пример того что описал не знаешь где найти или может у тебя есть? а то неочень понимаю как это должно работать! Я вообще думаю, а можно можно ли такое реализовать: сделать главную процедуру закодированой, тоесть вместо
написать в коде проги где-то
тоесть тот же самый код процедуры, только закодированный например BASE64. ключ для раскодирования будет предоставлен по лицензии. При работе прога дойдя до места запуска этой процедуры, грузит непонятный код в память, там расшифровывает её ключем и выполняет! тоесть ехе будет не сломать, т.к. всё будет в оперативе!!! или это нереально? з.ы. прочитав до конца, незабудьте что было вначале сообщения! --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
||||
|
|||||
_hunter |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
это реально, но только не на ЯВУ. на асме -- сколько угодно
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Snowy |
|
||||
Эксперт Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Если в нее расшифрована не еденица, то получим ошибку. И таких фокусов понавставлять во всю программу. |
||||
|
|||||
h2o |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: нет Всего: 1 |
кстати!
как предложил Snowy, так не универсально получается, т.е. нужно под каждую конфигурацию отдельно компилировать, либо для всех копий испоьзовать один и тот же ключ дешифровки! а как сделать чтобы всё кодировалось ключём - ID компа? может другие варианты решения есть!!! люди, хелп!!! --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
Snowy |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Нет конечно. В том-то и дело, что ключ состоит из 2-х частей. 1 - я складывается из параметров компьютера. 2 - я серийный номер для компьютера Вместе они дают ключ, которым информация декодируется на любой машине. А как этого добиться - алгоритмов много. |
|||
|
||||
h2o |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: нет Всего: 1 |
прошу прощения за мой тупизм, но, сколько не пробую-никак не могу реализовать! вродебы Snowy всё нормально обьяснил, и схему я понимаю и представляю, но вот знаний нехватает чтобы это в делфе реализовать! закопался в теории, а примеров найти немогу, чтобы посмотреть как реализовать!!!
добрые люди, если есть у кого примеры, запостите их тут плиз! --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
ConstantinXXX |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 246 Регистрация: 27.5.2006 Где: U.S.A. :-) Репутация: нет Всего: 0 |
Впринципе можно заблокировать все программу, После проверки кода прога разблокируется, если код декодирован неправильно то прога неразблокируется или т.п.
--------------------
Как вы относитесь к девушкам, которые курят сигареты?Как не ослепнуть за компьютером© ORENCODE.info |
|||
|
||||
Rrader |
|
|||
Inspired =) Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: нет Всего: 191 |
Создавайте все компоненты динамически, и желательно, чтобы компоненты для ввода данных не обслуживались API - т.е. были графическими
|
|||
|
||||
nerezus |
|
|||
Вселенский отказник Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
LUA
|
|||
|
||||
takedo |
|
|||
Опытный Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Можно я тоже выскажусь?
на мой взгляд излишние алгоритмы шифрации ни к чему. Почему? Да потому, что крутой хацкер сидит в асме и ищет тот самый условный переход: если проверка прошла, то... если нет, то... Самое смешное заключается в том, что ему и декодировать не надо ! Поэтому, я думаю так: 1) делайте функцию проверки инлине подставляемой, чтобы вызов её осуществлялся не по одному и тому же адресу; 2) если уж программа не прошла проверку, то ни в коем разе не делайте так: ::AfxMessageBox("Проверки не пройдено",MB_OK); почему? а) вы дали наводку на вызов функции AfxMessageBox, что будет обязательно увидено в вашем екзешнике б) вы дали наводку в виде текстовой строки "Проверки не пройдено", которая так и будет видна в исполняемом файле (я просто сам случайно, не зная никакого асембелера поламал одну демо версию, в которой было ограничение количества элементов 15000, я просто в екзешнике поменял в hiew это число на другое и наслаждался полноценной версией!! Почти.) в) никогда просто не делайте упра
Таким образом, программа должна работать в идеале по другим, кривым алгоритмам(сами решайте а оно вам надо?). 3) лучшая защита - это ключ, который создан либо вами, либо вашим другом. Главное, чтобы протокол обмена между ключом и программой был известен только вам, ну и если протокол нестандартный - все ок. 4) для того, чтобы 3) конкретно работало, можно защититься хоть чуть чуть от дизассемблирования, например StarForce, который в принципе эмулируется частенько, но не дает дизассемблировать до понятных вещей. Ну в общем то и все. Почему же я это написал? Да потому, что сам сейчас об этом усиленно думаю -------------------- я не гольфист - я хоккеист |
|||
|
||||
RedHat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.3.2006 Репутация: нет Всего: нет |
ты сам решил вопрос с защитой!! в том то всё и дело что крякер как выразился takedo не ищет методов шифрования !! он ищет тот самый переход jz или jnz который ведёт на demo или Full в программе что бы его изменить и его ни как не волнует как проходит шифрования ключа если он конечно решил не останавливатся на патче!!! Защита основанная на характеристиках железа тоже не очень!!! хотя если данные по железу являются кодом для распаковки - вот это реальная вещь (прям как электронный ключ). Вот тока юзер проапгрейдится и все... после прочтения статей по защите программ стало ясно что если ктото хочет взломать программу и у него есть достаточный опыт тот её взломает!!! предложения использовать серийный номер = часть программы. Юзер вводит серийный номер, программа использует этот номер для вычисления адреса процедуры, которая делает программу полной версией. Или к примеру в серийнике находятся части кода процедуры, или даже сама процедура регистрации в закриптованом виде. в этом случае без СН в программе просто не будет не хватающих байт для полной версии и крякеру будет ну очень сложно придумать их |
|||
|
||||
Antonimus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.1.2007 Репутация: нет Всего: нет |
Пустое это все! Если что-то попадает в память компьютера (в зашифрованнои виде или нет), все становится достоянием хакера, потому что под дебагерами все видно как черным по белому. А зашифрованные фрагменты Вы хакеру сами же и расшифруете своей же программой в один прекрасный момент, потому что в этот самый момент эти фрагменты должны быть выполнены, а в зашифрованном виде их выполнить нельзя. Так дождавшись расшифровки фрагмента хакер его сохраняет расшифрованным и блокирует функцию расшифровки. После этого программа будет работать лучше и быстрее, чем защищенная. Вобщем, такого рода защиты называют пятиминутками (утрированно конечно). Сам я пользую защиту USB-ключами "LOCK". Они позволяют запрятать во внутренней памяти до 256К программного кода, который не читается из ключа, а выполняется прямо внутри ключа. Вот это действительно защита. Программа (достаточно большая ее часть) вообще в комп никогда не попадает, поэтому хакеру и ломать нечего. Единственный вариант - разобраться по потоку данных через USB и по куску кода, который остается в компе, что прога делает и написать аналог. Не крутовастая ли задачка? Если интересно, могу ссылку на доку по ключам скинуть.
|
|||
|
||||
Alex99 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 13.2.2007 Репутация: нет Всего: нет |
Может этот ключ спасёт вас ?
Senselock EL - www.senselock.ru В него можно поместить часть вашей программы и она будет выполняться врямо внутри ключа. При грамотном использовании получится практически идеальная защита. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Технологии защиты программного обеспечения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |