I'm writing a program in assembler for a college class. It's a simple version of a game, and is done 100% in 8086 ASM code. I've also had to write a driver to communicate with a 512Bytes EEPROM memory connected to the parallel port, and I'm supposed to protect the game with that EEPROM memory, using it as a dongle.
It's fairly easy to make a simple protection (read a couple of memory positions, see if you find what you should), but on the next revision of the software, I need to crack someone elses protection, so someone is going to do the same with mine. Basically, I'm trying to think of a way of protecting the game with the EEPROM in a way that when debugging the code, it's not evident what to write to the EEPROM to make it work. The crackers are going to have only my binary program, and they need to figure out how to write the EEPROM so that when is plugged in my program works.
I've got a couple of ideas, but none are really convincing so far, and I'm not even sure there's a way of doing this really good (or much better) without encryption (which we can't do). What I've thought of is recording the whole memory beforehand, filling each position with data depending on this position, using some simple (or maybe not so simple) algorithm so to know what should be read/written in each position at any time given, and to "hide" the algorithm in the game, making it disperse around the code, and under conditional situations related to the status of the game. Anyway, any ideas/comments are welcomed and appreciated. If anything wasn't clear enough, please let me know.
Regards,
Matias
It's fairly easy to make a simple protection (read a couple of memory positions, see if you find what you should), but on the next revision of the software, I need to crack someone elses protection, so someone is going to do the same with mine. Basically, I'm trying to think of a way of protecting the game with the EEPROM in a way that when debugging the code, it's not evident what to write to the EEPROM to make it work. The crackers are going to have only my binary program, and they need to figure out how to write the EEPROM so that when is plugged in my program works.
I've got a couple of ideas, but none are really convincing so far, and I'm not even sure there's a way of doing this really good (or much better) without encryption (which we can't do). What I've thought of is recording the whole memory beforehand, filling each position with data depending on this position, using some simple (or maybe not so simple) algorithm so to know what should be read/written in each position at any time given, and to "hide" the algorithm in the game, making it disperse around the code, and under conditional situations related to the status of the game. Anyway, any ideas/comments are welcomed and appreciated. If anything wasn't clear enough, please let me know.
Regards,
Matias