Quote:
Originally Posted by Mega Byte
Wow sounds impressive
You could integrate it to facebook to learn and for the lulz too haha. or not :P
Im interested in securing applications and having a time based system like that. I was thinking of just opening a connection and keeping track of online time. But they could patch that easy with olly. after unpack and all that.
Since its client side it can always get hacked.. So thats the hard part :P making it as hard as you can.
|
Yea it's not possible to make it impossible... at least not for me. When considering the level of security needed you must consider your targeted audience. In this case my target audience is less likely to have the skills needed to break the security. The ones that do have the skills might be able to do it if they spent a lot of time.
The easiest way to secure something is by encoding it and placing it in the registry. First off, most users cannot navigate the registry, and if they can they won't know where the relative keys are. If they do find the keys they won't know which subkey / value pair does what because they are all encoded. The subkey "install_date" might look something like "u5Vil0z+4esg4" and its value would appear the same. Simply changes a subkeys value will not work, as that value is decoded by the software and if invalid will not run. Altering the system clock will not work if you store the last known difference between install date and now(each time validation is successful) and compare on each run.
As an extra failsafe, if you use text files to store normal data for the software like I do. You can store backups of your registry information there encode the whole thing. This way if someone opens the text file they will see a giant garbled load of trash... finding the parts that relate to validation would be impossible mixed amoung all the rest.
If you want to be super tricky you can have the character string that is used to define your encoding algorithm dynamically created every time a value is changed. You would also have to link each value to its defining character string. This would make each value (even names of values) have a completely different encoding algorithm. Making it impossible to decode even by the author (once the script is running you have no idea what stage of development the algorithm is on). Only the program itself would know how to decode a value, and it will only have the correct decode algorithm at the time of use, after which the algorithm would change. Making it impossible to decode values by having the source.
I love the word "impossible"... if only I could use it more...