Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Software protection?

Dear all,
Few days ago, I finished my project to build an SMS Server application in Delphi. It is ready to be distributed. But I couldn't do it yet becouse I have a problem (or an classic problem?). This problem may become a trouble for every programmers when they'll distribute their application. Yes, the problem is copying protection! That's it.

First way, I've tried to solve this problem by using a kind of product number. That product number was produced through a complex algorithm by decoding customer's informations such as name and so on. Unfortunately, I feel that is not an effective way to protect our distribute program from duplication.

Second way, I think by using a processor serial number that protection problem can be solved easierly. But in last I knew that's impossible to get a processor serial number, and then I tried to get a IDE drives serial number. Fortunately, that's possible to do that. I've got it, and it is an unique number. Although this way is seem to be a solution, in fact, it's not effective enough.

And yesterday, a friend told me, it's more effective to protect our distribute program by failing duplication process. In other word, that means is block the copy command! And he told me about "disk ID". Disk mean floppy or compact disk. He said that every disk have little space which it can be read by operating system. That space can be used to store "disk ID".

If we talk about duplication (or copy process), it means we have both of source disk and destination disk which source be copied on it. Like my friend said, and assume everything he said was right, I go to a resume that is easy to solve a distribute program problem if we can be read and write a disk ID at that recorded space (in source and destination disk).

THE BIG QUESTION IS HOW TO READ AND WRITE THE DISK ID TO THE FLOPPY OR COMPACT DISK? AND I REALY HOPE SOMEONE CAN EXPLAIN ME ABOUT MY FRIEND WAY DEEPLY.

Thanks.
«1

Comments

  • zibadianzibadian Posts: 6,349Member
    [b][red]This message was edited by zibadian at 2004-11-20 14:54:23[/red][/b][hr]
    : Dear all,
    : Few days ago, I finished my project to build an SMS Server application in Delphi. It is ready to be distributed. But I couldn't do it yet becouse I have a problem (or an classic problem?). This problem may become a trouble for every programmers when they'll distribute their application. Yes, the problem is copying protection! That's it.
    :
    : First way, I've tried to solve this problem by using a kind of product number. That product number was produced through a complex algorithm by decoding customer's informations such as name and so on. Unfortunately, I feel that is not an effective way to protect our distribute program from duplication.
    :
    : Second way, I think by using a processor serial number that protection problem can be solved easierly. But in last I knew that's impossible to get a processor serial number, and then I tried to get a IDE drives serial number. Fortunately, that's possible to do that. I've got it, and it is an unique number. Although this way is seem to be a solution, in fact, it's not effective enough.
    :
    : And yesterday, a friend told me, it's more effective to protect our distribute program by failing duplication process. In other word, that means is block the copy command! And he told me about "disk ID". Disk mean floppy or compact disk. He said that every disk have little space which it can be read by operating system. That space can be used to store "disk ID".
    :
    : If we talk about duplication (or copy process), it means we have both of source disk and destination disk which source be copied on it. Like my friend said, and assume everything he said was right, I go to a resume that is easy to solve a distribute program problem if we can be read and write a disk ID at that recorded space (in source and destination disk).
    :
    : THE BIG QUESTION IS HOW TO READ AND WRITE THE DISK ID TO THE FLOPPY OR COMPACT DISK? AND I REALY HOPE SOMEONE CAN EXPLAIN ME ABOUT MY FRIEND WAY DEEPLY.
    :
    : Thanks.
    :
    You might be able to block the DOS copy command, but you cannot block a program, which copies the disk sector by sector. So even that won't solve your problem.
    To get any info on a drive volume use this API function: GetVolumeInformation(). You can use SetVolumeLabel() to set the label.

    I have also recently looked into the problems of software copy protection. And after a while I came to the conclusion that 100% protection is impossible. The only thing that can be done is to make it as difficult as possible. I myself have chosen for a hash-like serial number based on the customer's data.
  • cikumiyucikumiyu Posts: 12Member
    : [b][red]This message was edited by zibadian at 2004-11-20 14:54:23[/red][/b][hr]
    : : Dear all,
    : : Few days ago, I finished my project to build an SMS Server application in Delphi. It is ready to be distributed. But I couldn't do it yet becouse I have a problem (or an classic problem?). This problem may become a trouble for every programmers when they'll distribute their application. Yes, the problem is copying protection! That's it.
    : :
    : : First way, I've tried to solve this problem by using a kind of product number. That product number was produced through a complex algorithm by decoding customer's informations such as name and so on. Unfortunately, I feel that is not an effective way to protect our distribute program from duplication.
    : :
    : : Second way, I think by using a processor serial number that protection problem can be solved easierly. But in last I knew that's impossible to get a processor serial number, and then I tried to get a IDE drives serial number. Fortunately, that's possible to do that. I've got it, and it is an unique number. Although this way is seem to be a solution, in fact, it's not effective enough.
    : :
    : : And yesterday, a friend told me, it's more effective to protect our distribute program by failing duplication process. In other word, that means is block the copy command! And he told me about "disk ID". Disk mean floppy or compact disk. He said that every disk have little space which it can be read by operating system. That space can be used to store "disk ID".
    : :
    : : If we talk about duplication (or copy process), it means we have both of source disk and destination disk which source be copied on it. Like my friend said, and assume everything he said was right, I go to a resume that is easy to solve a distribute program problem if we can be read and write a disk ID at that recorded space (in source and destination disk).
    : :
    : : THE BIG QUESTION IS HOW TO READ AND WRITE THE DISK ID TO THE FLOPPY OR COMPACT DISK? AND I REALY HOPE SOMEONE CAN EXPLAIN ME ABOUT MY FRIEND WAY DEEPLY.
    : :
    : : Thanks.
    : :
    : You might be able to block the DOS copy command, but you cannot block a program, which copies the disk sector by sector. So even that won't solve your problem.
    : To get any info on a drive volume use this API function: GetVolumeInformation(). You can use SetVolumeLabel() to set the label.
    :
    : I have also recently looked into the problems of software copy protection. And after a while I came to the conclusion that 100% protection is impossible. The only thing that can be done is to make it as difficult as possible. I myself have chosen for a hash-like serial number based on the customer's data.
    :

    Sorry I've got a wrong in my posting before. Look at 4th paragraph line 4 - 5. There was typed "He said that every disk have little space which it can be read by operating system". The correct sentence is "He said that every disk have little space which it cannot be read by operating system". Is there the disk-space like that?

    API function: GetVolumeInformation() as far as i know is to get information of drive-volume only. Drive-volume is identical with drive-partition. Serial number was produced from GetVolumeInformation() is only a random number to be generated when we make partition on our hard drive. That number is not unique and always change every hard drive partition change. In my case, I don't use the serial-number which be produced from GetVolumeInformation(). But I choose to use the hard-drive serial number. Every machine must have processor and hard drive. Both of them have a serial number (or product number was gave by factory). The deference is possible to get a hard drive serial number and it was impossible to get one either.

    By using a hard drive serial number I could generate a serial number for my distribute program.

    Best regards,
    cikumiyu
  • zibadianzibadian Posts: 6,349Member
    : : [b][red]This message was edited by zibadian at 2004-11-20 14:54:23[/red][/b][hr]
    : : : Dear all,
    : : : Few days ago, I finished my project to build an SMS Server application in Delphi. It is ready to be distributed. But I couldn't do it yet becouse I have a problem (or an classic problem?). This problem may become a trouble for every programmers when they'll distribute their application. Yes, the problem is copying protection! That's it.
    : : :
    : : : First way, I've tried to solve this problem by using a kind of product number. That product number was produced through a complex algorithm by decoding customer's informations such as name and so on. Unfortunately, I feel that is not an effective way to protect our distribute program from duplication.
    : : :
    : : : Second way, I think by using a processor serial number that protection problem can be solved easierly. But in last I knew that's impossible to get a processor serial number, and then I tried to get a IDE drives serial number. Fortunately, that's possible to do that. I've got it, and it is an unique number. Although this way is seem to be a solution, in fact, it's not effective enough.
    : : :
    : : : And yesterday, a friend told me, it's more effective to protect our distribute program by failing duplication process. In other word, that means is block the copy command! And he told me about "disk ID". Disk mean floppy or compact disk. He said that every disk have little space which it can be read by operating system. That space can be used to store "disk ID".
    : : :
    : : : If we talk about duplication (or copy process), it means we have both of source disk and destination disk which source be copied on it. Like my friend said, and assume everything he said was right, I go to a resume that is easy to solve a distribute program problem if we can be read and write a disk ID at that recorded space (in source and destination disk).
    : : :
    : : : THE BIG QUESTION IS HOW TO READ AND WRITE THE DISK ID TO THE FLOPPY OR COMPACT DISK? AND I REALY HOPE SOMEONE CAN EXPLAIN ME ABOUT MY FRIEND WAY DEEPLY.
    : : :
    : : : Thanks.
    : : :
    : : You might be able to block the DOS copy command, but you cannot block a program, which copies the disk sector by sector. So even that won't solve your problem.
    : : To get any info on a drive volume use this API function: GetVolumeInformation(). You can use SetVolumeLabel() to set the label.
    : :
    : : I have also recently looked into the problems of software copy protection. And after a while I came to the conclusion that 100% protection is impossible. The only thing that can be done is to make it as difficult as possible. I myself have chosen for a hash-like serial number based on the customer's data.
    : :
    :
    : Sorry I've got a wrong in my posting before. Look at 4th paragraph line 4 - 5. There was typed "He said that every disk have little space which it can be read by operating system". The correct sentence is "He said that every disk have little space which it cannot be read by operating system". Is there the disk-space like that?
    :
    : API function: GetVolumeInformation() as far as i know is to get information of drive-volume only. Drive-volume is identical with drive-partition. Serial number was produced from GetVolumeInformation() is only a random number to be generated when we make partition on our hard drive. That number is not unique and always change every hard drive partition change. In my case, I don't use the serial-number which be produced from GetVolumeInformation(). But I choose to use the hard-drive serial number. Every machine must have processor and hard drive. Both of them have a serial number (or product number was gave by factory). The deference is possible to get a hard drive serial number and it was impossible to get one either.
    :
    : By using a hard drive serial number I could generate a serial number for my distribute program.
    :
    : Best regards,
    : cikumiyu
    :
    As far as I know every bit on the disk or CD can be read by the OS. I know of programs which can read every bit, simply by placing the read head at that location, and telling it to read.
  • LynardLynard Posts: 1Member
    : : : [b][red]This message was edited by zibadian at 2004-11-20 14:54:23[/red][/b][hr]
    : : : : Dear all,
    : : : : Few days ago, I finished my project to build an SMS Server application in Delphi. It is ready to be distributed. But I couldn't do it yet becouse I have a problem (or an classic problem?). This problem may become a trouble for every programmers when they'll distribute their application. Yes, the problem is copying protection! That's it.
    : : : :
    : : : : First way, I've tried to solve this problem by using a kind of product number. That product number was produced through a complex algorithm by decoding customer's informations such as name and so on. Unfortunately, I feel that is not an effective way to protect our distribute program from duplication.
    : : : :
    : : : : Second way, I think by using a processor serial number that protection problem can be solved easierly. But in last I knew that's impossible to get a processor serial number, and then I tried to get a IDE drives serial number. Fortunately, that's possible to do that. I've got it, and it is an unique number. Although this way is seem to be a solution, in fact, it's not effective enough.
    : : : :
    : : : : And yesterday, a friend told me, it's more effective to protect our distribute program by failing duplication process. In other word, that means is block the copy command! And he told me about "disk ID". Disk mean floppy or compact disk. He said that every disk have little space which it can be read by operating system. That space can be used to store "disk ID".
    : : : :
    : : : : If we talk about duplication (or copy process), it means we have both of source disk and destination disk which source be copied on it. Like my friend said, and assume everything he said was right, I go to a resume that is easy to solve a distribute program problem if we can be read and write a disk ID at that recorded space (in source and destination disk).
    : : : :
    : : : : THE BIG QUESTION IS HOW TO READ AND WRITE THE DISK ID TO THE FLOPPY OR COMPACT DISK? AND I REALY HOPE SOMEONE CAN EXPLAIN ME ABOUT MY FRIEND WAY DEEPLY.
    : : : :
    : : : : Thanks.
    : : : :
    : : : You might be able to block the DOS copy command, but you cannot block a program, which copies the disk sector by sector. So even that won't solve your problem.
    : : : To get any info on a drive volume use this API function: GetVolumeInformation(). You can use SetVolumeLabel() to set the label.
    : : :
    : : : I have also recently looked into the problems of software copy protection. And after a while I came to the conclusion that 100% protection is impossible. The only thing that can be done is to make it as difficult as possible. I myself have chosen for a hash-like serial number based on the customer's data.
    : : :
    : :
    : : Sorry I've got a wrong in my posting before. Look at 4th paragraph line 4 - 5. There was typed "He said that every disk have little space which it can be read by operating system". The correct sentence is "He said that every disk have little space which it cannot be read by operating system". Is there the disk-space like that?
    : :
    : : API function: GetVolumeInformation() as far as i know is to get information of drive-volume only. Drive-volume is identical with drive-partition. Serial number was produced from GetVolumeInformation() is only a random number to be generated when we make partition on our hard drive. That number is not unique and always change every hard drive partition change. In my case, I don't use the serial-number which be produced from GetVolumeInformation(). But I choose to use the hard-drive serial number. Every machine must have processor and hard drive. Both of them have a serial number (or product number was gave by factory). The deference is possible to get a hard drive serial number and it was impossible to get one either.
    : :
    : : By using a hard drive serial number I could generate a serial number for my distribute program.
    : :
    : : Best regards,
    : : cikumiyu
    : :
    : As far as I know every bit on the disk or CD can be read by the OS. I know of programs which can read every bit, simply by placing the read head at that location, and telling it to read.
    :
    While it is true that the OS can and does read every byte on a disk or CD, the OS does not use every byte it reads. From my DOS days, I used a copy protection scheme which relied upon placing a code in the unused space of the FAT. If someone knew the code was there they could use a sector-read program to retrieve it.

  • zibadianzibadian Posts: 6,349Member
    : : : : [b][red]This message was edited by zibadian at 2004-11-20 14:54:23[/red][/b][hr]
    : : : : : Dear all,
    : : : : : Few days ago, I finished my project to build an SMS Server application in Delphi. It is ready to be distributed. But I couldn't do it yet becouse I have a problem (or an classic problem?). This problem may become a trouble for every programmers when they'll distribute their application. Yes, the problem is copying protection! That's it.
    : : : : :
    : : : : : First way, I've tried to solve this problem by using a kind of product number. That product number was produced through a complex algorithm by decoding customer's informations such as name and so on. Unfortunately, I feel that is not an effective way to protect our distribute program from duplication.
    : : : : :
    : : : : : Second way, I think by using a processor serial number that protection problem can be solved easierly. But in last I knew that's impossible to get a processor serial number, and then I tried to get a IDE drives serial number. Fortunately, that's possible to do that. I've got it, and it is an unique number. Although this way is seem to be a solution, in fact, it's not effective enough.
    : : : : :
    : : : : : And yesterday, a friend told me, it's more effective to protect our distribute program by failing duplication process. In other word, that means is block the copy command! And he told me about "disk ID". Disk mean floppy or compact disk. He said that every disk have little space which it can be read by operating system. That space can be used to store "disk ID".
    : : : : :
    : : : : : If we talk about duplication (or copy process), it means we have both of source disk and destination disk which source be copied on it. Like my friend said, and assume everything he said was right, I go to a resume that is easy to solve a distribute program problem if we can be read and write a disk ID at that recorded space (in source and destination disk).
    : : : : :
    : : : : : THE BIG QUESTION IS HOW TO READ AND WRITE THE DISK ID TO THE FLOPPY OR COMPACT DISK? AND I REALY HOPE SOMEONE CAN EXPLAIN ME ABOUT MY FRIEND WAY DEEPLY.
    : : : : :
    : : : : : Thanks.
    : : : : :
    : : : : You might be able to block the DOS copy command, but you cannot block a program, which copies the disk sector by sector. So even that won't solve your problem.
    : : : : To get any info on a drive volume use this API function: GetVolumeInformation(). You can use SetVolumeLabel() to set the label.
    : : : :
    : : : : I have also recently looked into the problems of software copy protection. And after a while I came to the conclusion that 100% protection is impossible. The only thing that can be done is to make it as difficult as possible. I myself have chosen for a hash-like serial number based on the customer's data.
    : : : :
    : : :
    : : : Sorry I've got a wrong in my posting before. Look at 4th paragraph line 4 - 5. There was typed "He said that every disk have little space which it can be read by operating system". The correct sentence is "He said that every disk have little space which it cannot be read by operating system". Is there the disk-space like that?
    : : :
    : : : API function: GetVolumeInformation() as far as i know is to get information of drive-volume only. Drive-volume is identical with drive-partition. Serial number was produced from GetVolumeInformation() is only a random number to be generated when we make partition on our hard drive. That number is not unique and always change every hard drive partition change. In my case, I don't use the serial-number which be produced from GetVolumeInformation(). But I choose to use the hard-drive serial number. Every machine must have processor and hard drive. Both of them have a serial number (or product number was gave by factory). The deference is possible to get a hard drive serial number and it was impossible to get one either.
    : : :
    : : : By using a hard drive serial number I could generate a serial number for my distribute program.
    : : :
    : : : Best regards,
    : : : cikumiyu
    : : :
    : : As far as I know every bit on the disk or CD can be read by the OS. I know of programs which can read every bit, simply by placing the read head at that location, and telling it to read.
    : :
    : While it is true that the OS can and does read every byte on a disk or CD, the OS does not use every byte it reads. From my DOS days, I used a copy protection scheme which relied upon placing a code in the unused space of the FAT. If someone knew the code was there they could use a sector-read program to retrieve it.
    :
    :
    In the old DOS days, I've even seen a protection, which uses a deleted file to add spaces the the DOS filenames. Because that file was deleted on the master copy, one could not retrieve it unless you did a complete disk-duplication. They made 1 tiny mistake: in the root directory of the program were 2 identical filenames, incl. extension.
  • cikumiyucikumiyu Posts: 12Member
    : While it is true that the OS can and does read every byte on a disk or CD, the OS does not use every byte it reads. From my DOS days, I used a copy protection scheme which relied upon placing a code in the unused space of the FAT. If someone knew the code was there they could use a sector-read program to retrieve it.
    :
    :

    : While it is true that the OS can and does read every byte on a disk or CD, the OS does not use every byte it reads. From my DOS days, I used a copy protection scheme which relied upon placing a code in the unused space of the FAT. If someone knew the code was there they could use a sector-read program to retrieve it.
    :
    :

    Could you explain me? Or please tell me where can I get the references... And I have a question for you. Where is the unused space? 1st sector? 2nd or where?

    Thanks.


  • zibadianzibadian Posts: 6,349Member
    : : While it is true that the OS can and does read every byte on a disk or CD, the OS does not use every byte it reads. From my DOS days, I used a copy protection scheme which relied upon placing a code in the unused space of the FAT. If someone knew the code was there they could use a sector-read program to retrieve it.
    : :
    : :
    :
    : : While it is true that the OS can and does read every byte on a disk or CD, the OS does not use every byte it reads. From my DOS days, I used a copy protection scheme which relied upon placing a code in the unused space of the FAT. If someone knew the code was there they could use a sector-read program to retrieve it.
    : :
    : :
    :
    : Could you explain me? Or please tell me where can I get the references... And I have a question for you. Where is the unused space? 1st sector? 2nd or where?
    :
    : Thanks.
    :
    :
    :
    The FAT is located in the first few sectors. Writing to the FAT is quite dangerous and will require assembly to directly access the drive hardware. Here is a source code, which could be interesting: http://internettrash.com/users/fdb/fmat.pas I found it using google.
  • Yogi YangYogi Yang Posts: 9Member
    : : : While it is true that the OS can and does read every byte on a disk or CD, the OS does not use every byte it reads. From my DOS days, I used a copy protection scheme which relied upon placing a code in the unused space of the FAT. If someone knew the code was there they could use a sector-read program to retrieve it.
    : : :
    : : :
    : :
    : : : While it is true that the OS can and does read every byte on a disk or CD, the OS does not use every byte it reads. From my DOS days, I used a copy protection scheme which relied upon placing a code in the unused space of the FAT. If someone knew the code was there they could use a sector-read program to retrieve it.
    : : :
    : : :
    : :
    : : Could you explain me? Or please tell me where can I get the references... And I have a question for you. Where is the unused space? 1st sector? 2nd or where?
    : :
    : : Thanks.
    : :
    : :
    : :
    : The FAT is located in the first few sectors. Writing to the FAT is quite dangerous and will require assembly to directly access the drive hardware. Here is a source code, which could be interesting: http://internettrash.com/users/fdb/fmat.pas I found it using google.
    :
    Instead of doing all this Jugglary. Why don't u goto Delphi super pages and find for OnGuard component or goto SourceForge and download OnGuard VCL in full sourcecode. And use it with your software for developing a fool proof (some what) protection....

    If you want to use HardDisk serials then try to use the HardDisk's Firmware Serial number as that number never changes as long as the HDD is not changed.

    Check it out.


  • rezashahranrezashahran Posts: 21Member
    : Dear all,
    : Few days ago, I finished my project to build an SMS Server application in Delphi. It is ready to be distributed. But I couldn't do it yet becouse I have a problem (or an classic problem?). This problem may become a trouble for every programmers when they'll distribute their application. Yes, the problem is copying protection! That's it.
    :
    : First way, I've tried to solve this problem by using a kind of product number. That product number was produced through a complex algorithm by decoding customer's informations such as name and so on. Unfortunately, I feel that is not an effective way to protect our distribute program from duplication.
    :
    : Second way, I think by using a processor serial number that protection problem can be solved easierly. But in last I knew that's impossible to get a processor serial number, and then I tried to get a IDE drives serial number. Fortunately, that's possible to do that. I've got it, and it is an unique number. Although this way is seem to be a solution, in fact, it's not effective enough.
    :
    : And yesterday, a friend told me, it's more effective to protect our distribute program by failing duplication process. In other word, that means is block the copy command! And he told me about "disk ID". Disk mean floppy or compact disk. He said that every disk have little space which it can be read by operating system. That space can be used to store "disk ID".
    :
    : If we talk about duplication (or copy process), it means we have both of source disk and destination disk which source be copied on it. Like my friend said, and assume everything he said was right, I go to a resume that is easy to solve a distribute program problem if we can be read and write a disk ID at that recorded space (in source and destination disk).
    :
    : THE BIG QUESTION IS HOW TO READ AND WRITE THE DISK ID TO THE FLOPPY OR COMPACT DISK? AND I REALY HOPE SOMEONE CAN EXPLAIN ME ABOUT MY FRIEND WAY DEEPLY.
    :
    : Thanks.
    :
    Dear ...,
    why dont you use a Hardware Protection (Dungle), It is very easy to use and safer than software Locks ...
    Smart Key, Key Pro are some Type of Hardware Locks ...
    Hope they will Help
    Reza

  • Sorcerer84Sorcerer84 Posts: 2Member
    [b][red]This message was edited by Sorcerer84 at 2005-5-24 15:27:1[/red][/b][hr]
    hello,
    you can try this protection.
    it has everithing you need.

    don't belive me, download and check!

    http://www.sorcerer.lx.ro/forum/viewforum.php?f=1


«1
Sign In or Register to comment.