Защита программы на C#

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by iHikita, 12 Sep 2010.

  1. iHikita

    iHikita New Member

    Joined:
    5 May 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, подскажите пожалуйста.
    Мне нужно защитить свою программу от копирования и дальнейшего распространения. Не нужна сложная привязка во много действий, а допустим привязка к HDD или чему-то ещё и HardWare. Слышал о программе ASProtect, но не смог найти мануал по использованию. Кто сможет подсказать как реализовать защиту буду благодарен или как использовать эту программу.
    Могу в качестве "Спасиба" кинуть 100р на счёт мобильного :)
    Очень нужно ещё чтобы простому юзеру было сложно понять код дизасембером.
     
  2. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Делай привязку по железу путём получения серийника харда+например ID процессора и перемешивай их по любому придуманному тобой алгоритму.После этого обсфуцируй софт платным обсфукатором, например .NET Reactor.
     
  3. iHikita

    iHikita New Member

    Joined:
    5 May 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Если подскажите пример получения серийного номера hdd, буду крайне признателен. Сколько обгуглил рабочего примера не нашёл на C#, наверно я что-то не так делаю.
     
  4. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    PHP:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Management;
    using System.IO;

    namespace 
    HardwareID
    {
        public 
    partial class Form1 Form
        
    {
            public 
    Form1()
            {
                
    InitializeComponent();
            }

            private 
    string getUniqueID(string drive)
            {
                if (
    drive == string.Empty)
                {
                    
    //Find first drive
                    
    foreach (DriveInfo compDrive in DriveInfo.GetDrives())
                    {
                        if (
    compDrive.IsReady)
                        {
                            
    drive compDrive.RootDirectory.ToString();
                            break;
                        }
                    }
                }

                if (
    drive.EndsWith(":\\"))
                {
                    
    //C:\ -> C
                    
    drive drive.Substring(0drive.Length 2);
                }

                
    string volumeSerial getVolumeSerial(drive);
                
    string cpuID getCPUID();

                
    //Mix them up and remove some useless 0's
                
    return cpuID.Substring(13) + cpuID.Substring(14) + volumeSerial cpuID.Substring(44);
            }

            private 
    string getVolumeSerial(string drive)
            {       
                
    ManagementObject disk = new ManagementObject(@"win32_logicaldisk.deviceid=""" drive + @":""");
                
    disk.Get();
                
                
    string volumeSerial disk["VolumeSerialNumber"].ToString();
                
    disk.Dispose();

                return 
    volumeSerial;
            }

            private 
    string getCPUID()
            {
                
    string cpuInfo "";
                
    ManagementClass managClass = new ManagementClass("win32_processor");
                
    ManagementObjectCollection managCollec managClass.GetInstances();

                foreach (
    ManagementObject managObj in managCollec)
                {
                    if (
    cpuInfo == "")
                    {
                        
    //Get only the first CPU's ID
                        
    cpuInfo managObj.Properties["processorID"].Value.ToString();
                        break;
                    }
                }

                return 
    cpuInfo;
            }

            private 
    void button1_Click(object senderEventArgs e)
            {
                
    txtID.Text getUniqueID("C");
            }
        }
    }
    Вот, перепишешь под себя.Код не мой, работал с этим кодом только немного переписывал его под себя ибо здесь много говна имхо...Ну если что перепишешь ^_^
     
  5. iHikita

    iHikita New Member

    Joined:
    5 May 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Огромное спасибо, буду разбираться :)
     
  6. noxjoker

    noxjoker Member

    Joined:
    7 Aug 2009
    Messages:
    189
    Likes Received:
    24
    Reputations:
    0
    CodeSender:) всю твою защиту можно обойти за нефиг. Рефлектор и все.

    Нужно паковать.
     
  7. AlexTheC0d3r

    AlexTheC0d3r Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    388
    Likes Received:
    179
    Reputations:
    18
    е*ани проверку по сети + обфускатор

    http://habrahabr.ru/blogs/net/97062/
     
    #7 AlexTheC0d3r, 13 Sep 2010
    Last edited by a moderator: 13 Sep 2010
Loading...
Similar Threads - Защита программы
  1. Peja
    Replies:
    0
    Views:
    2,606