IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Защита от взлома, Есть ли она?
Славик
сообщение 17.02.2005 23:27
Сообщение #1


Гость






Всем привет. И спасибо за быстрые отклики в предыдущих темах.

Я искал на вашем форуме, но не нашел... по поводу вопроса:

Можно ли взломать ".exe" файл созданный на Турбо паскале 7 ? (чтобы был виден алгоритм)
Как это можно сделать?

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

Просьба обьяснить это попонятней, поскльку я новичок в программировании.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Romtek
сообщение 21.07.2005 23:14
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


Вот ещё исходник на 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}
{$Mode Delphi}
{$ENDIF FPC}

uses md5, Windows;

Type
BoolProc = function (s: string): boolean;
PBoolProc = ^BoolProc;

Const
Hash: TMD5Digest = (
9, 143, 107, 205, 70, 33, 211, 115,
202, 222, 78, 131, 38, 39, 180, 246
); // хеш пароля "test"

var
str: string;

function GetClock () : DWord;
begin
Result := GetTickCount
end;

function Passed (ss: string): boolean;
begin
Result := MD5Match (MD5String (ss), Hash);
end;

procedure TestPsw ();
var
b: boolean;
f: boolproc;
pp: pointer;
ds,de: DWord;
dr: word;
begin
PP := @Passed;
{...some operations...}
ds := GetClock ();
dr := 137 + random (1299); // просто цифры
inc (PP, dr); // меняем точку входа в функцию проверки
de := GetClock ();
if (de - ds < 10) then // если разность больше 10 тиков, то прогу взламывают (дебагер)...
dec (PP, dr); // возвращаем, если всё нормально
ds := GetClock (); // просто так, для отвлечения внимания
{.../some operations...}
@f := PP;
b := f (str);
writeln ( 'Test passed: ', b );
end;

var
sum :TMD5Digest;
i: integer;

begin
Randomize;
write ('Enter password: '); readln (str);
TestPsw ();
readln;
end.


Этот код не претендует на реальную защиту программ и выполняет функцию пособия для разработки более серьёзной защиты.

Сообщение отредактировано: Romtek - 21.07.2005 23:15


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Славик   Защита от взлома   17.02.2005 23:27
xds   1) общая идея алгоритма видна без взлома ;); 2) д...   18.02.2005 2:59
Славик   Обьясни пожалуйста свой первый пункт. Как это видн...   18.02.2005 15:45
Altair   это не возможно, что бы совсем не подкопаться, ког...   18.02.2005 16:04
SKVOZNJAK   Используй побольше GOTO и констант, правильное зна...   18.02.2005 16:11
SHnur   также можеш использовать побольше break , exit , h...   18.02.2005 16:32
SKVOZNJAK   exit , halt, repeat, until легко эмулируются при п...   18.02.2005 16:38
xds   Раз ты догадался, что задача может быть решена не...   18.02.2005 16:44
Славик   Спасибо всем за отзывы. Кое что пересмотрю... Ес...   18.02.2005 17:15
SKVOZNJAK   GOTO не такое слабое как кажется. Допустим у тебя ...   19.02.2005 2:39
xds   Например, машинный код цеплялют (до сих пор, сцен...   19.02.2005 4:29
Михаил Густокашин   можно устроить xor с паролем на критический участо...   20.02.2005 10:18
ZeroLink   Для защиты: 1) Шифруй все надписи типа "Cop...   20.02.2005 14:15
Славик   Некоторые предложения мне подойдут. Спасибо Вам...   20.02.2005 18:40
volvo   :blink: Так какая же из них после этого главная...   20.02.2005 18:50
Altair   Он говрил не про ХОГ а про xor (XOR) - это команд...   20.02.2005 19:24
Славик   Так какая же из них после этого главная? Если нап...   20.02.2005 19:37
volvo   Как я могу отвечать на конкретные вопросы, не имея...   20.02.2005 19:45
Славик   Какая ОС, какие права (пользователь, админ...   20.02.2005 19:53
Altair   Да можно сркыть все что угодно, можно сделать проц...   20.02.2005 20:04
Guest   Речь о любой программе. Сейчас, или потом, прийд...   20.02.2005 20:21
Altair   так нажо писать программу, шифрования текста, так...   20.02.2005 20:55
Romtek   Вставляй процедуры в критические места программы. ...   22.02.2005 1:15
SKVOZNJAK   Тема очень интересная и не все способы защиты здес...   22.02.2005 10:19
Guest   Oleg_Z Я считаю, что защиты требует создатель, на...   22.02.2005 15:16
SKVOZNJAK   Как продвигается дизасемблирование проги ;)   22.02.2005 21:46
Romtek   Советую прочитать статьи в CRACKL@B: http://www.cr...   22.02.2005 23:19
SKVOZNJAK   Нда, защита, взлом, а в текстовом визуализаторе ни...   24.02.2005 15:56
Digitalator   Не думаю, что это правильный ход мыслей. Довольно...   6.03.2005 21:47
Dark   Если вы решили защитить вашу информацию то мааален...   9.03.2005 5:41
Romtek   Вот ещё исходник на FPC (Free Pascal), который лег...   21.07.2005 23:14


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 16.07.2025 23:27
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"