Зашита программ!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Зашита программ!

Сообщение DVV » 01.10.2004 (Пт) 19:25

Кто-нибудь знает самый легкиё и надёжный способ зашиты программ?
(от копирования,от взлома)
Vadim

PATRIOT_kz
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 14.09.2004 (Вт) 21:09
Откуда: Павлодар, Казахстан

Сообщение PATRIOT_kz » 01.10.2004 (Пт) 20:45

От копирования существует куча ПО для защиты своего ПО такие как:
->StarForce BE, Proffessional ...
->CopyGuard
->CDGuard

От взлома есть хитрые штуки, которые называются:
->ExeEncrypter
не помню все, короче проги, которые шифруют .exe файл, путём заменой некоторых байт на один, в результате получается размер меньше и оптимизация движка.
Press any key . . .

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 02.10.2004 (Сб) 19:07

Хорошо!
А самому как можно!
Vadim

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 02.10.2004 (Сб) 22:17

Хм... Забавная идея... Ты бы лучше сказал, что именно надо спрятать... Кстати все надписи на кнопках, лейблы и др. хранится в незашифрованном виде, только между буквами стоит CHR$(0). Берём любой HexEdit и коверкаем надписи... :wink:
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

DmitriyIT
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 01.08.2004 (Вс) 13:16

Сообщение DmitriyIT » 02.10.2004 (Сб) 23:04

Нужно в полную защиту включить:
1) Защиту от дебагеров
2) Защиту от модификации EXE - CheckSum
3) Защиту от дизассемблирования
4) Защиту шифрованием
1-е достигается декларированием IsDebuggerPresent (WinAPI) и установкой таймера на форму, который в случае "заморозки" системного времени все вырубит, что защитит от тупых дебагеров, и осмотром кучи технических форумов на тему того, как засечь "хитрые" :) дебагеры.
2-е - сохраняем сумму(лучше не в лобовую, а каким-либо алгоритмом вида S=X1+2*X2^2+3*X3+...) всех байтов EXE и проверяем при запуске.
3 - используем какой-нибудь пакер или протектор, или шифруем сами и добавляем в начало EXE распаковщик.
4 - Встраиваем шифрующий движок.
Если программа очень важна 8) , можно применить все вышеперечисленное :shock:, а иначе лучше не стоит, можно стать параноиком :twisted: и всю жизнь обсуждать "новый эксплоит с переполнением буфера и контролем стека сервера WPlanet" 8) . Но если действительно нужно, защиту делать стоит, могу по конкретным вопросам помочь или дать исходники алгоритмов.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 03.10.2004 (Вс) 1:47

... достигается декларированием IsDebuggerPresent (WinAPI) ...

1.IsDebuggerPresent (WinAPI) не поможет например от SoftIce.
... используем какой-нибудь пакер или протектор ...

2.Зачастую на популярные пакеры и протекторы есть, декомрессоры и депротекторы.
Но для комплексной защиты подойдет.
الفيجوال بيسك الرابح

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 05.10.2004 (Вт) 17:06

Обсуждали уже. Повторяться не хочу, читайте здесь: http://bbs.vbstreets.ru/viewtopic.php?p=41871#41871

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 05.10.2004 (Вт) 17:15

Можно сжать UPX без дальнейшего разжатия(там есть параметр такой).
Единственное НО!!! Прога после сжатия может не заработать!!!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 06.10.2004 (Ср) 10:00

Шурик писал(а):Можно сжать UPX без дальнейшего разжатия(там есть параметр такой).
Единственное НО!!! Прога после сжатия может не заработать!!!

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

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 07.10.2004 (Чт) 9:02

Пиши демоверсии
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 07.10.2004 (Чт) 21:39

kif а ты чё-нибудь уже написал?
Vadim

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 08.10.2004 (Пт) 9:49

какую программу ты хочешь защитить.
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 08.10.2004 (Пт) 13:02

Может быть этот способ не оригинален, но...

Создавая проект для какой либо организации, я, просто на просто, вписывал везде где можно ее название или данные касающиеся этой организации, например в отчетах. Ничего не будет если в каждом отчете вверху будет название организации или фамилии подписывающих будут не динамическими, а статическими.

Такой проект, какой бы он ни был, никому не нужен.

Да и дебагером его долго править (относительно).

кроме этого можно еще добавить и методы защиты, указанные выше DmitriyIT. Их я не применял, кроме защиты шифрованием EXE.
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 13.10.2004 (Ср) 19:52

Раз уж заговорили... Кто-нибудь знает методы вычисления контрольной суммы строки?
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.10.2004 (Ср) 19:56

CRC32 :lol:
Кинуть исходник?
Изображение

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 13.10.2004 (Ср) 20:27

Кинь. На Zer86@list.ru
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.10.2004 (Ср) 20:33

Ну на:
Код: Выделить всё
Option Explicit

Private Const CRCPOLY = &HEDB88320
Private Const CRC_MASK = &HFFFFFFFF
Private CRCTable(255) As Long

Public Function GetCRC32(Text As String) As Long
Dim i As Long, LastCRC As Long
LastCRC = CRC_MASK
For i = 1 To Len(Text)
    LastCRC = CRCTable((LastCRC And &HFF) Xor (Asc(Mid$(Text, i, 1)))) Xor (LastCRC \ 256)
Next
GetCRC32 = LastCRC
End Function

Public Function CountCRC32(FileName As String) As Long
Dim i As Long, r As Byte, LastCRC As Long, FileNumber As Integer
FileNumber = FreeFile
Open FileName For Binary As FileNumber
LastCRC = CRC_MASK
For i = 1 To LOF(FileNumber)
    Get FileNumber, i, r
    LastCRC = CRCTable((LastCRC And &HFF) Xor r) Xor (LastCRC \ 256)
Next
Close FileNumber
CountCRC32 = LastCRC
End Function

Private Sub Class_Initialize()
Dim i As Integer, j As Integer, r As Long
For i = 0 To 255
    r = i
    For j = 8 To 1 Step -1
        If (r And 1) > 0 Then r = (r \ 2) Xor CRCPOLY Else r = r \ 2
    Next
    CRCTable(i) = r
Next
End Sub
Изображение

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 21.10.2004 (Чт) 16:25

Тут проанализировал 35 проектов VB, демонстрирующих приёмы, использующиеся при создании shareware программ. Исходно этих проектов было штук 50, но всякие BestRegister и AdvancedTrial, состояшие из пары строк кода были удалены.
Вот собственно эти приёмы:
- генерация серийного номера по имени и номеру с хранением в реестре или файле
- использование MD5 или SHA1 для генерации пароля на основе ключа
- шифрование строковых констант, использующихся в программе и использование названий функций потенциально вводящих в заблуждение
- привязка к серийному номеру диска, процессора, операционной системы
- определение времени по дате System.ini, исполняемого или другого файла
- обнаружение SoftIce, Win32Dasm, Debuggy, OllyDBG, ProcDump, SoftSnoop, TimeFix, TMR Ripper Studio, Regmon, Filemon, Hex Workshop, Numega Smart Check
- прием, затрудняющий работу отладчиков
- подсчёт контрольной суммы - CRC32 и.т.п.
- шифрование значений БД (если она используется)
- прямая проверка значений в памяти программы

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.10.2004 (Чт) 16:49

Я еще применял такой способ (в редких случаях, когда условия позволяли и тираж маленький).
Например, прога предназначена для организации "Рога и копыта". Вместе с программой поставляется шифрованный файлик (в котором указана некоторая информация о покупателе) и заголовки, названия и прочие текстовые контанты берутся из этого файла. Смысл в том, что для другой организации этот файл совершенно бесполезен.
Lasciate ogni speranza, voi ch'entrate.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 21.10.2004 (Чт) 16:57

в дополнение к сказанному выше:

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

pitbull
Постоялец
Постоялец
 
Сообщения: 314
Зарегистрирован: 25.06.2004 (Пт) 15:37
Откуда: Кемерово

Сообщение pitbull » 21.10.2004 (Чт) 19:40

marvan писал(а):Тут проанализировал 35 проектов VB, демонстрирующих приёмы, использующиеся при создании shareware программ.

Мож ты поделишься.... :D :D :D

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 22.10.2004 (Пт) 12:15

все не вышлю, но вот одно из лучших
ActiveLock
конечно использовать этот ocx я посоветую только врагу, т.к. снять такую защиту - дело не сложное. Но вот поюзать его исходники - правильное решение.

pitbull
Постоялец
Постоялец
 
Сообщения: 314
Зарегистрирован: 25.06.2004 (Пт) 15:37
Откуда: Кемерово

Сообщение pitbull » 23.10.2004 (Сб) 8:20

Да. неплохая штука :)

Santa
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 101
Зарегистрирован: 07.05.2004 (Пт) 1:34
Откуда: KZ

Сообщение Santa » 06.04.2005 (Ср) 4:16

tyomitch писал(а):Ну на:
Код: Выделить всё

Private Const CRCPOLY = &HEDB88320
Private Const CRC_MASK = &HFFFFFFFF
Private CRCTable(255) As Long

Private Sub Class_Initialize()
Dim i As Integer, j As Integer, r As Long
For i = 0 To 255
    r = i
    For j = 8 To 1 Step -1
        If (r And 1) > 0 Then r = (r \ 2) Xor CRCPOLY Else r = r \ 2
    Next
    CRCTable(i) = r
Next
End Sub


Что за константа CRCPOLY, и почему именно такое значение.
Если я не ощибаюсь можно взять и др., и тогда таблица CRCTable
забивается др. значениями.
И еще вопр. как этот код к проекту добавить. :roll:
SIVIS PACEM PARA BELLUM


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

    TopList