Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Вниз

Защита от перезаписи кодав памяти   Найти похожие ветки 

 
Mundrik   (2008-09-05 14:37) [0]

Пишу на delphi 2007.
Подскажите, возможно ли защитить загруженное приложение от изменения его кода другими процессами, а главное через модификацию динамически загружаемых библиотек?


 
Ega23 ©   (2008-09-05 14:38) [1]

Ты сначала скажи, что ты хочешь сделать.


 
Rouse_ ©   (2008-09-05 14:39) [2]

Нельзя


 
Сергей М. ©   (2008-09-05 14:50) [3]


> Mundrik


Кой-какие меры можно, конечно, предпринять, но 100%-й гарантии это в любом случае не даст.

лучше обратить свой взор на эфеективные методы обнаружения фактов несанкционированной модификации своего кода/данных


 
evvcom ©   (2008-09-05 15:07) [4]


> а главное через модификацию динамически загружаемых библиотек?

а зачем модифицировать твои dll, если проще внедрить свои?


 
Mundrik   (2008-09-05 17:22) [5]

насчет внедрить свои не знаю, но взлом братья по разуму делают путем модификации сторонней, динамически загружаемой моей прогой dll.

допустим в проге есть переменная optRegister: Boolean;
подскажите пожалуйста как можно запретить\затруднить изменение данной переменной?

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


 
Rouse_ ©   (2008-09-05 18:17) [6]


> но взлом братья по разуму делают путем модификации сторонней,
>  динамически загружаемой моей прогой dll.

Эммм... офффтоп. Это не ты случаем ГосСтройСмету пишешь? :) А то в своей практике встречал я ее, как раз так и подламывалась ;)


 
Mundrik   (2008-09-05 18:20) [7]

не ))  но тоже так подламывают..

Сергей М. ©,  "Кой-какие меры можно, конечно, предпринять"  хоть чуть чуть поподробней )


 
Renegat ©   (2008-09-05 18:44) [8]

может быть, ст0ит написать свою виртуальную машину и перегнать прогу в специфические команды этой ВМ?
ЗЫ. я знаю что це на грани безумия %) однако, раз уж так важна защита кода...


 
KilkennyCat ©   (2008-09-05 19:22) [9]


> раз уж так важна защита кода...

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


 
Mundrik   (2008-09-05 19:23) [10]

Renegat, не удержался от остроумной реплики?
мне не стока уже ту прогу защищать как сам процесс понять можно или нет.. на будущее так сказать ЦЕ знать..


 
Сергей М. ©   (2008-09-05 19:43) [11]


> хоть чуть чуть поподробней


Ну, скажем, контрольная сумма участка кода перед передачей ему управления.


 
Mundrik   (2008-09-05 20:19) [12]

Сергей М.,  вот смотрите, в внедренном в dll коде будет только команды изменения в моей проге байтика, отвечающего за регистрацию "optRegister: Boolean " сам код естественно будет не тронут.

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

неужели никак от этого на защититься?

а разного рода протекторы типа asprotect как-то контролируют эти моменты? а то получается один фиг в памяти уже в распакованном виде байтик изменил и весь протект коту под хвост..


 
Servy ©   (2008-09-05 20:41) [13]

> вот смотрите, в внедренном в dll коде будет только команды
> изменения в моей проге байтика, отвечающего за регистрацию
> "optRegister: Boolean " сам код естественно будет не тронут.


Делаем сто копий данного байтика по разным адресам памяти. Изредка сравниваем, не сделал ли кто какую пакость. Если сделал, то подождав немного для приличия разваливаемся с красивой ошибкой (например AccessViolation). Можно придумать еще кучу способов усложнить ломателям жизнь, только стоит ли твоя программа потраченных усилий?


 
Mundrik   (2008-09-05 21:10) [14]

Servy, да это разве усилия ))
а можно ещё пару других идей? )


 
Servy ©   (2008-09-05 21:56) [15]

Да в гугле тебе этих идей три вагона найдется, если усилий-то не жалко :).

Самый верный способ был предложен еще в [8]. Отлаживать какие-нибудь VisualBasic приложения мало какой адекватный человек станет. Правда для Visual Basic"а наверняка уже тулз понаписали, чтобы облегчить сей процесс, а вот если использовать что-нибудь малоизвестное, или свое - потенциальный ломатель 10 лет угробит, чтобы разобраться.

Также из универсальных советов, которые как-то высказывались на этом форуме в подобных темах - использовать многопоточность (многонитевость, как ее кое-кто любит величать ^^) для проверки своей зарегестрированности/целостности, так как дебажить такие приложения то еще удовольствие. Не хранить зарегестрированно/не зарегистрированно в одном месте, не делать функций IsRegistered: Boolean, так как это место довольно быстро найдут и поменяют.  Должно быть несколько проверок в разных местах, зависящих от разных параметров. Также, стоит почаще обращаться к переменным, отвечающим за регистрацию (ну ключ, файл .slip или что там у тебя для регистрации используется), и проводить над ними длительные бесполезные рассчеты, чтобы потенциальный взломщик заколебался искать, где же именно у тебя проверка на зарегистрированность. Проверять время выполнения небольшого участка кода, который на любой машине будет выполнятся доли секунды. Если выполняется больше секунды - ахтунг, нас отлаживают, ставим флаг, через пару минут разваливаемся. Вот все, что вспомнилось сходу.


 
Сергей М. ©   (2008-09-06 10:56) [16]


> неужели никак от этого на защититься?


Со 100%-й гарантией - никак.

Но если твоя "прога" серьезная, то она должна предполагать и серьезные методы защиты от взлома. Ведь знание адреса того самого "ключевого байтика" - это уже результат взлома, и если взлом кому-то дался легко и дешево, значит грош цена такому методу защиты от сесанкц.использования программы.


 
sniknik ©   (2008-09-06 11:12) [17]

> Servy, да это разве усилия ))
> а можно ещё пару других идей? )
можно еще одну.

> путем модификации сторонней, динамически загружаемой моей прогой dll.
откажись от dll, реализуй весь ее функционал в своей проге. dll зло.


 
palva ©   (2008-09-06 17:09) [18]


> откажись от dll, реализуй весь ее функционал в своей проге. dll зло.

А что делать, если dll уже украдена, а реализовать ее функционал я не умею? :(


 
Renegat ©   (2008-09-06 17:47) [19]

> [18] palva ©   (06.09.08 17:09)

=)

http://delphimaster.net/view/15-1220267957/



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.042 c
2-1220338737
Сергей
2008-09-02 10:58
2008.10.12
Как увеличить высоту ComboBox?


1-1198176914
Dronishe
2007-12-20 21:55
2008.10.12
Анимация формы окна


15-1219061215
Dmitry S
2008-08-18 16:06
2008.10.12
Как быстро выполнить операцию?


2-1220434352
Delphist
2008-09-03 13:32
2008.10.12
SQL-запрос


15-1219145496
keymaster
2008-08-19 15:31
2008.10.12
Как правильнее?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский