|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.08.2010, 12:11 | #1 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
Шифрование кода программы
Здравствуйте,
продолжаю пытаться разбираться со статьёй http://www.delphikingdom.com/asp/vie...?catalogid=846. Возник ряд вопросов. 1)Самое первое что я не понял - function CheckMemLabel(ptrStart,ptrEnd: pointer; strlabel: string; var point: pointer): boolean; Зачем тут point объявлен? Какое значение надо передавать функции, и зачем, если сразу после бегина point := -1; Нельзя ли её просто в Var засунуть?Вот так: Код:
Код:
3) Главный вопрос, статье уже 7 лет, эти методы защиты еще хоть сколько-нибудь актуальны? Может у кого-то уже есть готовый простенький пример такой защиты? Буду очень благодарен. Еще там в комментариях приведён вот такой код Код:
Последний раз редактировалось Kolik317; 30.08.2010 в 12:38. |
30.08.2010, 13:01 | #2 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
1) Описать параметры-переменные как в твоем случае 2) Описать тип функции аки запись. В твоем случае point - параметр только для выхода. Ложить в него что-то бесполезно (если не ошибаюсь по хорошему стоило писать out point: LongInt)) Изначально он равен -1 - это инициализация, Если все прошло гладко - он становится равным размеру файла. Вообще функция тут с излишествами построена - ее можно упростить (возврат Longint вместо Boolean и проверка на -1 ), но автор не подумал. Цитата:
I'm learning to live...
|
||
30.08.2010, 13:07 | #3 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
Спасибо, вот только можно поподробнее про попроще и понадежнее? ссылочку или примерчик пожалуйста) Или хотя бы просто в какую сторону копать)
|
30.08.2010, 13:14 | #4 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Криптография тема обширная, так что ты лучше бы четко задачу ставил. Цитата:
I'm learning to live...
|
||
30.08.2010, 13:25 | #5 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
Ну с пакерами протекторами я уже повозился, на все есть анпакеры, кроме последних версий платных, но это тоже на пару месяцев... Как я понимаю самое дельное написать этот пакер самому, но этож ж... Ну и я планировал как-то самому реализовать нестандартную защиту процедуры проверки, а потом всё это еще и пакером жмакнуть.
У меня задача сейчас зашифровать процедуру проверки ключа (да в общем любую процедуру), как в той статье что я привел. Последний раз редактировалось Kolik317; 30.08.2010 в 13:29. |
30.08.2010, 13:33 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Самое просто - считать файл в String. Зашифровать по ключу ( А хотя бы и так: http://www.programmersforum.ru/showthread.php?t=50620 http://www.programmersforum.ru/showthread.php?t=58277 ). Записать файл обратно.
I'm learning to live...
|
|
30.08.2010, 13:44 | #7 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
Тоесть проще говоря алгоритм такой:
пишу программу, между шифруемой процедурой так же ставлю метки, считываю файл внешней утилкой, между этими метками всё шифрую как хоть в String, записываю между этими метками зашифрованный код, потом в программе перед запуском шифрованной процедуры запускаю функцию расшифровки. Всё так? |
30.08.2010, 14:04 | #8 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну почти, но я бы не полагался на метки.
Если очень хочется можно адреса зашифрованных областей хранить в конце файла например в секции кода, если есть место, или в секции DOS STUB, где описано сообщение об ошибке при запуске из-под оси, которая не поддерживается экзешником (ты ведь экзешник шифруешь?), это сообщение все равно аттавизм.
I'm learning to live...
|
31.08.2010, 15:50 | #9 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
Как то мне всё это сложно пока, я только второй день этими делами занимаюсь, вот сейчас думаю, а если я беру делаю метками, открываю хекс-редактором, беру код между меток, шифрую, удаляю вручную метки, записываю адреса конца и начала шифрованного кода, а в процедуру расшифровки вручную прописываю адреса начала/конца шифрованной области?
|
31.08.2010, 16:36 | #10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Например ты хочешь чтоб твоя метка называлась PE. Попробуй такое имя и убедишся что экзешники винды твоя программа будет пороть, потому что буквы PE в каждом экзешнике присутствуют. Метки ненадежны.
I'm learning to live...
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Упрощение кода программы | Alex TGM | Общие вопросы C/C++ | 7 | 30.06.2010 22:40 |
Разъяснение кода программы ) | Expelio | Помощь студентам | 2 | 25.03.2010 00:00 |
Автоматизация программы без кода | Luciolucas | Помощь студентам | 1 | 14.10.2009 01:49 |
Анализ кода программы | virput1 | Софт | 8 | 04.08.2009 14:53 |
Оптимизация кода программы | insi | Фриланс | 2 | 17.05.2008 18:30 |