Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как защитить программу с помощью ключа, Помогизащитить программу с помощью ключа 
V
    Опции темы
Zakhar_Shan
  Дата 4.4.2009, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Добрые люди, искал по форуму, но без особого конкретного результата.
Нужно написать модуль генерирования лицензионного ключа.
Как я хочу это сделать:
Ключ должен генерится исходя из каких либо постоянных данных, которые на разных машинах – разные (например id компа, который как достать я тоже пока не знаю smile ).
Зачем мне это нужно (кому не интересно может не читать):
Преподу написал программу для решения транспортной задачи на сети (Математика, Логистика…), а она хочет, чтоб эту прогу студенты только использовали для проверки задач в аудитории, и не брали домой, отсюда и решил: 
1.    Прога при первом запуске будет запрашивать ключ, выдавая id компа.
2.    Препод берёт id компа, и вводит его в программу-генератор (который будет только у него).
3.    Генератор генерит ключик
4.    Препод вводит ключик в прогу, прога записывает ключик в реестр, и при каждом запуске сравнивает его генерируя ключик от id компа у себя.
И всё в ажуре!!!
 smile  smile 
Сильно мудрёно тоже не надо, так как студенты у нас далеко не гении во взломе.

Помогите ПЛИЗЗЗЗЗ!!! smile 
PM MAIL   Вверх
mes
Дата 4.4.2009, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Zakhar_Shan @  4.4.2009,  20:11 Найти цитируемый пост)
Сильно мудрёно тоже не надо, так как студенты у нас далеко не гении во взломе.

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



--------------------
PM MAIL WWW   Вверх
Zakhar_Shan
Дата 4.4.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(mes @ 4.4.2009,  21:22)
Цитата(Zakhar_Shan @  4.4.2009,  20:11 Найти цитируемый пост)
Сильно мудрёно тоже не надо, так как студенты у нас далеко не гении во взломе.

а не проще в таком случае просто записывать  в реестр  какое либо id, разрешающее запуск Вашей проги на данном компе  ?

Ну не такие же тупые smile 
PM MAIL   Вверх
Anikmar
Дата 4.4.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Zakhar_Shan @  4.4.2009,  21:28 Найти цитируемый пост)
Ну не такие же тупые   

Думаете они будут дизассемблировать и смотреть как устроена зашита? Ключ можно спрятать так, что не зная где он - не найдешь.
PM MAIL ICQ   Вверх
Zakhar_Shan
Дата 4.4.2009, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(Anikmar @  4.4.2009,  21:33 Найти цитируемый пост)
Думаете они будут дизассемблировать и смотреть как устроена зашита? Ключ можно спрятать так, что не зная где он - не найдешь. 

... не знаю, я бы на месте студента первым делом иска запись в реестре ну например: jv16 PowerTools'ом, но большое спасибо за вариант smile 


PM MAIL   Вверх
Anikmar
Дата 4.4.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Zakhar_Shan @  4.4.2009,  21:43 Найти цитируемый пост)
я бы на месте студента первым делом иска запись в реестре

Вопрос вот только какую?
PM MAIL ICQ   Вверх
Zakhar_Shan
Дата 4.4.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(Anikmar @  4.4.2009,  21:55 Найти цитируемый пост)
Вопрос вот только какую? 

Был у мя случай, когда программер один, написал прогу, а разрешал только пользоваться избранным, так я эту прогу к себе скопировал, и каспера на неё нацелил (помоему был 6й), сказал касперу чтоб следил за ней, а он мне при её запуске выдал сообщение об обращение по пути... далее дело за малым, посмотреть на компе где программа запускается сто в этом пути...
Anikmar, спасибо большое за вариант, если больше ничего дельного не покажут, чтож smile 
PM MAIL   Вверх
vikaz
Дата 4.4.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Придумать можно все что угодно. Anikmar прав, не обязательно же обзывать ключ в реестре как называется твоя программа. Придумай какое нибудь заумное имя и никто никогда не найдет, если им сильно этого не захочется. Вот только если у них окажется один такой ключ, который разблокирует твою защиту, то они надут его в реестре легко.
Да и если она им очень сильно понадобятся, а они не знают, как её взломать, то я думаю что у кого нибудь найдется знакомый, который это умеет и поменяв несколько бит в исполняемом модуле, они получат полную и работоспособную программу.

Может тебе лучше встроить в свою программу TCP клиент? На машине преподавателя поставить серверную часть. Как только клиент запускается, он связывается с сервером, получает разрешение на визуализацию формы и работает дальше, если нет, то программа закрывается. Тебе писать ничего сложного не нужно, при помощи Indy все это можно написать за несколько часов. Но это все так же можно обойти, если залезть в exe файл.

Еще метод - аппаратный ключ защиты. Вот к примеру ссылка на один такой: http://senselock.ru/
Но как мне кажется не для твоего варианта, а то студенты стырят его и все..... smile



--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Zakhar_Shan
Дата 4.4.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Дело в том, что я сужу по себе.
Тот метод который предлагает Anikmar, я бы взломал без особых проблем (конечно если бы знал что прога так защищена, что прибовляет плюсов этому методу)
С TCP ну вообще не практиковался, но это не проблема, дело в том, что сетка у нас в универе уж сильно хреновая, и помоему даже комп препода толком вней и не стоит.
Возится с Битами в исполняемом модуле... Теоритически понимаю, но практичски... вот это ооочень сложно.

Добавлено через 4 минуты и 47 секунд
Вот что то нашёл, вроде оно, но толком не разберу, да и C# не очень знаю, может кто поможет перевести если это оно:
Код

  /// <summary>
    /// Generates a 16 byte Unique Identification code of a computer
    /// Example: 4876-8DB5-EE85-69D3-FE52-8CF7-395D-2EA9
    /// </summary>
    public class FingerPrint  
    {
        private static string fingerPrint = string.Empty;
        public static string Value()
        {
            if (string.IsNullOrEmpty(fingerPrint))
            {
                fingerPrint = GetHash("CPU >> " + cpuId() + "\nBIOS >> " + 
            biosId() + "\nBASE >> " + baseId()
                            //+"\nDISK >> "+ diskId() + "\nVIDEO >> " + 
            videoId() +"\nMAC >> "+ macId()
                                     );
            }
            return fingerPrint;
        }
        private static string GetHash(string s)
        {
            MD5 sec = new MD5CryptoServiceProvider();
            ASCIIEncoding enc = new ASCIIEncoding();
            byte[] bt = enc.GetBytes(s);
            return GetHexString(sec.ComputeHash(bt));
        }
        private static string GetHexString(byte[] bt)
        {
            string s = string.Empty;
            for (int i = 0; i < bt.Length; i++)
            {
                byte b = bt[i];
                int n, n1, n2;
                n = (int)b;
                n1 = n & 15;
                n2 = (n >> 4) & 15;
                if (n2 > 9)
                    s += ((char)(n2 - 10 + (int)'A')).ToString();
                else
                    s += n2.ToString();
                if (n1 > 9)
                    s += ((char)(n1 - 10 + (int)'A')).ToString();
                else
                    s += n1.ToString();
                if ((i + 1) != bt.Length && (i + 1) % 2 == 0) s += "-";
            }
            return s;
        }
        #region Original Device ID Getting Code
        //Return a hardware identifier
        private static string identifier
        (string wmiClass, string wmiProperty, string wmiMustBeTrue)
        {
            string result = "";
            System.Management.ManagementClass mc = 
        new System.Management.ManagementClass(wmiClass);
            System.Management.ManagementObjectCollection moc = mc.GetInstances();
            foreach (System.Management.ManagementObject mo in moc)
            {
                if (mo[wmiMustBeTrue].ToString() == "True")
                {
                    //Only get the first one
                    if (result == "")
                    {
                        try
                        {
                            result = mo[wmiProperty].ToString();
                            break;
                        }
                        catch
                        {
                        }
                    }
                }
            }
            return result;
        }
        //Return a hardware identifier
        private static string identifier(string wmiClass, string wmiProperty)
        {
            string result = "";
            System.Management.ManagementClass mc = 
        new System.Management.ManagementClass(wmiClass);
            System.Management.ManagementObjectCollection moc = mc.GetInstances();
            foreach (System.Management.ManagementObject mo in moc)
            {
                //Only get the first one
                if (result == "")
                {
                    try
                    {
                        result = mo[wmiProperty].ToString();
                        break;
                    }
                    catch
                    {
                    }
                }
            }
            return result;
        }
        private static string cpuId()
        {
            //Uses first CPU identifier available in order of preference
            //Don't get all identifiers, as it is very time consuming
            string retVal = identifier("Win32_Processor", "UniqueId");
            if (retVal == "") //If no UniqueID, use ProcessorID
            {
                retVal = identifier("Win32_Processor", "ProcessorId");
                if (retVal == "") //If no ProcessorId, use Name
                {
                    retVal = identifier("Win32_Processor", "Name");
                    if (retVal == "") //If no Name, use Manufacturer
                    {
                        retVal = identifier("Win32_Processor", "Manufacturer");
                    }
                    //Add clock speed for extra security
                    retVal += identifier("Win32_Processor", "MaxClockSpeed");
                }
            }
            return retVal;
        }
        //BIOS Identifier
        private static string biosId()
        {
            return identifier("Win32_BIOS", "Manufacturer")
            + identifier("Win32_BIOS", "SMBIOSBIOSVersion")
            + identifier("Win32_BIOS", "IdentificationCode")
            + identifier("Win32_BIOS", "SerialNumber")
            + identifier("Win32_BIOS", "ReleaseDate")
            + identifier("Win32_BIOS", "Version");
        }
        //Main physical hard drive ID
        private static string diskId()
        {
            return identifier("Win32_DiskDrive", "Model")
            + identifier("Win32_DiskDrive", "Manufacturer")
            + identifier("Win32_DiskDrive", "Signature")
            + identifier("Win32_DiskDrive", "TotalHeads");
        }
        //Motherboard ID
        private static string baseId()
        {
            return identifier("Win32_BaseBoard", "Model")
            + identifier("Win32_BaseBoard", "Manufacturer")
            + identifier("Win32_BaseBoard", "Name")
            + identifier("Win32_BaseBoard", "SerialNumber");
        }
        //Primary video controller ID
        private static string videoId()
        {
            return identifier("Win32_VideoController", "DriverVersion")
            + identifier("Win32_VideoController", "Name");
        }
        //First enabled network card ID
        private static string macId()
        {
            return identifier("Win32_NetworkAdapterConfiguration", 
                "MACAddress", "IPEnabled");
        }
        #endregion
    }





Это сообщение отредактировал(а) Zakhar_Shan - 4.4.2009, 22:29
PM MAIL   Вверх
mes
Дата 4.4.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Zakhar_Shan @  4.4.2009,  20:28 Найти цитируемый пост)

Ну не такие же тупые smile  

зашифруйте свой ключ относительно ключа винды. 

см. [HKey_Local_Machine/Software/Microsoft/WindowsNT/CurrentVersion] 
в частности  [HKey_Local_Machine/Software/Microsoft/WindowsNT/CurrentVersion/WPAEvents] 

Это сообщение отредактировал(а) mes - 5.4.2009, 00:37


--------------------
PM MAIL WWW   Вверх
Zakhar_Shan
Дата 4.4.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(mes @  4.4.2009,  22:41 Найти цитируемый пост)
зашифруйте свой ключ относительно ключа винда. 

Неплохо mes, спасибо, идея good  smile 
Но вопрос не относительно чего фиксировать, а как получить из этого что то типа: 4876-8DB5-EE85-69D3-FE52-8CF7-395D-2EA9


Это сообщение отредактировал(а) Zakhar_Shan - 4.4.2009, 22:48
PM MAIL   Вверх
mes
Дата 5.4.2009, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Zakhar_Shan @  4.4.2009,  21:47 Найти цитируемый пост)
Но вопрос не относительно чего фиксировать, а как получить из этого что то типа: 4876-8DB5-EE85-69D3-FE52-8CF7-395D-2EA9

если я правильно понял Ваш вопрос :
возьмите строку в 16 символов, зашифруйте ее относительно ключа, и представьте каждый код символа в 16ричном виде - в итогe 32 цифры, или 8 пар по 4 цифры.





Это сообщение отредактировал(а) mes - 5.4.2009, 10:54


--------------------
PM MAIL WWW   Вверх
Zakhar_Shan
Дата 5.4.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(mes @  5.4.2009,  00:36 Найти цитируемый пост)
... зашифруйте ее относительно ключа, и представьте каждый код символа.... 

Так вот как её шифрануть?????


PM MAIL   Вверх
mes
Дата 5.4.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



самый простой способ проXORить .. при повторении операции происходит дешифровка.



--------------------
PM MAIL WWW   Вверх
Zakhar_Shan
Дата 5.4.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(mes @  5.4.2009,  13:10 Найти цитируемый пост)
самый простой способ проXORить .. при повторении операции происходит дешифровка.


... ага, во как... ладно сэнкс mes, будем XORить....
ещё бы знать как э то...

Это сообщение отредактировал(а) Zakhar_Shan - 5.4.2009, 13:20
PM MAIL   Вверх
mes
Дата 5.4.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Zakhar_Shan @  5.4.2009,  12:19 Найти цитируемый пост)
будем XORить....
ещё бы знать как это...

вот набросок : 
Код

#include <iostream>
#include <iterator>
#include <sstream>

std::string xor_crypt (const std::string& src, const std::string& key)
{
    std::string result;
    result.reserve (src.length());

    for (std::string::const_iterator it = src.begin(); it!=src.end(); )
     for (std::string::const_iterator it1 = key.begin(); it!=src.end() && it1!=key.end(); ++it1, ++it)
     result.push_back (*it ^ *it1); 

    return result;
}

std::string str2code (const std::string& src)
{
    struct { char operator () (unsigned digit) { return (digit<10) ? digit+'0' : digit-10+'A'; } } hex_digit;

    std::string result;
    result.reserve (src.length()*2.5); // резерв, *2.5 т.к на каждые 2 символа исходной строки приходится примерно 5 символов результативной.

    int spacer=0;
    for (std::string::const_iterator it = src.begin(); it!=src.end(); ++it)
    {
        result.push_back (hex_digit(*it/16));
        result.push_back (hex_digit(*it%16));

        if (++spacer==2)
        {
            result.push_back (' ');
            spacer=0;
        }
    }

    return result;
}

int main()
{
  std::string my_str = "<test for crypt>";
  std::string key = "my key";

  std::string crypt= xor_crypt (my_str, key);
  std::cout << "before  crypt: " << my_str << std::endl;
  std::cout << "as code :      " << str2code (crypt) << std::endl;
  std::cout << "after uncrypt: " << xor_crypt(crypt,key) << std::endl;
  std::cout <<std::endl;

  system("pause");
  return(0);
}

разбирайтесь и приспосабливайте 
smile

Это сообщение отредактировал(а) mes - 5.4.2009, 17:03


--------------------
PM MAIL WWW   Вверх
Zakhar_Shan
Дата 5.4.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(mes @  5.4.2009,  14:34 Найти цитируемый пост)

разбирайтесь и приспосабливайте 


Ух, супер!!!!! smile 

mes, спасибо большое, всё понятно, как будет 100 постов, +  к репутации от меня!!!! smile 

Это сообщение отредактировал(а) Zakhar_Shan - 5.4.2009, 16:02
PM MAIL   Вверх
A5uKa
Дата 5.4.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



можешь потом выложить что получилось ?
PM   Вверх
Zakhar_Shan
Дата 5.4.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(A5uKa @  5.4.2009,  16:20 Найти цитируемый пост)
можешь потом выложить что получилось ? 


через часика 2-3 выложу код адаптированный для C++ Builder 2009
PM MAIL   Вверх
Anikmar
Дата 5.4.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Zakhar_Shan @  5.4.2009,  16:01 Найти цитируемый пост)
mes, спасибо большое, всё понятно, как будет 100 постов, +  к репутации от меня!!!!

Чего ждать - можно и сейчас, для mes не жалко  smile 
PM MAIL ICQ   Вверх
Zakhar_Shan
Дата 5.4.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(Anikmar @  5.4.2009,  17:02 Найти цитируемый пост)
Чего ждать - можно и сейчас, для mes не жалко  smile  

У меня пишет:

Цитата

Обнаружена ошибка:


У Вас недостаточно постов, чтобы изменять репутацию пользователей. Необходимо 100 постов.
 

PM MAIL   Вверх
Anikmar
Дата 5.4.2009, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Zakhar_Shan @  5.4.2009,  17:41 Найти цитируемый пост)
У меня пишет:

Это в смысле того, что я за вас + поставил  smile 
PM MAIL ICQ   Вверх
Zakhar_Shan
Дата 5.4.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2




Цитата(Anikmar @  5.4.2009,  17:51 Найти цитируемый пост)
Это в смысле того, что я за вас + поставил  smile  


Ау, понял smile 
PM MAIL   Вверх
artsb
Дата 5.4.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Я бы сделал так:
Прога. В папке с ней файлик, в котором хранится зашифрованный пароль (шифровать можно как угодно. даже тем же XOR'ом). Если этого файлика нет прога вообще не запускается (должна быть соответствующая проверка в OnCreate), иначе открываем файл, расшифровываем пароль и выдаём пользователю окно с предложением ввести пароль. Если пользователь испортил файлик с паролем (например, при помощи блокнота) пароль расшифруется не верно smile и следовательно, пользователь не попадёт в программу.
А у преподавателя есть маленькая программка, которая даёт возможность изменить пароль.

ЗЫ а вообще, вариантов много... Удачи. ;)


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Zakhar_Shan
Дата 5.4.2009, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Прошу прощение за задержку... личные дела.
и так:
Это будет мой id, по которому будет генерится код:
Для удобства восприятия пользователем, разделяем строку знаком "-", через каждые 4 символа, пусть это будет наш id компа:
Код

 String getInputKey(){
    String res = String(getProcId().c_str());
    res.Insert("-",13);
    res.Insert("-",9);
    res.Insert("-",5);
    return res;
 }

Эта функция выдирает из проца его id, так как я так и не понял, что и где она берёт, но понял, что эти цифры будут всегда одинаковыми, беру не всех их, а лишь кусок, и получаю строку из 16 символов:
Код

#include <vcl.h>
#include <iterator>
#include <sstream>    
 std::string getProcId(){
 DWORD dwID1,dwID2;
    asm{
        pushad
        mov eax,3
        cpuid
        mov [dwID2],edx
        mov [dwID1],eax
        // mov [dwID2],ecx
        popad
    }
    return std::string(IntToHex(int(dwID1),8).c_str())+std::string(IntToHex(int(dwID2),8).c_str());
 }


Теперь функцией generateLicKey(String inputKey) ,где inputKey-уже имеющийся id компа,  генерим сам ключик:
Код

const std::string cKey = "ver 2.0" ; // ключи у разных версий проги будут разные
std::string xor_crypt (const std::string& src,const std::string& key){
    std::string result;
    result.reserve (src.length());
    for (std::string::const_iterator it = src.begin(); it!=src.end(); )
     for (std::string::const_iterator it1 = key.begin(); it!=src.end() && it1!=key.end(); ++it1, ++it)
     result.push_back (*it ^ *it1);
    return result;
}
    String generateLicKey(String inputKey){
        inputKey.Delete(15,1);
        inputKey.Delete(10,1);
        inputKey.Delete(5,1);
        std::string src =  inputKey.c_str();

        std::string str=xor_crypt (src,cKey);


        String ret= String(reinterpret_cast<const char *>(str.c_str()));
        return ret;
    }

но.. проблемма, при переводе из std::string в String, что то не получается, это я вынес на обозрение сдесь


Это сообщение отредактировал(а) Zakhar_Shan - 6.4.2009, 00:00
PM MAIL   Вверх
artsb
Дата 5.4.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Я бы не делал привязку к железу или винде...
Что, если "завтра" обновят железо или поставят другую винду, или ещё что-то smile


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Zakhar_Shan
Дата 5.4.2009, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(artsb @  5.4.2009,  20:21 Найти цитируемый пост)
Что, если "завтра" обновят железо или поставят другую винду, или ещё что-то smile 


Прочти зачем мне это нужно, если проц поменяют, то в нашем универе это произойдёт лет через 20-40... smile 
Даже если это произойдёт, преподователь просто сгенерит новый ключ, а привязку к винде он не делает...

PM MAIL   Вверх
xvr
Дата 5.4.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Код на C# использует WMI для идентификации машины. В MSDN есть примеры на С++ использования WMI (лучше взять оттуда). Затем, все накопленные идентификаторы загоняются в MD5 хэш (используется Crypto API).
Криптовать что либо xor'ами совершенно бесполезная идея - это вскрывается за 5 минут.
Я бы рекомендовал такую последовательность:
  •  Собрать данные через WMI
  •  Вычислить MD5 (или SHA1) от них
  •  Закриптовать RSA
  •  Записать в реестр
Пункты 2 и 3 можно сделать через Crypto API или через отдельную библиотеку (rsaeuro например). 
Основное преимущество такого подхода то, что для шифрования и дешифрования используются разные ключи, т.е. без инсталятора (в нем зашит ключ шифрования) будет невозможно установить программу на другую машину, какой бы хакер этим не занимался (только ломать код самой программы)


PM MAIL   Вверх
Zakhar_Shan
Дата 5.4.2009, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(xvr @  5.4.2009,  21:20 Найти цитируемый пост)
#  Собрать данные через WMI
#  Вычислить MD5 (или SHA1) от них
#  Закриптовать RSA
#  Записать в реестр

 smile 
xvr, ты если что то пишиь, то примерчик напиши, желательно на C++, ато тут уже предложили USB ключ, который уйму денег ещё стоит... smile 


PM MAIL   Вверх
xvr
Дата 5.4.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Zakhar_Shan @ 5.4.2009,  21:30)
Цитата(xvr @  5.4.2009,  21:20 Найти цитируемый пост)
#  Собрать данные через WMI
#  Вычислить MD5 (или SHA1) от них
#  Закриптовать RSA
#  Записать в реестр

 smile 
xvr, ты если что то пишиь, то примерчик напиши, желательно на C++, ато тут уже предложили USB ключ, который уйму денег ещё стоит... smile

Примерчик будет ОЧЕНЬ объемный. По всем этим пунктам есть примеры в MSDN (www.msdn.microsoft.com). Набираешь у них в поиске и вуаля  smile 
PM MAIL   Вверх
Zakhar_Shan
Дата 5.4.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(xvr @  5.4.2009,  22:32 Найти цитируемый пост)
римерчик будет ОЧЕНЬ объемный.

так во и дело в том, что хочется не много, но и не сильно просто, но в любом случае спасибо smile 
PM MAIL   Вверх
Gradov
Дата 5.4.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 31.10.2006

Репутация: 2
Всего: 3



Цитата(xvr @  5.4.2009,  21:20 Найти цитируемый пост)
 Собрать данные через WMI Вычислить MD5 (или SHA1) от них Закриптовать RSA Записать в реестр

Пункты 1 и 2 понятны, а вот c помощью RSA, что закрывать? Сам хеш md5? Если да, то зачем, непонятно... По-моему для такой небольшой задачи одного md5 вполне хватит. Хотя кашу маслом не испортишь, конечно...

А вообще я не понимаю какой во всем этом смысл? Ну собрал идентификационные данные компа, взял хеш, закриптил RSA и запихнул в файл. Далее при запуске проги считываются данные компа, берется хеш, декриптуется по RSA и тут мы подходим к самому главному - конечному условию проверки на совпадение/несовпадение ключей. Обычно условный переход (jnz, je, ...). Исправляем в проге пару байтов и все. К чему все эти MD5, RSA? Может я чего то не понимаю объясните, плиз.

Это сообщение отредактировал(а) Gradov - 5.4.2009, 23:52
PM MAIL   Вверх
Anikmar
Дата 6.4.2009, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Gradov @  5.4.2009,  23:45 Найти цитируемый пост)
Исправляем в проге пару байтов и все.

Эти пару байтов надо найти. Закрываемая программа не такая уж важная, чтобы ею занимался опытный хакер. Сломать ее можно, но потребует некоторого времени.
Цитата(Gradov @  5.4.2009,  23:45 Найти цитируемый пост)
Обычно условный переход (jnz, je, ...)

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

Профессиональных угонщиков автомашин больше всего бесят встраиваемые вручную хозяевами "секретки" - типа размыкателей масс. С одной стороны - никакой элетроники, обычный тумблер. С другой стороны - попробуй его найди.
PM MAIL ICQ   Вверх
xvr
Дата 6.4.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Gradov @ 5.4.2009,  23:45)
Цитата(xvr @  5.4.2009,  21:20 Найти цитируемый пост)
 Собрать данные через WMI Вычислить MD5 (или SHA1) от них Закриптовать RSA Записать в реестр

Пункты 1 и 2 понятны, а вот c помощью RSA, что закрывать? Сам хеш md5? Если да, то зачем, непонятно... По-моему для такой небольшой задачи одного md5 вполне хватит. 

RSA нужен для того, что бы даже имея программу и зная, как она считает этот MD5 было невозможно сгенерить правильный ключ. Для генерации ключа понадобится инсталятор, доступа к которому у студентов не будет. Так что только ломать сам код, но от этого уже не защититься, можно только усложнить жизнь хакеру, понаставив побольше проверок (и разных)

PM MAIL   Вверх
3315720
Дата 6.4.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



я так к серийнику диска С, привязывал. хешировал по всякому с разными прибавками, но без шифровки в реестре. хорошая мысль. нужно будет добавить.
PM MAIL   Вверх
Zakhar_Shan
Дата 6.4.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(3315720 @  6.4.2009,  12:33 Найти цитируемый пост)
я так к серийнику диска С, привязывал. 


говорят проблеммы с sata дисками....
PM MAIL   Вверх
xvr
Дата 6.4.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



PM MAIL   Вверх
3315720
Дата 6.4.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Цитата(Zakhar_Shan @ 6.4.2009,  13:33)
Цитата(3315720 @  6.4.2009,  12:33 Найти цитируемый пост)
я так к серийнику диска С, привязывал. 


говорят проблеммы с sata дисками....

брал серийник и привязывал. в семплах даже пример есть. всю инфу о дисках выдаёт. о хардах, сд, флеш. там и серийник есть.
просто это логично- куда поставил туда и привязал, вместо того чтобы спрашивать разрешения у разработчика поменять видеокарту или сдшник добавить. как это практикуют некоторые, например тот же фотошоп. 
с обычным sata проблем не возникало, с raid включением не сталкивался... 
PM MAIL   Вверх
Zakhar_Shan
Дата 6.4.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(3315720 @  6.4.2009,  14:45 Найти цитируемый пост)
. в семплах даже пример есть. 

А можно посмотреть?
PM MAIL   Вверх
3315720
Дата 6.4.2009, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Посмотри

Присоединённый файл ( Кол-во скачиваний: 40 )
Присоединённый файл  driveinfo.rar 19,50 Kb
PM MAIL   Вверх
Zakhar_Shan
Дата 6.4.2009, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(3315720 @  6.4.2009,  19:35 Найти цитируемый пост)
Посмотри

Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  driveinfo.rar 19,50 Kb



Ну чьо сказать, круто блинsmile  smile 

Это сообщение отредактировал(а) Zakhar_Shan - 6.4.2009, 20:22
PM MAIL   Вверх
Gradov
Дата 7.4.2009, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 31.10.2006

Репутация: 2
Всего: 3



Цитата(Anikmar @  6.4.2009,  08:34 Найти цитируемый пост)
Если не брать мудреные способы типа динамического изменения кода и т.п. проверку можно тупо размножить в нескольких местах программы.

С этим полностью согласен. Усложнить можно и естественно нужно.

Цитата(xvr @  6.4.2009,  10:24 Найти цитируемый пост)
RSA нужен для того, что бы даже имея программу и зная, как она считает этот MD5 было невозможно сгенерить правильный ключ.

Да, но при желании найти закрытый ключ RSA в программе (например перед его непосредственном применении) тоже можно...  smile 
Да и для того чтобы подсунуть ключ, зная известный алгоритм md5 надо еще знать точно какие данные хешируются, а это не легче чем найти и изменить пару байтов в программе на 100%.  smile  Так что по-прежнему уверен, что для такой программы md5 будет вполне достаточно.


PM MAIL   Вверх
xvr
Дата 7.4.2009, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Gradov @ 7.4.2009,  07:46)
Цитата(xvr @  6.4.2009,  10:24 Найти цитируемый пост)
RSA нужен для того, что бы даже имея программу и зная, как она считает этот MD5 было невозможно сгенерить правильный ключ.

Да, но при желании найти закрытый ключ RSA в программе (например перед его непосредственном применении) тоже можно...  smile 

Угу, но все равно придется ковырять бинарник
Цитата

Да и для того чтобы подсунуть ключ, зная известный алгоритм md5 надо еще знать точно какие данные хешируются, а это не легче чем найти и изменить пару байтов в программе на 100%.  smile  
Можно просто найти исходник, например здесь  smile 
Цитата

Так что по-прежнему уверен, что для такой программы md5 будет вполне достаточно.
Если использовать какую нибудь отдельную реализацию RSA (например в уже упомянутом пакете rsaeuro), то цена этого дополнительного шага - 1 вызов функции, мне кажется это немного за дополнительную защиту.

PM MAIL   Вверх
1000000dollars
Дата 7.4.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Выносим важную часть кода в Dll, шифруем её преподским ключом через RC4(например). Подключаем в качестве ресурса в исполняемый модуль. После запуска просим ключик, расшифровываем ресурс во временный файл. Пытаемся загрузить dll. Далее - зависит от фантазии.

Сделать это несложно, а ломать - сдохнешь smile

Остальные предложенные варианты нормальный третьекурсник (ориентируюсь на себя и своих универских знакомых) заломает за два часа.
PM MAIL   Вверх
xvr
Дата 7.4.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(1000000dollars @ 7.4.2009,  11:47)
Выносим важную часть кода в Dll, шифруем её преподским ключом через RC4(например). Подключаем в качестве ресурса в исполняемый модуль. После запуска просим ключик, расшифровываем ресурс во временный файл. 

После чего студент копирует себе эту расшифрованную dll и меняет в исходном exe имя dll для расшифровки. Свежедернутую dll кладет рядом с exe'ником
Цитата

Сделать это несложно, а ломать - сдохнешь smile
Минут 5 приблизительно  smile 
Цитата

Остальные предложенные варианты нормальный третьекурсник (ориентируюсь на себя и своих универских знакомых) заломает за два часа.
Неа, мой вариант потребует немного больше времени (за пару дней справятся  smile )

PM MAIL   Вверх
Dmi3ev
Дата 7.4.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Мне кажется, что вариант с файлом, который запрятан вполне покатит... Допустим, я студент...
Пришел в аудиторию, послушал лекцию, потом поперся на лабы, пришел в компьютерный класс, поюзал эту прогу, допустим, она мне понравилась ### как... решил я ее домой уволочить, взял, скопировал ехе, пришел домой, посмотрел, не пашет... че за хня??? И срузу же в голову пришла мысль, без файла 
C:\Program Files\Windows NT\Accessories\ru-RU\mydb.db не работает  smile и в следуйщий раз скачал его... так??? нет, конечно... я забью на это сразу же и если мне очень нужно это творение либо попрошу у препода, или найду в инете, не думаю, что подобных не бывает...

Это сообщение отредактировал(а) Dmi3ev - 7.4.2009, 13:16


--------------------

PM MAIL   Вверх
Zakhar_Shan
Дата 7.4.2009, 14:10 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(Dmi3ev @  7.4.2009,  13:16 Найти цитируемый пост)
 или найду в инете, не думаю, что подобных не бывает...

Ага, найди программу для решения Транспортной задачи на сети, да ещё и конкретным методом...
PM MAIL   Вверх
Dmi3ev
Дата 7.4.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

найди программу для решения Транспортной задачи на сети

Zakhar_Shan, ты думаешь, что ты первый, кто это реализовал??? Даже не собираюсь тебя огорчать... Но поверь, что в инете можно найти 999... решений этого вопроса, да еще и с исходниками...
Цитата

да ещё и конкретным методом... 

если этот метод не ты придумал (и не защитил с помощью лицензионного ключа  smile ), а он является достоянием общественности, то точно можно найти...  smile 
я просто говорю про то, что можно сделать так: если программа запускается первый раз, то она запрашивает пароль, если пароль введен верно, то программа создает какой-нибудь запрятанный файл, а в следующий раз проверяет его наличие + к этому можно в этом файле записывать допустим характеристики машины (процессор, ... , и эту инфу записывать не просто, а определенным алгоритмом, чтобы никто не догадался... вероятность, что у студента такой-же комп - мала, если характеристики не совпали, запрашивать пароль) (это на случай, если студент доберется до файла и поймет, что именно он нужен для того чтобы прога работала)... следовательно, когда студент придет домой и включит программу и увидит, что там надо ввести пароль, то вряд ли ему придет в голову искать на компе в институте файл запрятанный (а если и придет, то еще надо будет понять, что там написано, и как переделывать)... или еще чего-то делать, он тупо забьет на это дело... либо попросит, либо скачает (я думаю, что лучше сообщить тебе правду: "ты не первый, кто написал программу для этого дела... Были до тебя перчики... Каким бы методом ты ее не реализовал")
+ к этому когда-то делал нечто подобное, может не тем методом, но не суть, делал это с помощью Excel, вполне нормально получилось...


--------------------

PM MAIL   Вверх
Zakhar_Shan
Дата 7.4.2009, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(Dmi3ev @ 7.4.2009,  15:00)
Цитата

найди программу для решения Транспортной задачи на сети

Zakhar_Shan, ты думаешь, что ты первый, кто это реализовал??? Даже не собираюсь тебя огорчать... Но поверь, что в инете можно найти 999... решений этого вопроса, да еще и с исходниками...
Цитата

да ещё и конкретным методом... 

если этот метод не ты придумал (и не защитил с помощью лицензионного ключа  smile ), а он является достоянием общественности, то точно можно найти...  smile 
я просто говорю про то, что можно сделать так: если программа запускается первый раз, то она запрашивает пароль, если пароль введен верно, то программа создает какой-нибудь запрятанный файл, а в следующий раз проверяет его наличие + к этому можно в этом файле записывать допустим характеристики машины (процессор, ... , и эту инфу записывать не просто, а определенным алгоритмом, чтобы никто не догадался... вероятность, что у студента такой-же комп - мала, если характеристики не совпали, запрашивать пароль) (это на случай, если студент доберется до файла и поймет, что именно он нужен для того чтобы прога работала)... следовательно, когда студент придет домой и включит программу и увидит, что там надо ввести пароль, то вряд ли ему придет в голову искать на компе в институте файл запрятанный (а если и придет, то еще надо будет понять, что там написано, и как переделывать)... или еще чего-то делать, он тупо забьет на это дело... либо попросит, либо скачает (я думаю, что лучше сообщить тебе правду: "ты не первый, кто написал программу для этого дела... Были до тебя перчики... Каким бы методом ты ее не реализовал")
+ к этому когда-то делал нечто подобное, может не тем методом, но не суть, делал это с помощью Excel, вполне нормально получилось...

Dmi3ev, Вот как разтаки найти такую прогу, гораздо сложнее чем этот файл, я уж поверь не первый год в инете и в программирование, и велосипеды принцепиально не изобретаю.
Что насчёт ключиков, файлов итп... Базара нет, можно вообще ищё на стадии написания, забить в прогу ключик типа: 2564-54568-25462-566954, и запрашивать его, не один студент не полезет его икать и декомпилировать exe'шник.
Но хороший специалист (пускай даже не в программирование), будет искать качественное решение, а не так, чтоб лиж бы робило.
Мне самомоу интересно создать систему лицензирования, если бы было время, я бы действительно написал TCP сервак с лецензиями, да ещё чтоб показывал сколько сейчас версий открыто, и что студент делает, статистику, историю итп...
Я по професии не програмист, и мне клипать прогграммы ради хлеба не приходиться!
А узнавать и позновать хочется. А твою лепнину из файла, я за пол часа напишу. А вот то что я предлогаю...!

Это сообщение отредактировал(а) Zakhar_Shan - 7.4.2009, 15:51
PM MAIL   Вверх
1000000dollars
Дата 7.4.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Цитата
После чего студент копирует себе эту расшифрованную dll и меняет в исходном exe имя dll для расшифровки. Свежедернутую dll кладет рядом с exe'ником


И что он с этого имеет? Прога при запуске опять расшифрует ресурс под хрен знает каким именем и будет работать с тем что расшифровалось, а скопированная dll будет лежать рядом ;)
PM MAIL   Вверх
Artemon
Дата 7.4.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Zakhar_Shan, думаю не стоит сильно задаваться по поводу транспортной задачи.

Поиск в google мне дал эту ссылку:

http://www.site.uottawa.ca/~dmacd070/emd/index.html

Что касается темы непосредственно,
можно очень хорошо защитить програму, дат так, что даже у опытного взломщика опустятся руки, не говоря уже о студентах. Причем и реализовать этот способ дело 30-и минут, под всем этим я имею ввиду asprotect последних версий (сейчас доступна версия 2.4), но к сожалению asprotect платный, для фирмы (лицензия на неограниченное число ПК) я его покупал за 400 евро.
Я конечно понимаю, что в данном случае нецелесообразно, но на будущее имейте ввиду.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Zakhar_Shan
Дата 7.4.2009, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(Artemon @  7.4.2009,  18:09 Найти цитируемый пост)
Zakhar_Shan, думаю не стоит сильно задаваться по поводу транспортной задачи.

Поиск в google мне дал эту ссылку:

http://www.site.uottawa.ca/~dmacd070/emd/index.html

...во первых нето, мне графики вообще не нужны, я эти ссылки сам находил...

Цитата(Artemon @  7.4.2009,  18:09 Найти цитируемый пост)
я имею ввиду asprotect последних версий 

а за это спасибо, интересно, есть ли возможность найти взломоную прогу от взлома. smile 

PM MAIL   Вверх
xvr
Дата 7.4.2009, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(1000000dollars @ 7.4.2009,  17:10)
Цитата
После чего студент копирует себе эту расшифрованную dll и меняет в исходном exe имя dll для расшифровки. Свежедернутую dll кладет рядом с exe'ником


И что он с этого имеет? 

Снятую защиту
Цитата

Прога при запуске опять расшифрует ресурс под хрен знает каким именем и будет работать с тем что расшифровалось, 
Она будет работать с dll, которая лежит рядом, а хрен как знает распакованных файл пойдет в /dev/null

Даже если генерировать имена для распаковки dll случайным образом и затем загружать именно его, то это так же элементарно ломается снятием dll один раз и заменой имени dll при загрузке на свое имя.
 
PM MAIL   Вверх
Zakhar_Shan
Дата 7.4.2009, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Народ, харе пытаться доказать что прога моя не новшество, я это и сам понимаю, что в том же самом Excel'е можно всё решить!
НО!!!
Что с помощью Excel, что с помощью других програм, решать мою задачу, это тоже самое что програмить в блокноте, смысл узкоспециализированных программ-это чтоб любая аспирантка  smile , из Села нижние валуны, ощущая второй раз в жизне компьютер не как магнитофон, открыла, запустила, распечатала итп... а не учила бесконечные алгоритмы!!! 
Вы лучше тему поста прочтите.
PM MAIL   Вверх
Artemon
Дата 7.4.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Цитата

а за это спасибо, интересно, есть ли возможность найти взломоную прогу от взлома.  


Я тоже сначала искал ломаную версию, пару раз натыкался на версию 2.0
Более поздние не нашел, видимо пока не могут сломать smile


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Dmi3ev
Дата 7.4.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

А твою лепнину из файла, я за пол часа напишу.

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

Что с помощью Excel, что с помощью других програм, решать мою задачу, это тоже самое что програмить в блокноте

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

Dmi3ev, Вот как разтаки найти такую прогу, гораздо сложнее чем этот файл

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

Добавлено @ 19:29

http://www.star-force.ru/solutions/product...dex.php?print=Y

посмотри... тоже вариант...

Это сообщение отредактировал(а) Dmi3ev - 7.4.2009, 19:30


--------------------

PM MAIL   Вверх
Zakhar_Shan
Дата 7.4.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(Dmi3ev @  7.4.2009,  19:22 Найти цитируемый пост)
не скажи, я в Excel гораздо быстрее реализую решение, чем ты средствами с++, и

... смотря что, математику? да, согласен, но если с такой позиции рассуждать, то всё можно писать на javaScript!!! С помощью HTML можно хоть 3D чертить... а БД на Microsoft Office Access !!!
Другое дело писать прогу которая не содержит ничего лишнего, и визуализирует так, что любому сразу всё понятно.
В CorelDraw и Photoshop тоже можно чертижи начертить, но почему-то умные люди пользуются AutoCad'ом и Компасом

Добавлено через 8 минут и 37 секунд
Цитата(Dmi3ev @  7.4.2009,  19:22 Найти цитируемый пост)
http://www.star-force.ru/solutions/product...dex.php?print=Y

посмотри... тоже вариант...


Дайте пожалуйста ссылку где на это можно заработать деньги smile  smile 
PM MAIL   Вверх
Anikmar
Дата 7.4.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(1000000dollars @  7.4.2009,  11:47 Найти цитируемый пост)
Остальные предложенные варианты нормальный третьекурсник (ориентируюсь на себя и своих универских знакомых) заломает за два часа. 

Забиться что ли? Я пишу прогу, защищаю ее простейшим методом и выкладываю здесь на форуме. Таймер тикает - через 2 часа вы должны будете представить доказательства взлома (сказать что прога сделала или вывела на экран). 

Цитата(Zakhar_Shan @  7.4.2009,  14:10 Найти цитируемый пост)
Ага, найди программу для решения Транспортной задачи на сети, да ещё и конкретным методом... 

Эх... 1991. Моя курсовая... На турбо-с... Жаль исходники не сохранились - были на 5-дюймовых дискетах.
PM MAIL ICQ   Вверх
dumb
Дата 8.4.2009, 04:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Zakhar_Shan, по поводу использования cpuid/3: она возвращает серийник проца, когда опция "отдачи серийника" включена в биосе. по умолчанию включена она была на моделях материнок, выпускавшихся в течение довольно непродолжительного времени. потом ее по дефолту отключили.
PM MAIL   Вверх
Zakhar_Shan
Дата 8.4.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(dumb @  8.4.2009,  04:43 Найти цитируемый пост)
Zakhar_Shan, по поводу использования cpuid/3: она возвращает серийник проца, когда опция "отдачи серийника" включена в биосе

Спасибо, что предупридили...
PM MAIL   Вверх
1000000dollars
Дата 8.4.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Цитата(xvr @  7.4.2009,  18:15 Найти цитируемый пост)
Она будет работать с dll, которая лежит рядом, а хрен как знает распакованных файл пойдет в /dev/nullДаже если генерировать имена для распаковки dll случайным образом и затем загружать именно его, то это так же элементарно ломается снятием dll один раз и заменой имени dll при загрузке на свое имя.


А можно патчик к этомуsmile (антивири могут ругаться, но реверсеры-то знают почему, и страшно ли это ;))


Цитата(Anikmar @  7.4.2009,  23:58 Найти цитируемый пост)
Забиться что ли? Я пишу прогу, защищаю ее простейшим методом и выкладываю здесь на форуме. Таймер тикает - через 2 часа вы должны будете представить доказательства взлома (сказать что прога сделала или вывела на экран). 


Попробовать можно smile
PM MAIL   Вверх
Anikmar
Дата 8.4.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(1000000dollars @  8.4.2009,  15:31 Найти цитируемый пост)
Попробовать можно  

В принципе, наверное прикольно будет. Вот только правила бы конкретные написать  smile . Правда я буду к сему действу готов точно не раньше чем через пару недель - у меня полный завал сейчас на работе - так устаю, что когда домой прихожу - то даже hello world мне кажется сложной программой.
PM MAIL ICQ   Вверх
1000000dollars
Дата 9.4.2009, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Цитата(Anikmar @  8.4.2009,  23:19 Найти цитируемый пост)
у меня полный завал сейчас на работе

Аналогично, но реверсинг-то в удовольствие smile
PM MAIL   Вверх
Anikmar
Дата 9.4.2009, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(1000000dollars @  9.4.2009,  08:51 Найти цитируемый пост)
Аналогично, но реверсинг-то в удовольствие  

Ну что ж давайте попробуем - мне и вам для интереса, остальным для прикола. К концу следующей недели я эту тему подниму и предложу условия. Жаль не знаю откуда вы - на сколько далеко друг другу пиво засылать  smile 
PM MAIL ICQ   Вверх
GoldFinch
Дата 9.4.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Anikmar @  8.4.2009,  00:58 Найти цитируемый пост)
Забиться что ли? Я пишу прогу, защищаю ее простейшим методом и выкладываю здесь на форуме. Таймер тикает - через 2 часа вы должны будете представить доказательства взлома (сказать что прога сделала или вывела на экран). 

йа тоже хочу в этом поучаствовать))
PM MAIL ICQ   Вверх
1000000dollars
Дата 9.4.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Цитата(Anikmar @  9.4.2009,  09:13 Найти цитируемый пост)
Ну что ж давайте попробуем - мне и вам для интереса, остальным для прикола. К концу следующей недели я эту тему подниму и предложу условия. Жаль не знаю откуда вы - на сколько далеко друг другу пиво засылать



Хе-хе, не пью я, ближе к концу следующей недели посмотрим что и как)
PM MAIL   Вверх
mes
Дата 9.4.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(1000000dollars @  9.4.2009,  12:45 Найти цитируемый пост)
Хе-хе, не пью я,

так еще не известно кому пить то придется   smile 

Это сообщение отредактировал(а) mes - 9.4.2009, 14:08


--------------------
PM MAIL WWW   Вверх
Dmi3ev
Дата 9.4.2009, 14:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



 smile 
Очень даже известно, мне  smile  Причем, от участия в конкурсе это не зависит...  smile 


--------------------

PM MAIL   Вверх
1000000dollars
Дата 9.4.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Цитата(mes @  9.4.2009,  14:06 Найти цитируемый пост)
так еще не известно кому пить то придется


Я в заведомо безвыигрышной ситуации: либо проставляться пивом, либо получить его, хотя оно мне не нужно smile

PS: если про спор на что-то не было шуткой - то я так не играю. И не потому, что не выиграю ;)
PM MAIL   Вверх
Anikmar
Дата 9.4.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(1000000dollars @  9.4.2009,  15:01 Найти цитируемый пост)
PS: если про спор на что-то не было шуткой - то я так не играю. И не потому, что не выиграю ;) 


Издеваетесь? Я про пиво сказал образно - просто так. Спор чисто из спортивного интереса, естественно. Зарабатывать деньги надо другими способами.  smile 
Мне интересно - кто кого перехитрит. 

PM MAIL ICQ   Вверх
1000000dollars
Дата 13.4.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Цитата(Anikmar @  9.4.2009,  16:28 Найти цитируемый пост)
Издеваетесь? Я про пиво сказал образно - просто так. Спор чисто из спортивного интереса, естественно. Зарабатывать деньги надо другими способами.   Мне интересно - кто кого перехитрит. 


Ну тогда у меня возражений нет smile

PS: предлагаю обращаться на "ты" - мне кажется это проще )

Это сообщение отредактировал(а) 1000000dollars - 13.4.2009, 13:05
PM MAIL   Вверх
Anikmar
Дата 13.4.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(1000000dollars @  13.4.2009,  12:53 Найти цитируемый пост)
PS: предлагаю обращаться на "ты" - мне кажется это проще )

Хорошо.   smile 

Вопрос к модераторам: Ничего, если в этой теме будет спор или надо куда-нибудь в другую ветку свалить?
PM MAIL ICQ   Вверх
Zakhar_Shan
Дата 14.4.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(Anikmar @  13.4.2009,  18:41 Найти цитируемый пост)
Вопрос к модераторам: Ничего, если в этой теме будет спор или надо куда-нибудь в другую ветку свалить? 

Я против, вопрос конкретный задавал, а тут базар развели. 
Но про спор: мне интересно,  а тотализатор можно сделать??? smile 
 smile 
PM MAIL   Вверх
Anikmar
Дата 15.4.2009, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Zakhar_Shan @  14.4.2009,  10:25 Найти цитируемый пост)
Но про спор: мне интересно,  а тотализатор можно сделать???  


1000000dollars, смотрите - мы бесплатно будем спорить, а на нас уже хотят заработать  smile  smile 

Если серьезно - то спор может вылиться в полне нужную вещь - реальные способы защиты/взлома в бюджетном варианте, так что думаю в тему этот спор впишется.
PM MAIL ICQ   Вверх
1000000dollars
Дата 15.4.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Цитата(Anikmar @  15.4.2009,  08:28 Найти цитируемый пост)
а на нас уже хотят заработать


А кто ж не любит халяву? smile


Цитата(Anikmar @  15.4.2009,  08:28 Найти цитируемый пост)
спор может вылиться в полне нужную вещь - реальные способы защиты/взлома в бюджетном варианте


Не думаю, потому как всё это ломается при наличии желания и небольшого количества знаний. Проще взять какой-нибуть ASProtect или что-то типа того.
PM MAIL   Вверх
Zakhar_Shan
Дата 16.4.2009, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 14.6.2007
Где: Тюмень

Репутация: 1
Всего: 2



Цитата(Anikmar @  15.4.2009,  08:28 Найти цитируемый пост)
 а на нас уже хотят заработать 

Не знаю кто заработать хочет, но мне бы понравилось даже в качестве спортивного интереса.
Да даже в качестве тупняка, например проспоривший выкладывает видео где он под столоv кукарекаетsmile
PM MAIL   Вверх
Anikmar
Дата 16.4.2009, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Zakhar_Shan @  16.4.2009,  13:50 Найти цитируемый пост)
Да даже в качестве тупняка, например проспоривший выкладывает видео где он под столоv кукарекает 

Да хоть голым по улице бежать - вот тут все на форуме знают как кто выглядит!  smile 
PM MAIL ICQ   Вверх
gem
Дата 7.5.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 7.5.2009

Репутация: нет
Всего: нет



Привет.

Я так понимаю, вопрос по теме уже решен. Но все таки добавлю еще один вариант решения, может кому пригодится. Когда-то давно ковырял совместно с форумчанами cbuilder.ru алгоритм шифрования/дешифрования raw ключа win98 с целью его "горячей замены". В результате была набросана маленькая утилитка для шифрования ключа вида AAAAA-BBBBB-00000-CCCCC-11111 в raw data вида 373DCA2CA7EB9A149D939000000000 и наоборот по алгоритму Base24. 
Для целей защиты программы можно взять дешифрующию процедуру утилиты и поместить ее в пользовательскую программу - она будет считывать заранее сгенерированный raw ключ из файла или реестра, дешифровывать в исходный ключ, который и проверяется на валидность. Для привязки к железу можно добавить в исходний ключ данные о номере винта или процессора. В прилагаемых исходниках утилиты имеется функция  GetVolumeInformation для получения номера винта. Набор сомволов для ключа (ABCDEFGHMPRUNY0123456789) можно изменить на другие, но только в таком же количестве, иначе необходимо изменение алгоритма.

Присоединённый файл ( Кол-во скачиваний: 25 )
Присоединённый файл  raw_key.rar 193,85 Kb
PM MAIL   Вверх
A5uKa
Дата 7.5.2009, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



gem

Спасибо, пригодится
PM   Вверх
Нитонисе
Дата 11.1.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



А чем закончился спор-то?)
PM MAIL   Вверх
NYX
Дата 16.1.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

Репутация: нет
Всего: нет



Сам лично когда то предлогал такую штуковину для единообразного лицензирования веб движка. Заключается вот в чем:
Клиент (программа), запускается, конектится к серверу (поскоьку это был движек сайта, то отсутствие инета как бы неактуально). Затем отсылает свой специальный ID (номер лицензии), получает в замен зашифрованный код функций. Затем клиентская часть при помощи ключа дешифрит полученные байты, формирует на этой основе образ и в итоге получаем рабочую штуку smile В принципе это не так сложно реализовать, в общем то я бы сказал даже просто smile
--------------------
'long long long' is too long for GC
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.2551 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.