![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
Guest |
![]()
Сообщение
#21
|
Гость ![]() |
Цитата что за программа, что ее так надежно надо защищать? Речь о любой программе. Сейчас, или потом, прийдется об этом подумать. Всегда есть вещи, которые не хочется распространять. Допустим, вид шифровки. Допустим, я пишу программу, которая зашифровывает текст. И ли просто создаю обычный пароль, но внутри программы паскаля. Или допустим, создаю игру, а в ней внутри одного файла есть много уровней. Перейти на которые можно лишь пройдя предыдущий и плучив пароль. Масса всего некомерческого. И защита просто необходима. И речь об обычных программках на Турбо Паскале. Дело в том, что если защищать, так надежно, иначе нет смысла защищать. |
Altair |
![]()
Сообщение
#22
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата Допустим, вид шифровки. Допустим, я пишу программу, которая зашифровывает текст. так нажо писать программу, шифрования текста, так, что бы саму программу не надо было защищать... Цитата И защита просто необходима. Пока я не вижу ничего, что требует защиты.. а если ты пишешь в TP7, то о мощной защите забудь... И вообщ, хватит заниматься болтологией.. ты напиши, что-то, требующее защиты, тогда поможем защитить..... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Romtek |
![]()
Сообщение
#23
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 303 Пол: Мужской Реальное имя: Роман Репутация: ![]() ![]() ![]() |
Вставляй процедуры в критические места программы. Взято из книги Фаронова "Практика программирования на Турбо Паскаль 7.0".
Код Procedure TrassBlock1; В кодировке ДОС{îá¬α«ß ñ½∩ í«α∞íδ ß Γαáßß¿α«ó¬«⌐ ß »«¼«Θ∞ε ¼«ñ¿Σ¿¬áµ¿¿ ¬«¼á¡ñδ} inline( {@0:} $0E/ {push cs} $E8/$00/$00/ {call @1} {@1:} $5B/ {pop bx} $83/$EB/$04/ {sub bx,@1-@0} $07/ {pop es} $53/ {push bx} $B4/$C3/ {mov ah,$C3} $26/$88/$67/$11/$90/ {mov es:[bx+@2-@0],ah} {@2:} $90/ {nop} $B4/$90/ {mov ah,$90} $26/$88/$67/$11/$90/ {mov es:[bx+@2-@0],ah} $5B); {pop bx} {------------------} Procedure TrassBlock2; {ü«α∞íá ß Γαáßß¿α«ó¬«⌐ ß »«¼«Θ∞ε ¬«¡Γα«½∩ óαѼѡ¿} var t1,t2: LongInt; begin t1 := MemL[0:$046C]; t2 := 0; repeat while MemL[0:$046C]=t1 do; while MemL[0:$046C]<t1+2 do inc(t2); until t2>=500; TrassBlock1; end; {TrassBlock2} -------------------- Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
|
SKVOZNJAK |
![]()
Сообщение
#24
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Тема очень интересная и не все способы защиты здесь обсудили. Есть ещё одно направление. Как раз на паскалевских программах оно должно давать неплохую защиту для ограниченного количества информаци. Дизасемблирование не панацея. Дизасемблировать то можно всё, да кто потом в этом разберётся...
Как раз пример такой проги, кошмар асматика. Нужно дизасемблировать и исправить ошибку ![]() Сообщение отредактировано: SKVOZNJAK - 22.02.2005 10:20 Прикрепленные файлы ![]() |
Guest |
![]()
Сообщение
#25
|
Гость ![]() |
Oleg_Z
Цитата ты напиши, что-то, требующее защиты, тогда поможем защитить..... Я считаю, что защиты требует создатель, на то что ОН(!) хочет. Romtek : Спасибо. Попробую... SKVOZNJAK : ок... : ) Я сейчас перешел на Free Pascal, поэтому, можно и по нему давать советы для защиты. В целом, пересмотрю все уже данные советы, и буду заглядывать сюда еще. Спасибо всем за предыдущие советы и будущие(заранее спасибо) : ) |
SKVOZNJAK |
![]()
Сообщение
#26
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Как продвигается дизасемблирование проги ;)
|
Romtek |
![]()
Сообщение
#27
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 303 Пол: Мужской Реальное имя: Роман Репутация: ![]() ![]() ![]() |
Советую прочитать статьи в CRACKL@B: http://www.cracklab.ru/art/
Крутая защита или CRACKL@B CrackMe #1 Исследование защит shareware-программ Там много полезной информации. Чтобы защищать программы, надо немного самому уметь ломать программы. Или хотя бы знать на что обращать внимание, где слабые места и всё такое. Вот ещё тебе кусок, для старта: Код (* Проверка правильности ввода строки *) //uses // SysUtils; Type BoolProc = function (s: string): boolean; PBoolProc = ^BoolProc; Const HashSum: longint = 3412; // это, скорее всего, слабое место var str: string; Function Hash (Key: string): Longint; Var I, Sum:Integer; Begin Sum := 0; For I := 1 To Length (Key) Do Sum := Sum + (Ord (Key[I]) * (1 shl I)); Result := Sum; End; function Passed (ss: string): boolean; begin Result := (Hash (ss) = HashSum); end; procedure TestPsw (f: BoolProc); var b: boolean; begin b := f (str); writeln ('Passed test: ', b); end; var pp: pointer; begin write ('Enter password: '); readln (str); pp := @Passed; // *** Debugging: // writeln (IntToHex(Longint(@Passed),8)); // writeln (IntToHex(Longint(pp),8)); // здесь надо сбить кракера с толку (самый наивный способ :-) asm inc PP //если изменить адрес вызываемой функции проверки, то произойдёт ошибка dec PP //чтобы ошибка не произошла, здесь я возвращаю указатель обратно end; TestPsw (PP); end. В ней наверняка есть слабые места, но для начала сойдёт. -------------------- Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
|
SKVOZNJAK |
![]()
Сообщение
#28
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нда, защита, взлом, а в текстовом визуализаторе никто на код взглянуть и не догадался
![]() |
Digitalator |
![]()
Сообщение
#29
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Я считаю, что защиты требует создатель, на то что ОН(!) хочет. Не думаю, что это правильный ход мыслей. Довольно глупо ставить СтарФорс на тетрис, или выпускать виндоуз по шароварной лицензии ![]() -------------------- |
Dark |
![]()
Сообщение
#30
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если вы решили защитить вашу информацию то маааленькие советы:
1. Пойдите в ВУЗ на кафедру Защиты Информации. 2. Научитесь ломать программы, ну положим начнем с малого: Вообще есть такой автор как Крис Касперски, который учит как взламывать программы, и сам показывает как их можно было бы лучше защитить, Я даю его тексты, точнее фрагменты из его книги. Я думаю кто захочет тот разберется - там используется асм и си. Для тех кто любит техносказки - первая часть kasper01 вторая часть - его перевод обучалки от Орка "Взлом как искуство" третья - взлом програм, его собственные исследования IDA_PRO - его обучалка об IDA - взламывающей системе, и не только его... Прикрепленные файлы ![]() ![]() ![]() ![]() -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Romtek |
![]()
Сообщение
#31
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 303 Пол: Мужской Реальное имя: Роман Репутация: ![]() ![]() ![]() |
Вот ещё исходник на FPC (Free Pascal), который легко переделать для любого другого компилятора.
Функция замера текущего тика процессора (времени) GetClock реализуется с помощью функции GetTickCount из модуля Windows. Модуль Windows подключается именно по этой причине. Для портирования в ТП7 нужно заменить реализацию замера тика (времени) в функции GetClock на свою (можно через GetTime). Модуль MD5 можно взять отсюда: http://wikisource.org/wiki/MD5_Hash Идея такова: вы вводите пароль в виде строки, специальная функция проверки сверяет пароль и потом выдаёт ответ в boolean о корректности. Сверка паролей делается при помощи известного алгоритма MD5, который выполняет односторонние преобразования и выдаёт хеш (hash). Кроме проверки хешей вводимых строк проверяется ещё и наличие отладочных инструментов (debugger). Если между точкой ввода и проверкой хешей замечена разница во времени, большая 10 тиков (на самом деле, без отладки она вообще = 0), то меняется адрес точки входа в функцию проверки хешей. Тогда программа "вылетит" с ошибкой. Пароль: "test" {$IFDEF FPC} Этот код не претендует на реальную защиту программ и выполняет функцию пособия для разработки более серьёзной защиты. Сообщение отредактировано: Romtek - 21.07.2005 23:15 -------------------- Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
|
![]() ![]() |
![]() |
Текстовая версия | 16.07.2025 12:14 |