Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Author
Message
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 01:03 Edited at: 2nd Jun 2004 01:05
I'm currently making a piece of software that I plan to sell (for more info on the product, http://darkbasicpro.thegamecreators.com/?m=forum_view&t=32596&b=5), and I'm trying to figure out a way to stop people from passing on pirate copies of my software and I was wondering if there is some way to identify a computer, perhaps using a DLL. If I knew this, then I could then put a bit of code in my software that compares the present computer ID against the computer ID of the registered user (held in an encrypted array), and if they were different, then the program would quit with an exit prompt.

Any ideas?

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
CattleRustler
Retired Moderator
21
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 2nd Jun 2004 01:05
google: Concept Software, if you are serious about piracy protection


* DBP_NETLIB_v1.2 - NOW WITH VARIABLE WATCHER! * Click Logo
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 01:09 Edited at: 2nd Jun 2004 01:11
What!!?!?!?! $400 plus! That's more than I'm planning on making! If I could get the computer ID, then I think I could be able to make it piracy-free (well, it's only going to be $10 - $15, so I don't think anyone's going to go to extrordinary lengths to crack it).

EDIT: Perhaps there is some function that could return the windows serial number?

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
OSX Using Happy Dude
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location: At home
Posted: 2nd Jun 2004 01:16 Edited at: 2nd Jun 2004 01:16
Quote: "If I could get the computer ID"

Whats that ? The IP address ? Computer Name ? BIOS ID (if present and active) ?

I would get a fair few things, make sure that the routine that gets & checks these things is duplicated and obtuse as possible, making sure the functions are as irrelevant as possible. Add some dummy functions as well. Do the same thing in any and all DLL's and make sure that the protection in these is always called (possibly multiple times).

Make sure the protection is called at random times and any problems dont show up straight away.


The place for wonderful plug-ins and things.
Keep your friends close, and your cats even closer.
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 01:18 Edited at: 2nd Jun 2004 01:22
By computer ID, I mean a piece of information that is specific to that computer. That maybe the serial number for windows, the BIOS ID, I'm not sure. As long as all (or nearly all) computers have it and they are all different (and unchangeable).

EDIT: Yeah, I'll make an array that has, say, 100 spaces. Only a few of these spaces have any real information. All the dummy spaces start off being trick information (eg. [email protected], if I were to put an e-mail address in the array). Then each space would be encrypted in their own way. At each update, these encryptions would be allocated to a different space. That should detter some prospectful hackers!

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
TheOneRing
21
Years of Service
User Offline
Joined: 28th Aug 2003
Location: Right here.
Posted: 2nd Jun 2004 05:21
Remember this... If it is software, it can be broken.

Visit http://www.mighty-atom.com/d-zone for the Transform-i scripting engine project.
CattleRustler
Retired Moderator
21
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 2nd Jun 2004 05:28
it doesn't matter what you "get" from the os/software/hardware, your code can be disassembled and stepped thru by a cracker, circumventing anything you code as protection. Using a third party system like I mentioned makes this much much more difficult, but again not impossible. Your first best defense is to obfuscate your exe and dlls. This will slow the crackers down, then doing the things that tca mentioned is a continued good start.

You can easily hold off the beginners and intermediates out there (crackers) but if a pro want's your software cracked - it will be cracked.

good luck


* DBP_NETLIB_v1.2 - NOW WITH VARIABLE WATCHER! * Click Logo
Rknight
21
Years of Service
User Offline
Joined: 25th Sep 2003
Location: NJ
Posted: 2nd Jun 2004 05:33
If you're serious, Starforce hasn't been beaten yet. It appears to be real tough. Don't know how much it costs though.

I tend to think if you're a 'shareware' author you'll have less pirating trouble than if you're commercial. Not just because of the smaller market, but because you get more moral respect even from pirates, who know you need the money to survive and upgrade the stuff.

But what do I know? It's just an impression.
zenassem
22
Years of Service
User Offline
Joined: 10th Mar 2003
Location: Long Island, NY
Posted: 2nd Jun 2004 06:23 Edited at: 2nd Jun 2004 07:26
@Eat much pie,

Wouldn't it be ironic for someone to be using a cracked version of a software protection program because of it's price.

I have a few crack programs (most provide an assembly dump / hex editor / registry watcher etc..), If you would like after you finish your .exe I'll take a stab at craking it. This would give you an idea of how hard it would be for a (learned) but admitted Novice.

To get you started (and possibly give you an escape from reading the rest of my post) here is a link "FREE" to C++ source Code, demo project, And information on how to use the HD serial number and info:

http://www.codeproject.com/csharp/hard_disk_serialNo.asp

I would think that a better method would be to use a hash algorithm for the Id's of multiple hardware items. BIOS (ID & Data, CPU, Hardrive (serial #), Video Card, Lan card (Mac Addr.) etc... Generate multiple checksums. [Start with one like the HD example above: Maybe someone can help you make it a DLL] Possibly, regenerate new hashes every so often on the fly. Build in some tolerance to the algorithm, to allow for some hardware changes. I think this is similar to MicroSofts method. I would think that this would be easier to do in C++ as a DLL for your app. I'll try to find out more specific info for you. But unless you want to provide support for re-registering this could be overkill for shareware. Most people will support the app if they like it. Personal examples that I contributed to. Blender (yes my names on the list EJomisko for those who keep score.), The Gimp.

Ask Nuclear Glory or Rob K how there programs are fairing. I tend to believe that most people using it are legit. Just look at the support they provide. People respect that. I also believe that a majority of DB users are legit. But then again I can sometimes be naive.

Also if the program is really well put together and professional, maybe Rich or Lee would help you out with info or, or point you in the right direction. Just make sure that your app is of that quality before inquiring.

Some resources
Here's an article expressing pretty much what people are saying here. The same reason I don't agree with TGC's newly discussed activation ideas [Though I won't whine about it. Or try to fight it.] Anyone who is determined enough will always find a way to cheat.
http://www.realsoftware.com/listarchives/realbasic-nug/2001-04/msg02230.html

It warns that it's only going to prevent hobbiest crackers. But It's free and can give you some insight.
http://www.codeproject.com/cpp/softprot.asp

You could always require people to have a USB dongle. Now what type of company would offer that? hehe! I remember an early version of LightWave that required multiple Parallel dongles. Just imagine people that owned multiple software apps that utilized this method. I rememer seeing computers that looked like a lego tower on the back. (Chained Dongles, arghhhh)
A USB/DONGLE protection system
http://www.keylok.com/hasp_l.html


Black Hydra II
21
Years of Service
User Offline
Joined: 26th Nov 2003
Location:
Posted: 2nd Jun 2004 06:54 Edited at: 2nd Jun 2004 06:58
One way is to have a server open and a set of program keys.

They would have to connect to the internet and register there CD key in order to play after installing. If the CD key is already in use when they try to install it would cancel the installation.

Your only problem there would be re-installs. What you would have is that when they Uninstall the program it would tell your server that that CDkey is no longer in use. This method would protect from piracy, however, some people might get peeved as it is a bit extreme. Personally, I would only start this method if I knew there was a big piracy problem with my program.

Personally, I don't think piracy is your biggest concern. The fact is that if you broadcast/advertise your game on the net wide enough people won't be in a geographical location in order to hand the program around. Don't expect to sell enough copies for that to be a big problem.

"Damn had to remake account!" direct quotation from previous account.
zenassem
22
Years of Service
User Offline
Joined: 10th Mar 2003
Location: Long Island, NY
Posted: 2nd Jun 2004 07:36 Edited at: 2nd Jun 2004 11:18
Travel Back in Time ~~~~~~~~~{{{{{{{{{{}}}}}}}}}}~~~~~~~~~~~

Any old Atari/Commodore users remeber "Fast Hack'em" or "Black Rabbit Copies". For those who weren't around then, in the early-mid 80's many companies purposely wrote error tracks across the disk. In order for your Disk to work it had to incorporate those errors in the right sectors, which a normal diskcopy would choke on. Those error tracks would wreak havok on your 5 1/4 floppy. I burned out two motors and broke a belt on another drive. (some CD's still use this technology)

Even more of a nightmare, were those decoder wheels, especially if they needed to be entered on every run. They even tried to make it seem like fun by having the decoder wheel themed liked the game. I remember a Egyptian game (king tut's tomb, I think??) I had that had all heiroglyphics on them. (worse than majong?? tilesets). It would take me about 10 tries (meaning a complete 2 minute reload in between each try). By the time I got it correct I was too cross-eyed to play the darn game. Of course that was the first time I opted for a cracked version of software. (I did own it though). Kennedey Approach had about 100 or so different 3 letter response keys.

Anyone else have any Software Protection horror stories?


eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 16:08
@ Zen

Seeing how my program will be only $10 - $15, I only really need protection against 'hobby hackers' and people who just copy and paste the files onto their computer. Could you please turn the hard-drive-serial-number-returning function into a DBPro function? This would be a great help!

And also, I don't have clue as to how to use that "software protection" program. How would I use that in DBPro (I used to program in C++, but I got bored, and that was years ago).

Cheers for the response!

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
zenassem
22
Years of Service
User Offline
Joined: 10th Mar 2003
Location: Long Island, NY
Posted: 2nd Jun 2004 17:40
eat much pie,

I'll try playing with it tonight. I can't promise that someone won't beat me to it, or produce a better implementation. I'm still half-way decent with C++ especially, this type of code , though I haven't really tried to do plug-ins.

Writing DirectX wrappers/A game library really put me through the wringer. Although I learned alot I never came close to the things that DBpro offers. My code had 10-times the amount of bugs,quirks, work-arounds, and I designed it . At the time I figured I could do a better job than Allegro (The Dos Version). I underestimated the task.

I guess now is a good time to try my skills.


OSX Using Happy Dude
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location: At home
Posted: 2nd Jun 2004 17:47 Edited at: 2nd Jun 2004 17:47
Quote: "Could you please turn the hard-drive-serial-number-returning function into a DBPro function? This would be a great help!"

Have a look at GetResource, specifically the getvolumeandserialnumber command - this gets Volume Name, System Name and Serial Number.


The place for wonderful plug-ins and things.
Keep your friends close, and your cats even closer.
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 18:11 Edited at: 2nd Jun 2004 18:11
@ TCA

Have downloaded the dll "getresource" and the keywords file. Now what?

When I type in the command "getvolumeandserialnumber", in the syntax display (at the bottom) it says "drive$,volPtr,volSize,systemPtr,systemSize,miscAddr". What does it mean?

Can you please explain what each variable represents. Cheers!

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
that dude
21
Years of Service
User Offline
Joined: 1st Jan 2004
Location: USA
Posted: 2nd Jun 2004 18:28
if you were super serious, you could write to an online database every time that the software was installed, and right before it starts, it checks the database to see if the internal id of that specific software has been installed already on another computer. you could also get a hobo copie-right on the software and then put a warning at the beginning of the software and in the readme saying "no-one is permitted to copy this software without permission from _______________________."

another thing you could do is, right after they instal the software, have it give them a accesskey generated from their computers ip (ex:remove the periods from the ip, seperate it into two strings, and then reverse their order.) once they properly type in the keycode, the program writes a configuration file (.ini) that says that they have successfuly done so. in the same configuration file, it puts that computers ip. therefore, when someone else installs it on another computer, the access key will be different and the program won't except it.

one last idea
fragment.
it's probably the meanest way to protect your software, but it works. when you instal, go to a long, differnet directory far away from your program. (ex:your program is at 'c:program files\thesoftwareyouwrote\hereitis', but when it installed, it also saved a ini file at 'c:windows\anewfolder\hereitis!') the program would check to see if the file was in that directory before it ran.

you should be extremely happy; thats the most i have ever typed in a post.
goodluck.

ps, zen, from a hacker to a cracker, i wasn't around back then but i have tryed hacking the really super old systems. good times.

http://www.nuclearglory.com/?u=fearik = sweet as hell collision system. easy on that leather thing in your back pocket too.
the left side of my head isn't bigger, the right side is just smaller
CattleRustler
Retired Moderator
21
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 2nd Jun 2004 18:53
Quote: "if you were super serious, you could write to an online database every time that the software was installed, and right before it starts, it checks the database to see if the internal id of that specific software has been installed already on another computer. you could also get a hobo copie-right on the software and then put a warning at the beginning of the software and in the readme saying "no-one is permitted to copy this software without permission from _______________________.""


that would require "per build" manipulation

Quote: "another thing you could do is, right after they instal the software, have it give them a accesskey generated from their computers ip (ex:remove the periods from the ip, seperate it into two strings, and then reverse their order.) once they properly type in the keycode, the program writes a configuration file (.ini) that says that they have successfuly done so. in the same configuration file, it puts that computers ip. therefore, when someone else installs it on another computer, the access key will be different and the program won't except it."


and what about DHCP users where the IP changes at the ISP, or conflicting IPs because of NAT routers?

Quote: "one last idea
fragment.
it's probably the meanest way to protect your software, but it works. when you instal, go to a long, differnet directory far away from your program. (ex:your program is at 'c:program files\thesoftwareyouwrote\hereitis', but when it installed, it also saved a ini file at 'c:windows\anewfolder\hereitis!') the program would check to see if the file was in that directory before it ran. "


easily defeated. Also all of the above is easily defeated by disassembly


* DBP_NETLIB_v1.2 - NOW WITH VARIABLE WATCHER! * Click Logo
OSX Using Happy Dude
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location: At home
Posted: 2nd Jun 2004 18:58
Quote: "drive$,volPtr,volSize,systemPtr,systemSize,miscAddr". What does it mean?"

drive$ = Drive letter your interested in
VolPtr = Pointer to allocated memory to hold volume information
VolSize = Size of allocated memory for VolPtr
SystemPtr = Pointer to allocated memory to hold system information
SystemSize = Size of allocated memory for SystemPtr
MiscAddr = Pointer to allocated memory to hold misc information.

I think of any of the ptr parameters are 0, then it wont fill in that area. I'll check that later on.

An example bit of code would be :


See the example code on my web site for examples (and for the constants too).


The place for wonderful plug-ins and things.
Keep your friends close, and your cats even closer.
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 19:17
@ TCA
I compiled that code but it didn't work. I typed 'print x' and it came up with a 0 (zero).

@ CattleRustler
I've just downloaded your .NET thingy, but there is no 'save' function (that I can see). However, I found the 'open' function, which is handy.

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
OSX Using Happy Dude
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location: At home
Posted: 2nd Jun 2004 19:24 Edited at: 2nd Jun 2004 19:26
Quote: " compiled that code but it didn't work. I typed 'print x' and it came up with a 0 (zero).
"

Yes, I believe that is correct.

If you want to get the information out, you need to get the data from the allocated memory, using peekString$ (from my memory plug-in). See the GetResource example (near the bottom of the file is the bit you are interested in), or its here :


The constants you will need to get from my web site.


The place for wonderful plug-ins and things.
Keep your friends close, and your cats even closer.
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 19:32
Right, I have the memory.dll and the getresource.dll in the plugins-user directory.

I then used the following code, but it says: Serial Number:FF



http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
OSX Using Happy Dude
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location: At home
Posted: 2nd Jun 2004 19:33
Got the constants file too ?


The place for wonderful plug-ins and things.
Keep your friends close, and your cats even closer.
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 19:37
Now I do. Ha

Yeah it works great! Cheers for the help!

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 19:40
@TCA
Seeing how you know a tihng or two about DLL's, is there a function in the .NET library (or anywhere else, for that matter) that brings up the windows save dialgue screen?

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
OSX Using Happy Dude
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location: At home
Posted: 2nd Jun 2004 19:45
And before Cattlerustler replies, I've got one in GetResources...

This example should work (once you've allocated two lots of memory) :




The place for wonderful plug-ins and things.
Keep your friends close, and your cats even closer.
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 19:52
Am I allowed to put these DLL's into commercial products? (ie. are these DLL's free-ware and royalties-free?)

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
OSX Using Happy Dude
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location: At home
Posted: 2nd Jun 2004 19:53
Yes, but as I state on my web site, being rather egotistical, I do require a mention in any help files and what-not...


The place for wonderful plug-ins and things.
Keep your friends close, and your cats even closer.
CattleRustler
Retired Moderator
21
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 2nd Jun 2004 19:56 Edited at: 2nd Jun 2004 19:58
oh, you mean the file dialogs, heh. They are good for setting paths then when you have the path as a string you can use file functions or whatever.

if you need any assistance with our plugin you can post in our thread in the program announcements forum. Exeat or myself will help

yes dbp_netlib is free and can be used anywhere but a mention of us would be nice

I suggest reading the docs fully before playing with certain methods (especially fil_CopyDir)


* DBP_NETLIB_v1.2 - NOW WITH VARIABLE WATCHER! * Click Logo
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 20:01
Cheers lads! Just to be fair, I'll try to put both of your DLL's in. By the way, what do you think of my software? (I've uploaded a demo that shows the camera control...needs critisism!) Use the link in my first post, then scroll to the bottom for the link.

http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
Guyon
21
Years of Service
User Offline
Joined: 6th Jun 2003
Location: United States
Posted: 2nd Jun 2004 20:43
But it seem that your price is low enough that most people will just buy it. So why bother with the expense of a copy protection?
eat much pie
21
Years of Service
User Offline
Joined: 9th Apr 2004
Location: Within the mind of a lowly mortal...
Posted: 2nd Jun 2004 20:56
The copy protection won't actually cost me anything, and shouldn't take that long to code. Remeber; I'm only bothering to stop the majority of people from pirating my software (ie. the people who just copy and psate the files onto another computer). And as 'theonering' said,
Quote: "If it is software, it can be broken. "


http://www.nuclearglory.com/?i=453288050 : Nuclear Glory, AMAZING COLLISION SYSTEM!
that dude
21
Years of Service
User Offline
Joined: 1st Jan 2004
Location: USA
Posted: 3rd Jun 2004 03:43
Quote: "that would require "per build" manipulation "

like i said, if you were super serious.

http://www.nuclearglory.com/?u=fearik = sweet as hell collision system. easy on that leather thing in your back pocket too.
the left side of my head isn't bigger, the right side is just smaller

Login to post a reply

Server time is: 2025-05-29 05:51:56
Your offset time is: 2025-05-29 05:51:56