Why I'm Learning Assembly
Moderator: MaxCoderz Staff
Why I'm Learning Assembly
The reason I got into assembly is pretty funny, I think. I planned to make a program in TiBasic and have some form of copy protection on it, and my friend challenged me to make a form of copy-protection that she couldn't break. I accepted, but the problem was that everything I could think of could be easily circumvented by simply editing the copy-protection out of the program. So I was browsing the user manual and discovered the Asm( command and looked it up, finding assembly.
The premise of my program is that there will be some variable on my calculator that the program checks for as it starts to run. If the variable is correct, it displays a congratulations message on the screen. What I consider to be the better part of the program is that if the copy protection fails once, the program rewrites a .db so that the copy-protection will fail every time.
So I'll run it on my calculator, proving it works. then I'll let her copy it over and look for the hidden variable on my calculator, but it won't work when she plugs it in, assuming she runs it at least once! She's going to be banging her head against the wall trying to solve it.
The premise of my program is that there will be some variable on my calculator that the program checks for as it starts to run. If the variable is correct, it displays a congratulations message on the screen. What I consider to be the better part of the program is that if the copy protection fails once, the program rewrites a .db so that the copy-protection will fail every time.
So I'll run it on my calculator, proving it works. then I'll let her copy it over and look for the hidden variable on my calculator, but it won't work when she plugs it in, assuming she runs it at least once! She's going to be banging her head against the wall trying to solve it.
-
- Calc King
- Posts: 1513
- Joined: Sat 05 Aug, 2006 7:22 am
waeV, you should know that there is no unbreakable copyright protection possible, partly since the cpu will need some starting point to begin doing something with the program. And if the CPU has it, anyone has it. And then, no matter how you encrypted the program, anyone could use the starting point to decrypt (and edit) it, they wouldn't even have to re-encrypt it (since validation code can be removed).
You can make it very hard to break though..
This problem hold for all static data, if communication is involved then it's possible to agree on a shared key without ever sending any data that could be used by a passive-listener to reconstruct the key (unless they solve the discrete logarithm problem)
If you want simple copy protection (to avoid sending over the link), you could try a link hook that refuses to send anything that looks like your program (or anything at all since pattern matching is quite hard), a problem is that hooks can be disabled easily though - unless of course you make the program hack into the OS (with flash-unlock hack) and write it's protective code there. Still, if the program can do it, so can anyone else, but it would at least be hard to break.
You can make it very hard to break though..
This problem hold for all static data, if communication is involved then it's possible to agree on a shared key without ever sending any data that could be used by a passive-listener to reconstruct the key (unless they solve the discrete logarithm problem)
If you want simple copy protection (to avoid sending over the link), you could try a link hook that refuses to send anything that looks like your program (or anything at all since pattern matching is quite hard), a problem is that hooks can be disabled easily though - unless of course you make the program hack into the OS (with flash-unlock hack) and write it's protective code there. Still, if the program can do it, so can anyone else, but it would at least be hard to break.
-
- Calc King
- Posts: 1513
- Joined: Sat 05 Aug, 2006 7:22 am
Of the five other people I know in my school who know how to use any kind of programming language (QBASIC / TiBASIC), only one even knew that you could use strings as variables on a ti-calculator.King Harold wrote:waeV, you should know that there is no unbreakable copyright protection possible, partly since the cpu will need some starting point to begin doing something with the program. And if the CPU has it, anyone has it. And then, no matter how you encrypted the program, anyone could use the starting point to decrypt (and edit) it, they wouldn't even have to re-encrypt it (since validation code can be removed).
You can make it very hard to break though..
This problem hold for all static data, if communication is involved then it's possible to agree on a shared key without ever sending any data that could be used by a passive-listener to reconstruct the key (unless they solve the discrete logarithm problem)
If you want simple copy protection (to avoid sending over the link), you could try a link hook that refuses to send anything that looks like your program (or anything at all since pattern matching is quite hard), a problem is that hooks can be disabled easily though - unless of course you make the program hack into the OS (with flash-unlock hack) and write it's protective code there. Still, if the program can do it, so can anyone else, but it would at least be hard to break.
I think I'm safe.
That's a good idea, but I want it to say "You Fail" every time she runs it.
Plus, having be gibberish might tip her off to the idea that she needs to copy over the program AND the variable at the same time.
I think if I just put the hidden variable in Str9 or something she won't know how to send it over anyways.
Plus, having be gibberish might tip her off to the idea that she needs to copy over the program AND the variable at the same time.
I think if I just put the hidden variable in Str9 or something she won't know how to send it over anyways.
-
- Calc King
- Posts: 1513
- Joined: Sat 05 Aug, 2006 7:22 am
-
- Calc King
- Posts: 1513
- Joined: Sat 05 Aug, 2006 7:22 am
If you want it to be completely hidden, an ASCII char less than or equal to $20 (space)
But then you wouldn't be able to do anything with it (you can't even delete it, unless you reset the calc) except from within ASM programs
So a hidden program / appvar could be used as a "secret" variable, but remember that such a secret can not be kept long..
But then you wouldn't be able to do anything with it (you can't even delete it, unless you reset the calc) except from within ASM programs
So a hidden program / appvar could be used as a "secret" variable, but remember that such a secret can not be kept long..