![]() |
eXeL@B —› Основной форум —› сложность взлома |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 08 декабря 2005 20:53 · Личное сообщение · #1 Понимаю, что все на свете ломается, но все же. Вот такой вопрос как будет дольше ломаться? 1. при запуске программы до создания главного окна происходит проверка и если одно из условий не выполняется, то программа закрывается так и не показав ни одного окна и ни одного сообщения. 2. при запуске программы до создания главного окна происходит проверка и если одно из условий не выполняется, то программа запускается но включается таймер на минуту и по истечению этой минуты программа закроется без каких либо сообщений. какой из пунктов будет ломаться дольше? ![]() |
|
Создано: 08 декабря 2005 20:55 · Личное сообщение · #2 |
|
Создано: 08 декабря 2005 20:58 · Личное сообщение · #3 |
|
Создано: 08 декабря 2005 21:10 · Личное сообщение · #4 |
|
Создано: 08 декабря 2005 21:14 · Личное сообщение · #5 |
|
Создано: 08 декабря 2005 22:37 · Личное сообщение · #6 |
|
Создано: 08 декабря 2005 23:36 · Личное сообщение · #7 |
|
Создано: 09 декабря 2005 00:20 · Личное сообщение · #8 Я бы сделал так: 1. Чтобы обезопасить себя от кейгена - _хорошо_ реализовать мощный асимметричный алгоритм или использовать надежную библиотеку для этого (с умом). Я бы взял ECDSA (короткие ключи рулят ;)), но можно что угодно еще. Или пойти по пути всем известных товарищей и взять какой-нибудь не особо известный алгоритм. Но в этом случае надо быть осторожнее (так как все те же известные товарищи допустили ошибку в одной из ранних версий). 2. Максимально извратить код =) Сюда можно добавить VM и много чего еще =) Чтобы сделать алгоритм из п.1 не доступным для понимания и затруднить модификацию кода. 3. Побольше проверок целостности, + добавить немного анти-отладки =) 4. Если программа стоит больших денег, то прикрутить мощную hardware-защиту. Идеальный вариант - ключик с возможностью выполнять код =) и максимальная интеграция и взаимосвязь программы и ключа. ----- crypto.freak ![]() |
|
Создано: 09 декабря 2005 00:26 · Личное сообщение · #9 |
|
Создано: 09 декабря 2005 03:51 · Личное сообщение · #10 |
|
Создано: 09 декабря 2005 11:44 · Личное сообщение · #11 |
|
Создано: 09 декабря 2005 11:50 · Личное сообщение · #12 |
|
Создано: 09 декабря 2005 11:56 · Личное сообщение · #13 |
|
Создано: 09 декабря 2005 12:21 · Личное сообщение · #14 |
|
Создано: 09 декабря 2005 12:22 · Личное сообщение · #15 |
|
Создано: 09 декабря 2005 20:11 · Личное сообщение · #16 |
|
Создано: 09 декабря 2005 21:02 · Личное сообщение · #17 kirilllius пишет: и если одно из условий не выполняется, то программа закрывается так и не показав ни одного окна и ни одного сообщения. Есть конечно такие проги, но честно говоря не понимаю чем они по сути отличается от sfx-архива с паролем. Если уж такую неприветливую прогу делать, то уж сразу sfx-rar с паролем. imho. ![]() |
|
Создано: 09 декабря 2005 23:28 · Личное сообщение · #18 |
|
Создано: 09 декабря 2005 23:46 · Личное сообщение · #19 |
|
Создано: 10 декабря 2005 02:40 · Личное сообщение · #20 [HEX] пишет: потом покупает один человек и выкладывает фул версию в нете. Смотря сколько человек заинтересуются ее приобретением если <100, то один мой знакомый предложил такой расклад - на комп покупателя отправляется прога собирающая много индивидуальных данных компа и отправляющая их кодеру. Кодер вкомпилирует их в свой проект (или в его наиболее "дорогой" элемент) проверок эдак 30~40 таких (различных) данных и отправляет индивидуальную версию покупателю. Но важно чтобы цель оправдывала средства ![]() ![]() |
|
Создано: 10 декабря 2005 06:20 · Личное сообщение · #21 |
|
Создано: 10 декабря 2005 07:26 · Личное сообщение · #22 f0ma пишет: на комп покупателя отправляется прога собирающая много индивидуальных данных компа и отправляющая их кодеру А теперь картина маслом - пользователь меняет какую-нить железяку (которая входит в список индивидуальных данных компа) и начинает писать - давайте мол новый регистрационный код. А теперь собственно вопрос - а как кодер действительно узнает что пользователь сменил себе железяку (или вообще обновил весь комп) и просит рег код для себя, а не для своего знакомого ? А никак ... В результате у пользователя уже все друзья и знакомые пользуются программой, а кодер только успевает "собирать" индивидуальные данные и кодить и кодить ![]() ![]() |
|
Создано: 11 декабря 2005 03:45 · Личное сообщение · #23 TOG пишет: многокилобаксовая прога откажется работать после установки какого нибудь сервис пака для ОС Если прога многокилобаксовая то пора уже думать об аппаратной защите. dermatolog пишет: все друзья и знакомые пользуются программой Я же сказа что речь о сугубой программе которая мало кому нужна, а если на 1 проданную придется 1-2 ворованные (при сохранении общего числа лицензий в районе <100) то уже очень не плохо. Но это уклонение от темы. Да и вообще kirilllius - надо исходить зи конкретной ситуации. При отсутствии дополнительных мер защиты оба варианта ломаются без проблем. ![]() |
|
Создано: 11 декабря 2005 08:46 · Личное сообщение · #24 f0ma пишет: Если прога многокилобаксовая то пора уже думать об аппаратной защите. Мне понравилась одна идея. Прога которая поставлялась заказчику в таком составе: 1. Сама прога зашита в микроконтроллер(бит защиты установлен), интегрированый в сетевуху. 2. А на CD только GUI. Помоему, если я не ошибаюсь никто за нее не взялся ![]() ![]() |
|
Создано: 11 декабря 2005 20:11 · Личное сообщение · #25 происходит проверка и если одно из условий не выполняется, то программа закрывается. { Два этих метода взламываются практически одинаково по времени без проблем. Чтобы затруднить взлом нужно ... 1. Писать алгоритмы (проверок и выходов) исключительно на assembler'e и не ипользовать стандартные функции для проверки строк и символов. В алгоритмах стараться использовать хитрые методики сравнения - не используя стандартных команд типа cmp, test ... надо как можно меньше использовать переходов типа jmp, и также использовать другие хитрые команды переходов, чтобы запутать крэкера. Если нужно сравнить оригинальный регистрационный номер с тем который введет пользователь, то ни в коем случае нельзя держать оригинальный номер в открытом ввиде(в одном месте). Лучьше для хранения оригинального серийного номера использовать его хэш, например для пароля: password-это будет по алгоритму (MD5) - 5f4dcc3b5aa765d61d8327deb882cf99, или использовать алгоритм (SHA512) - b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7 785 e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86, и держать его надо в разных местах, а не в одной переменной. Считывать пароль нужно используя какою нибудь нестандартныю методику, а не давать пользователю вводить его в стандартный edit, после того как пользователь ввел пароль переводим его в хэш и сравниваем ни сразу весь хэш оригинально пароля с введенным, а например первый символ с хэш оригинального с введенным, и так далее. При написании защиты нужно как можно меньше использовать функции с системных библиотек. (ntdll.dll, kernel32.dll, user32.dll, csrsrv.dll), а если без них не можете используйте загрузку функции таким образом ![]() 2. Также разработать на assembler'e десятки проверок по такой методике как (см. 1.), но в случае если программа обнаружет, что ее взломали не показывать никаких ошибок(используя messagebox), а сделать через определенное время какой нибудь вред компьютеру, или создать глюки в программе (типа зависла),чтобы система перестала загружаться (удалить все subkeys из реестра по таким ключам deletekey -HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\*.* deletekey -HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\*.* deletekey -HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\*.*) и так далее. А найти все скрытые вредные действия в программе которая говорит, что у нее все нормально, будет проще с нуля написать такую программу. 3. Проверять какие библиотеки использует ваша программа в случае левых (inject) библиотек, вырубайте программу. Проверяйте какие запущенные программы по их crc32 и сигнатуре и ресурсам. не используя стандартные методики потому-что с помощью перехвата api вашей программе можно будет отправить данные которые она хочет видить. 4. Заблокировать regmon, filemon, softice, iceext. Если не можете заблокировать обращение в реестр, то при запуске программы открывайте 1000 ключей и производите 1000 записей левых, чтобы regmon для крєкера стал безполезным. 5. Поменяйте сигнатуры (на чем писалась программа), скройте ресурсы (tform,tbitmap) - подгружайте их с какого нибудь участка программы, но не с ресурсов, а также установите хук, на api которые показывают информацию о контролах, чтобы крэкер не понял что за компоненты используются, можете не просто стиреть сигнатуры, а просто поменять их на какие нибудь другие (другой язык программирования). Запакуйте программу например UPX'ом, поменяйте сигнатуры и секции на aspack, чтобы крэкер подумал что она упакомана aspack. [/b] } ![]() |
|
Создано: 12 декабря 2005 10:56 · Личное сообщение · #26 SaTaN Человеку вообщето нужна легкая защита, и ИМХО ты написал полный бред (особенно пункт 2). Новичок конечно такую защиту не взломает, но у человека, который ломал много, она тоже много времени не отберет (во всяком случае это будет меньше по времени чем собстна такую защиту сделать :s6 ![]() ----- StarForce и Themida ацтой! ![]() |
|
Создано: 12 декабря 2005 11:03 · Личное сообщение · #27 SaTaN пишет: 2. Также разработать на assembler'e десятки проверок по такой методике как (см. 1.), но в случае если программа обнаружет, что ее взломали не показывать никаких ошибок(используя messagebox), а сделать через определенное время какой нибудь вред компьютеру, или создать глюки в программе (типа зависла),чтобы система перестала загружаться (удалить все subkeys из реестра по таким ключам deletekey -HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\*.* deletekey -HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\*.* deletekey -HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\*.*) и так далее. А найти все скрытые вредные действия в программе которая говорит, что у нее все нормально, будет проще с нуля написать такую программу. За такую защиту можно и по шее получить... ----- Сколько ни наталкивали на мысль – все равно сумел увернуться ![]() |
|
Создано: 12 декабря 2005 11:26 · Поправил: TOG · Личное сообщение · #28 |
|
Создано: 12 декабря 2005 12:18 · Личное сообщение · #29 |
|
Создано: 12 декабря 2005 12:39 · Личное сообщение · #30 SaTaN пишет: Чтобы затруднить взлом нужно ... Ёмаё ! Че так сложно-то ? Имхо идея с "secure sections" в армудиле - вот красивое и простое решение ваших проблем. Реализовано оно криво, но идея-то хорошая. Никаких тебе изощренных проверок. Есть ключ - расхориваем секцию. Нету ключа - не расхориваем. И баста ![]() ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Основной форум —› сложность взлома |