Здравствуйте, neiroman, Вы писали:
N>Вобщем, что посоветуете, чтобы зашиты защищала(извините за каламбур) ?
можешь реализовать старую идею с разнесенными проверками. суть вот в чем — есть система линейных уравнений. скажем 30 переменных — 20 уравнений. система недоопределенная — решение не единственно. решение — есть серийник. в программу прошиваешь проверки. причем не все 20. а скажем для каждого билда рандомную выборку в 15 уравнений из 20ти. эелементарная проверка — проверка одного уравнения. разбрасываешь проверки по коду своей программы. некоторые вызываешь при определенном стечении обстоятельств. например по четным дням
крякер посмотрит где серийник проверяется. пропачит. и успокоится. а завтра оно вызовет еще одну проверку. и работать не будет
предположим что крякер найдет все проверки и сделает кейген. но в след билде мы будем использовать другую выборку из наших 20ти уравнений и кейген работать не будет.
вобщем просто и со вкусом. реализовать можно достаточно быстро.
можно еще более навернуть эту схему. пусть s1..n — это цифры серийника, a1..n — коэффициенты некоторого уравнения. вместо того чтобы проверять s1*a1+s2*a2+...+sn*an == b поступим хитрее
посчитаем левую часть. возьмем от него какойто хеш. ну например тот же sha-1 или md4. и результат сравним с некоторой константой прошитой в программе. если он совпал — проверка пройдена и следовательно может выполняться некоторый код который недоступен в триальной версии. так вот в этом коде в качестве констант при обращении к апи или в качестве границ для счетчика цикла мы будем использовать b mod Ki. b нам известно заранее. константы Ki мы тоже можем рассчитать так чтобы остаток от деления нашего b на эти константы был равен тому что нам надо.
как следствие тут уже пачить jz на jmp не получится — программа будет валится. прийдется скардить как минимум один ключ и выковырять эти самые b.