02-06-2023, 08:37 AM
(02-06-2023, 01:21 AM)mnrvovrfc Wrote: If only there was a way to lodge it somewhere inside the EXE file instead of tacking it to the end. I would have preferred a validation which is included as object file but which is different from "DATA" statements. For the example shown on this thread it should employ encryption. Even fewer hackers could employ tools to examine the EXE file header and discover that file was tampered with before they could tamper with it.
If I were doing something like this I would gladly invite Aunt Suzie as beta-tester and force her relatives to buy my software.
Inside an EXE is a little tricky, as the OS doesn't like you writing to the file while it's loading in memory and running, but there's no reason why you can't embed that data inside a different file. For you old timers out there, how many of you remember playing games with an unusual border around the screen which tweaked and danced waay back in the day? How many of you know what that was all about, besides just adding a little "flare" to the screen/program?
That was a lot of the program's data stored in video memory!
Back in the day, one was lucky to have 64kb of memory to use, so programmers would tweak their work to try and find ways to maximize how much they could use. One trick was to use border blocks of video memory to store information in. Pixel (0,0) might be the character's health. Pixel (0,1) might be the character's mana. Pixel (0,2) might be the character's attack, while pixel (0,3) was the character's defense, and so on and so on...
There's absolutely nothing that says you can't do the same thing in modern programs, but in a sneaker manner. Create a splash screen which works as a title screen for your game, and use the leastmost significant bit to toggle and represent the bits in your timestamp. *Nobody* is ever going to eyeball and tell the difference between _RGBA(255,255,255,254) and _RGBA(255,255,255,255). <-- right there is a toggle bit difference and with that you can embed whatever the heck you want into your splash screen, making it effectively a security screen.
If anyone wants a demo, I'll be happy to whip something up to showcase the basic process for you guys. Imbedding data in images is something that I've been doing for ages and ages, just to store important information to myself on them, like people's names, places, dates, occasions, ect.
Be creative. Think a little outside the box. It's really not that hard to sneakily embed and hide a few bytes of information into a program to use as a timestamp for a trial period. YOU'RE the programmer -- you can store whatever data you want, in whatever order/sequence you want, in your programs. Just add an 8-byte header to your user's inventory data if you want to!
Let's see... umm.... my hero has a saved data of: "0206202303260107987234"
Now, who sees that timestamp in there? Look close. Start at the left and break it down as we go right...
02-06-2023 Date
03:46 Time
01 -- Hero has "The Sword of Heroes"
07 -- Hero is wearing "Chain Armor"
987 -- Hero's 3 digit health
234 -- Hero's 3 digit mana
Or is it? Maybe that's a completely different data structure than what I told you it was, and my timestamp is embedded into my enemy database! Or maybe it's somewhere in the middle of my compressed text files which represent the story line itself. "On 20.23.0206, by the Antarian Calendar, the end of the world occurred at 03:46 PM. Well, at least the beginning of the end of the world started at that time. This is the story of how it all came to an ending after that..."
At the end of the day, all you need is someway to store a timestamp for when the user got your program and whether it's a valid copy or not. If you're making a game, there's a ton of places where you can hide such a small amount of information in your program. Just be creative a little, and you shouldn't have any issues at all in making a "Limited Activation" program.