Cách tạo license cho phần mềm

Mình tham khảo được cách tạo license cho phần mềm ở đây, xin post lại để mọi người tham khảo (nếu cần). Bạn nào có cách thì post thêm lên nhé. Có lẽ đây cũng là chủ đề đáng được quan tâm.

http://diendan.congdongcviet.com/threads/t65117::cach-viet-code-tao-license-cho-phan-mem.cpp?p=627965#post627965

Ý tưởng như sau:

  • Khi một máy nào đó cài phần mềm của bạn, thì máy đó cần gửi cho bạn một mã Request Activate Code

  • Dựa vào Request Active Code đã cung cấp thì bạn sẽ tạo một license cho
    máy đó để import vào phần mềm thì mới sử dụng phần mềm được.

Các bước làm như sau:

  • đầu tiên bạn lấy series của ổ cứng của máy đang cài phần mềm bằng string output1 = ExecuteCommandSync(“vol”);

  • sau đó bạn mã hóa chuỗi output1 bằng phương pháp MD5: string output2 =ConvertStringToSecureCode(output1);

  • như vậy chuỗi output2 là Request Activate Code.

bây giờ tạo license cho Request Active Code vừa thu được ở trên:

  • bạn lấy output2 nối thêm với một chuỗi bí mật do bạn đặt ra: output2 =output2 +“chuỗi bí mật”;

  • sau đó đem cuỗi output2 mã hóa bằng MD5: string licensecode = ConvertStringToSecureCode(output2);

xong rồi, bạn đem licensecode này import vào phần mềm của máy đang chạy
là xong. Các hàm code mình để bên dưới cho các bạn tham khảo.

public static string ConvertStringToSecureCode(string Input1)
{
    MD5 Secu1 = MD5.Create();
    byte[] data1 = Secu1.ComputeHash(Encoding.Default.GetBytes(Input1));
    StringBuilder sbd = new StringBuilder();
    for (int i = 0; i <= data1.Length - 1; i++)
    {
        sbd.Append(data1[i].ToString("x2"));
    }
    return sbd.ToString();
}

public static string GetRequestLicenseCode()
{
    string Hd1 = HardDiskSeriesNumber();
    string Code1 =ConvertStringToSecureCode(temp1);
    string Code2 = Code1.Substring(24).ToUpper();
    string s5 = FormatLicenseCode(Code2);
    return s5;
}


private static string HardDiskSeriesNumber()
{
    string output = ExecuteCommandSync("vol");
    string aa = output.Split('.')[output.Split('.').Length - 1];
    string bb = aa.Split(' ')[aa.Split(' ').Length - 1];
    return bb.ToString().ToUpper();
}

public static string ExecuteCommandSync(object command)
{
    try
    {
        // create the ProcessStartInfo using "cmd" as the program to be run,
        // and "/c " as the parameters.
        // Incidentally, /c tells cmd that we want it to execute the command that follows,
        // and then exit.
        System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);

        // The following commands are needed to redirect the standard output.
        // This means that it will be redirected to the Process.StandardOutput StreamReader.
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;
        // Do not create the black window.
        procStartInfo.CreateNoWindow = true;
        // Now we create a process, assign its ProcessStartInfo and start it
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo = procStartInfo;
        proc.Start();
        // Get the output into a string
        string result = proc.StandardOutput.ReadToEnd();
        // Display the command output.
        return result;
    }
    catch (Exception)
    {
        // Log the exception
        return null;
    }
}
5 Likes

Kết câu này

Bạn cứ làm license đơn giản thôi là được rồi. Bản quyền thì đã có luật pháp bảo vệ. Bạn tốn công làm cho phức tạp thì chỉ khổ cho bạn mà thôi, vì trước sau gì cũng sẽ bị reverse ra và crk. Có chăng là làm khó khăn thêm cho người crk mà thôi. Đôi khi làm phức tạp quá sẽ kích thích trí tò mò của các rce cũng nên. Bạn nên nhớ hiện nay phe rce vẫn thắng thế so với phe anti đấy. Mà mình nghĩ là sẽ luôn như thế. Chương trình của bạn chạy trên máy client, những gì chương trình bạn chạy, xử lý được đều nằm trên máy client. Bạn kiểm tra điều kiện này nọ cũng kiểm tra tại máy client, kết quả kiểm tra thì client có thể can thiệp. Ko sớm thì muộn cũng sẽ bị biết cả thôi.

Muốn không crack được chỉ có phần mềm như game online :v

3 Likes

Chủ yếu là phòng người ngay thôi. Chứ gặp người cố tình crk thì chịu thôi. Nhưng dù
sao vẫn phải bàn luận vấn đề này chứ? Thêm nữa nếu càng tốn thời gian để crk thì người ta sẽ càng ít crk những phần mềm nhỏ

Ý mình là bàn các cách tạo license chứ ko phải tìm cách để hoàn toàn ko bị crk (đến Microsoft còn bị crk cơ mà)

3 Likes

Post này đã được di chuyển vào Duplicate Posts để nâng chất lượng thảo luận

I moved a post to an existing topic: Duplicate posts will be moved here

Tạo lience có thiếu gì cách bạn ^^

Như tạo random 1 chuỗi mà có từ cố định chẳng hạn
như từ cố định là CODER
sau đó tạo random chèn các ký tự vô giữa CODER sao cho đủ 32 kí tự :>

Còn ko thì A=1, B=2…Z=26
Tổng, tích, hiệu,… các chữ trong key sao cho =512 hoặc 1024 chẳng hạn :v

Hoặc là Nhập tên người dùng. Loại bỏ hết nguyên âm, còn phụ âm và random số vô giữa các phụ âm sao cho các số vừa thêm vào tổng tích hiệu chia mod gì gì đó = 1 số nào đó

Có thể dùng mã hóa để làm key. Như nhập vào email. Mã hóa email thành chuỗi bất kì sau đó lấy n kí tự từ chuỗi mã hóa đó ^^

/----------------------------------------------------------------
Những phần mềm hay và dở, chứ không có nhỏ và to.
Hay mà nhỏ, nhẹ khó crack đến mấy cũng phải mò crack đc. ^^

6 Likes

Mình tạo USB Key. Khi phần mềm kết nối và giao tiếp được với UsB Key thì lưu trình mới được định hình.Hehe

bạn có thể chỉ cho mình cái usb key này không ? mình cũng tò mò về nó quá , giờ nhiều người dùng cái này

Kiến thức cơ bản bạn cần phải có trước tiên là sẽ phải viết được chương trình cho một con chip để nó giao tiếp được qua USB theo kiểu HID.

Mình thắc mắc là: import licensecode vào phần mềm của máy đang chạy như thế nào?
Và import xong thì làm gì để phần mềm hoạt động và chuyển cho người sử dụng?
Xin cảm ơn!

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?