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), а если без них не можете используйте загрузку функции таким образомчтобы ее в таблице импорта небыло-виртуальная загрузка). Перед проверкой пароля использовать задержку, не используя api функцию (Sleep) на ее легко ставится бряк. Создать сотню ложных функций (с разными именами) по которым проверяется защита или серийный номер программы. Для аварийного выхода не использовать функции TerminateProcess, ZwTerminateProcess,OpenProcess(с параметрoм process_terminate) и т.д. на них легко ставится bpx, используйте хитрые assembler' команды. 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 —› Основной форум —› сложность взлома |