Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
CODE PROJECT For Those Who Code
  • Home
  • Articles
  • FAQ
Community
  1. Home
  2. General Programming
  3. C#
  4. copy protection

copy protection

Scheduled Pinned Locked Moved C#
questionworkspace
12 Posts 7 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    Prashant B Lavate
    wrote on last edited by
    #1

    i have made setup of my project but i want to add copy protection like no body will able to copy cd or it will be installed only once like that so how can i do this?

    Thanks & Regards, Prashant B. Lavate Software Engineer Mobile : +919423872257 Pune(India)

    S G 2 Replies Last reply
    0
    • P Prashant B Lavate

      i have made setup of my project but i want to add copy protection like no body will able to copy cd or it will be installed only once like that so how can i do this?

      Thanks & Regards, Prashant B. Lavate Software Engineer Mobile : +919423872257 Pune(India)

      S Offline
      S Offline
      Simon P Stevens
      wrote on last edited by
      #2

      There are companies that provide services like this such as SafeDisc[^] and SecuROM[^] (http://www.securom.com/[^]). There are also companies that provide USB key protection like Nexcopy[^] and KeyLok[^]. You could include some form of serial number, and you can obfuscate your code to discourage reverse engineering. and you could include a live validation check with a server you own to watch for duplicate keys. Nothing is perfect though, there is always someone who finds a way round these things. And all of these things impact negatively on genuine paying customers. You're better off encouraging your customers to pay through excellent support and customer service, good follow ups, regular updates and sensible prices. Forget the people who copy it, they are a minority anyway.

      Simon

      1 Reply Last reply
      0
      • P Prashant B Lavate

        i have made setup of my project but i want to add copy protection like no body will able to copy cd or it will be installed only once like that so how can i do this?

        Thanks & Regards, Prashant B. Lavate Software Engineer Mobile : +919423872257 Pune(India)

        G Offline
        G Offline
        Giorgi Dalakishvili
        wrote on last edited by
        #3

        If there is only one if statement that does the check, it really doesn't matter whether you use system registry, usb dongle or computer hash. Every application written in .Net can be easily decompiled and it only takes putting ! in the if statement to make an application work on every computer. Obfuscators make it more difficult but not very much. Even application written in native c++ or vb can be easily cracked. In case it's assembler that does the cracking. The fact that general users will not be able to make necessary registry manipulation does not mean anything as usually it's crackers you crack the program and not users. Users just download them from warez websites. Crackers on the other hand have much more knowledge than general users and use advanced tools for cracking. What I suggest is that you put checks at different places in the program and not so obvious. Having a dll called license.dll will attract crackers. On the other hand you can put some code in license.dll which looks like license check but does nothing in reality. Good luck! P.S. Remember that it is very difficult to make an application that can not be cracked. The only thing you can and should do is make more difficult your program to crack and put reasonable price on it so that it really does not make sense to crack it.

        Giorgi Dalakishvili #region signature My Articles Asynchronous Registry Notification Using Strongly-typed WMI Classes in .NET [^] My blog #endregion

        L P 2 Replies Last reply
        0
        • G Giorgi Dalakishvili

          If there is only one if statement that does the check, it really doesn't matter whether you use system registry, usb dongle or computer hash. Every application written in .Net can be easily decompiled and it only takes putting ! in the if statement to make an application work on every computer. Obfuscators make it more difficult but not very much. Even application written in native c++ or vb can be easily cracked. In case it's assembler that does the cracking. The fact that general users will not be able to make necessary registry manipulation does not mean anything as usually it's crackers you crack the program and not users. Users just download them from warez websites. Crackers on the other hand have much more knowledge than general users and use advanced tools for cracking. What I suggest is that you put checks at different places in the program and not so obvious. Having a dll called license.dll will attract crackers. On the other hand you can put some code in license.dll which looks like license check but does nothing in reality. Good luck! P.S. Remember that it is very difficult to make an application that can not be cracked. The only thing you can and should do is make more difficult your program to crack and put reasonable price on it so that it really does not make sense to crack it.

          Giorgi Dalakishvili #region signature My Articles Asynchronous Registry Notification Using Strongly-typed WMI Classes in .NET [^] My blog #endregion

          L Offline
          L Offline
          leppie
          wrote on last edited by
          #4

          Giorgi Dalakishvili wrote:

          Crackers on the other hand have much more knowledge than general users and use advanced tools for cracking.

          Like their brains :)

          xacc.ide - now with TabsToSpaces support
          IronScheme - 1.0 beta 1 - out now!
          ((lambda (x) `((lambda (x) ,x) ',x)) '`((lambda (x) ,x) ',x))

          1 Reply Last reply
          0
          • G Giorgi Dalakishvili

            If there is only one if statement that does the check, it really doesn't matter whether you use system registry, usb dongle or computer hash. Every application written in .Net can be easily decompiled and it only takes putting ! in the if statement to make an application work on every computer. Obfuscators make it more difficult but not very much. Even application written in native c++ or vb can be easily cracked. In case it's assembler that does the cracking. The fact that general users will not be able to make necessary registry manipulation does not mean anything as usually it's crackers you crack the program and not users. Users just download them from warez websites. Crackers on the other hand have much more knowledge than general users and use advanced tools for cracking. What I suggest is that you put checks at different places in the program and not so obvious. Having a dll called license.dll will attract crackers. On the other hand you can put some code in license.dll which looks like license check but does nothing in reality. Good luck! P.S. Remember that it is very difficult to make an application that can not be cracked. The only thing you can and should do is make more difficult your program to crack and put reasonable price on it so that it really does not make sense to crack it.

            Giorgi Dalakishvili #region signature My Articles Asynchronous Registry Notification Using Strongly-typed WMI Classes in .NET [^] My blog #endregion

            P Offline
            P Offline
            Paul Conrad
            wrote on last edited by
            #5

            Giorgi Dalakishvili wrote:

            What I suggest is that you put checks at different places in the program and not so obvious. Having a dll called license.dll will attract crackers. On the other hand you can put some code in license.dll which looks like license check but does nothing in reality.

            I agree.

            Giorgi Dalakishvili wrote:

            Obfuscators make it more difficult but not very much.

            Sure they can. I like Skater since it allows you to obfuscate methods and properties with "unprintable" characters and can cause Reflector to crash. I'm sure there's probably ways around it, but making it more difficult can deter the lesser motivated crackers.

            "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon "Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham

            D 1 Reply Last reply
            0
            • P Paul Conrad

              Giorgi Dalakishvili wrote:

              What I suggest is that you put checks at different places in the program and not so obvious. Having a dll called license.dll will attract crackers. On the other hand you can put some code in license.dll which looks like license check but does nothing in reality.

              I agree.

              Giorgi Dalakishvili wrote:

              Obfuscators make it more difficult but not very much.

              Sure they can. I like Skater since it allows you to obfuscate methods and properties with "unprintable" characters and can cause Reflector to crash. I'm sure there's probably ways around it, but making it more difficult can deter the lesser motivated crackers.

              "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon "Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham

              D Offline
              D Offline
              Dan Neely
              wrote on last edited by
              #6

              OTOH multi megabuck protection systems like SecureOmgWtfLolBbqDisk don't stop the no cd hacks for more than a few hours or days, so I'd rate it as a lost cause. The only way to effectively limit piracy is to design an app that can't work without talking to servers owned by the company that wrote it.

              Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall

              P 1 Reply Last reply
              0
              • D Dan Neely

                OTOH multi megabuck protection systems like SecureOmgWtfLolBbqDisk don't stop the no cd hacks for more than a few hours or days, so I'd rate it as a lost cause. The only way to effectively limit piracy is to design an app that can't work without talking to servers owned by the company that wrote it.

                Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall

                P Offline
                P Offline
                Paul Conrad
                wrote on last edited by
                #7

                dan neely wrote:

                only way to effectively limit piracy is to design an app that can't work without talking to servers owned by the company that wrote it.

                True. I mentioned that the other day to some guy who didn't want people to copy his app that uses a sql express database. Require your app to "phone home" and it does keep it on a leash so to speak when it is out in the wild :)

                "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon "Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham

                D S 2 Replies Last reply
                0
                • P Paul Conrad

                  dan neely wrote:

                  only way to effectively limit piracy is to design an app that can't work without talking to servers owned by the company that wrote it.

                  True. I mentioned that the other day to some guy who didn't want people to copy his app that uses a sql express database. Require your app to "phone home" and it does keep it on a leash so to speak when it is out in the wild :)

                  "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon "Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham

                  D Offline
                  D Offline
                  Dan Neely
                  wrote on last edited by
                  #8

                  I'm directing my reply towards the OP.

                  Paul Conrad wrote:

                  Require your app to "phone home" and it does keep it on a leash so to speak when it is out in the wild Smile

                  Just a simple phone home isn't any more effective than any other simple in application check. You need to store either a critical portion of the data or application functionality on a remote server.

                  Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall

                  P 1 Reply Last reply
                  0
                  • D Dan Neely

                    I'm directing my reply towards the OP.

                    Paul Conrad wrote:

                    Require your app to "phone home" and it does keep it on a leash so to speak when it is out in the wild Smile

                    Just a simple phone home isn't any more effective than any other simple in application check. You need to store either a critical portion of the data or application functionality on a remote server.

                    Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall

                    P Offline
                    P Offline
                    Paul Conrad
                    wrote on last edited by
                    #9

                    dan neely wrote:

                    Just a simple phone home isn't any more effective than any other simple in application check.

                    Totally agree. I wasn't going to go into deep details as to how I approach my copy protection methods. It's proprietary ;P

                    dan neely wrote:

                    You need to store either a critical portion of the data or application functionality on a remote server.

                    That's part of it, but which parts is the question :rolleyes:

                    "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon "Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham

                    1 Reply Last reply
                    0
                    • P Paul Conrad

                      dan neely wrote:

                      only way to effectively limit piracy is to design an app that can't work without talking to servers owned by the company that wrote it.

                      True. I mentioned that the other day to some guy who didn't want people to copy his app that uses a sql express database. Require your app to "phone home" and it does keep it on a leash so to speak when it is out in the wild :)

                      "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon "Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham

                      S Offline
                      S Offline
                      Samer Aburabie
                      wrote on last edited by
                      #10

                      Paul Conrad wrote:

                      Require your app to "phone home" and it does keep it on a leash so to speak when it is out in the wild

                      I liked the way you described it :) .. but certainly I would agree on that ... thats what I have been thinking of for an application of mine !

                      Sincerely Samer Abu Rabie Note: Please remember to rate this post to help others whom reading it.

                      P 1 Reply Last reply
                      0
                      • S Samer Aburabie

                        Paul Conrad wrote:

                        Require your app to "phone home" and it does keep it on a leash so to speak when it is out in the wild

                        I liked the way you described it :) .. but certainly I would agree on that ... thats what I have been thinking of for an application of mine !

                        Sincerely Samer Abu Rabie Note: Please remember to rate this post to help others whom reading it.

                        P Offline
                        P Offline
                        Paul Conrad
                        wrote on last edited by
                        #11

                        Thanks. It should not be just doing an application check, but handling control of the critical parts of the app from remote as well. See dan's post, as well as my reply to him ( I would share how I protect my code, but it's a heavily guarded secret ;P ).... BTW, my app isn't just on a leash, but has a choke collar on the leash. It really isn't getting away :laugh:

                        "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon "Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham

                        S 1 Reply Last reply
                        0
                        • P Paul Conrad

                          Thanks. It should not be just doing an application check, but handling control of the critical parts of the app from remote as well. See dan's post, as well as my reply to him ( I would share how I protect my code, but it's a heavily guarded secret ;P ).... BTW, my app isn't just on a leash, but has a choke collar on the leash. It really isn't getting away :laugh:

                          "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon "Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham

                          S Offline
                          S Offline
                          Samer Aburabie
                          wrote on last edited by
                          #12

                          :laugh:

                          Sincerely Samer Abu Rabie Note: Please remember to rate this post to help others whom reading it.

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups