[TI-BASIC] Copy Protection

Got questions? Got answers? Go here for both.

Moderator: MaxCoderz Staff

User avatar
thegamefreak0134
Extreme Poster
Posts: 455
Joined: Mon 23 Jan, 2006 10:09 pm
Location: In front of a Computer, coding
Contact:

Post by thegamefreak0134 »

Perhaps you could simply write an asm program that does the same thing, if this bothers you so much. Isn't there a way to convert a BASIC program inso asm? Or was that a project that died years ago? Trust me, you're not going to get anywhere trying to copy protect in BASIC. Oh, and if I remember correctly, the version number thing is only for apps. I may be mistaken though.

It is possible to read the id number in asm, and it is also possible to write back to the program in asm. So what you do there is, read the calc ID number, write that number to the program, and set a flag indicating that the program has been run once. (That way you can distribute your version from your calc as long as you never run it untill the end user gets it.) Then the program reads the ID, checks it against that value, and fails if they are not the same. This even allows your clients to make a backup copy of the program, and it will still only run on their calc because you change the program itself, not some variable on the calc. Of course, this is asm after all, and I don't know how much of that you know.

What exactly does this program do anyway?

-gamefreak
I'm not mad, just a little crazy.

DarkNova - a little side project I run.
chickendude
Extreme Poster
Posts: 340
Joined: Fri 07 Jul, 2006 2:39 pm

Post by chickendude »

Math equations, I believe.

But even in assembly, you could easily use CalcSys to jr over the ID check.

EDIT: But applications are read-only, right?
King Harold
Calc King
Posts: 1513
Joined: Sat 05 Aug, 2006 7:22 am

Post by King Harold »

Well you can write over 1's, not over 0's, if we believe wiki TI and I do.
But who's going to sue calcsys just to distribute a program? (loads of people, but are those guys from his class asm programmers?)
User avatar
Saibot84
New Member
Posts: 38
Joined: Fri 17 Feb, 2006 9:14 pm
Location: Jersey City, NJ

Post by Saibot84 »

Image Actually, I'm surprised no one here has yet mentioned Kevtiva, may Robert Maresh rest in peace. He developed an ID Code SDK v1.1, which enabled BASIC programmers to force users to register their programs, after SendID has been selected from the Link menu. You can download the SDK files, however, the actual documentation (although I was sure I had found it in the WayBack archive) seems to have been lost. Other Kevtiva programs are available from Omnimaga. Here are some of the images used in the original docs for the ID sdk:
Image
Image
Image
Image
Image
____________________
Reaktix Software (formally XDG Kat-Productions)
-Michael Image Image
MyBlog ChatWithMe
User avatar
Saibot84
New Member
Posts: 38
Joined: Fri 17 Feb, 2006 9:14 pm
Location: Jersey City, NJ

Post by Saibot84 »

Changes in v1.1 ID Code SDK (released November 27, 2000)

* Minor Glitches fixed.
* New program - IDIGIT - Reads the serial number and displays it as a string.
* Now Rejects 100% of fake IDs!!

Zip File Contents:

* IDDETECT - Checks to see if a program is registered with the calc's serial number.
* IDIGIT - Converts a TI-83 Plus serial number into a string to be displayed.
* IDGEN - Generates a registration number based upon the calculator's serial number, and an encryption code.

Notes:

* IDIGIT will encounter many different errors if you have an invalid ID, or if your ID is not present!!!
* Before running IDIGIT, select F:SendId from the link menu.

Introduction

Texas Instruments, with the advent of the TI-83 Plus and its many refinments, decided to create a serial number system, so that they could sell applications and require people to certify with TI in order to sell these applications commercially, or even just giving the applications away for free.

In doing this, TI created what is called an "IDList" on the TI-83 Plus calculators. This IDList, when it exists, contains your calc's serial number in a hexadecimal list. By writing a small program, doing a little hacking, and some figuring, I have determined a way to read any calculator's serial number, compare it to a user's registration number, and thereby create a system, so TI-83 Plus programmers can force users to register their programs. This can create a "Shareware" system for TI-83 Plus programming, or an "ID code required" system for commercial TI-83 Plus BASIC programs.

The programs enclosed in ID.8xg include a sample program to check to see if your are a registered user, a registration number generator, and a program which converts your Serial Number into a string. The grouped files included MUST NOT BE OPENED OR UNGROUPED ON YOUR COMPUTER. Doing so will only cause problems, and may even partially destroy the ID code detection program. Instead, simply select 'send to TI-83 Plus RAM' or whatever the option is for your link software.

How to use the enclosed programs

To start out, Press 2nd + Mem + About. You will be shown your calc's ID (serial number) and a product ID. The ID is what we are looking for. Copy the ID down on to a piece of paper for future reference. Run the IDGEN program. It will prompt you for your calc's ID, and then for an encryption formula. The encryption formula can be anything you choose it to be; X is the variable the ID code will be stored to. Sample: X^4/X9-9+2. If you don't want to use an encryption formula, or if you want to make your own program to encrypt the ID code, just type in 'X' at the command prompt.

After entering the ID code and encryption formula, your own unique registration code will be created. This code can then be inputted in the "IDDETECT" program, to 'register' it. IDDETECT will recognize the formula you saved to encrypt it, and will check to see that the registration code is authentic. If not, then it will give you an error message. However, when you create a program which uses this technology, be sure to keep the formula inside your program; otherwise, it would be too easy for someone to create a false ID code. Once you have become familiar with the 'ID code' thing, look over the sample programs by sending them to your calculator and editing them. When you are ready to create your own program which uses this technology, here are your steps:

1. Make your new program.

2. Display a message that the person needs to register.

3. When inside of your program, recall the program called 'IDDETECT', and make any necessary modifications for it to work with your program.

4. Be sure to include the encryption formula, or encryption routine with the program you are using.

5. Finally, test out the program by running it on your calc, generating the ID code, and then attempting to register the ID code inside of your program.

6. Please note that the included sample programs save the registration code to a list; it doesn't matter what you name the list really.

The only way to defeat the ID Code in a program created by this SDK is to completely rewrite the program so that it will work without the ID code. That would only take a very skilled programmer to do, so most people would be unable to modify your program. Besides, if the program is opened on the computer, it will self-destruct.

This ID Code can be accessed using ASM, but at this time, I do not have an assembly version. (But if anyone can do it in ASM, why even bother with having to get apps digitally signed by ti? You could just read the ID code and use an assembly program, and not have to worry about buying ti's SDK!)

The next page gives you step-by-step instructions on how to make your own program with the SDK!

Next Page
Unfortunately, I wasn't able to get the "Next Page"... it's demo2.html... maybe someone else can find it in the WayBack archive
User avatar
KermMartian
Calc Wizard
Posts: 549
Joined: Tue 05 Jul, 2005 11:28 pm
Contact:

Post by KermMartian »

The stuff he's saying is outdated anyway - TI doesn't require you to pay to get apps signed anymore; they have the freeware key.
Image Image Image
User avatar
Saibot84
New Member
Posts: 38
Joined: Fri 17 Feb, 2006 9:14 pm
Location: Jersey City, NJ

Post by Saibot84 »

Image Yes, it might be updated, and I know TI doesn't sell their apps anymore, and I know ppl shouldn't be selling calc programs, and I've never actually seen the ID SDK used in an actual project...

but I was merely trying to answer his question. ...Personally, I find it interesting that Kevtiva found a way to access the calc-ID from TI-BASIC.

____________________
Reaktix Software (formally XDG Kat-Productions)
-Michael Image Image
MyBlog ChatWithMe
CompWiz
Calc King
Posts: 1950
Joined: Thu 13 Oct, 2005 1:54 pm
Location: UB

Post by CompWiz »

Floodkiller wrote:In fact, the only way to prevent a spread in the calculators is to break the other persons cable ports after you give it to them, and I am sure they won't let you do that, no matter how stupid they seem to be.
Hmm, couldn't you just run dislink to disable their link ports? It isn't permenant, and it would stop them from sending programs to other people. However, as is pointed out in his readme, it's not very permenant, and can be disabled by some things. However, I think that you can delete the program after running it so that they can't just run it again to disable the effect.
In Memory of the Maxcoderz Trophy Image
User avatar
Saibot84
New Member
Posts: 38
Joined: Fri 17 Feb, 2006 9:14 pm
Location: Jersey City, NJ

Post by Saibot84 »

quick question... what if the program/application added a few hooks that didn't exactly disable linking completely, but rather would ensure that YOUR program doesn't get sent to anyone else?

is there a way to detect this sort of thing? (forgetting situations where the file is simple renamed).
King Harold
Calc King
Posts: 1513
Joined: Sat 05 Aug, 2006 7:22 am

Post by King Harold »

Sure is, but you would have to check every send request and compare the name to the name of your program, and then its not even taking care of renaming. You might end up checking every single byte of everything being send and comparing it to your program, and aborting if its close to your program (say 90% same, in case it has been changed, but you dont want to kill sending other programs).
Although I bet there is a better solution.
User avatar
thegamefreak0134
Extreme Poster
Posts: 455
Joined: Mon 23 Jan, 2006 10:09 pm
Location: In front of a Computer, coding
Contact:

Post by thegamefreak0134 »

If a program is hidden, it can still be run, just not seen in the menu, right? So why not just make a hidden program that gets transferred along with the program. (It can be an empty program or something that stores a number to a variable or something) and run that at the beginning of your program (which is locked of course.) If the program isn't there, it causes an error and quits. If the program is there, but doesn't output the right number, it quits. (Possibly drawing an error screen, just for show.)

This is a simple enough solution. Course, it requires one to be able to run hidden programs, and I'm still not entirely sure that can be done. Don't have my calc handy.

-gamefreak
I'm not mad, just a little crazy.

DarkNova - a little side project I run.
Floodkiller
Sir Posts-A-Lot
Posts: 245
Joined: Mon 14 Nov, 2005 9:47 pm
Location: Getting overwhelmed by everything
Contact:

Post by Floodkiller »

thegamefreak0134 wrote:If a program is hidden, it can still be run, just not seen in the menu, right? So why not just make a hidden program that gets transferred along with the program. (It can be an empty program or something that stores a number to a variable or something) and run that at the beginning of your program (which is locked of course.) If the program isn't there, it causes an error and quits. If the program is there, but doesn't output the right number, it quits. (Possibly drawing an error screen, just for show.)
-gamefreak
Just tried it, but it doesnt work. The program needs to be located inside the menu to be able to be run. Plus, if they got smart enough, they could just search in mirage for the hidden programs, unhide it, then send that off with it, or look in the BASIC code and see what variable needs to change to what in order to access it, then delete that part of the copy protection.
Main Projects:
Zombie Attack: 20%

Side Projects:
???-25%

Image

Staff member of Hikaru Rakuen Programming.
King Harold
Calc King
Posts: 1513
Joined: Sat 05 Aug, 2006 7:22 am

Post by King Harold »

Does that work with completely hidden programs? the ones with names starting with $20 or lower?
Or you could have an assembly program run the hidden program.. (but they'll just remove the line that runs the assembly program, so....)
Qazaq
New Member
Posts: 5
Joined: Thu 19 Oct, 2006 9:36 pm

Post by Qazaq »

Wow, thank you for all your help (and criticism)
I haven't come back in a while...

Some people seem to think that I am selling some program that anyone could make or get from the Internet for free.

This program is for trying to figure out the Ambiguous case problems with absolutely no work whatsoever. Number of triangles, plus the 3-6 answers that follow...

In other words, this program is the same as if i myself were leaning over 20-30 people's test papers and telling them all of the answers.

It was actually the professor's idea to create a program for the problems...

In any case, I am really too much of a programming noob to try and figure out right now exactly how to make a "lock."
Instead I went ahead and sold it to like 5 people. Who then gave it (some sold it) to the rest of them.
Not much of a tycoon if you ask me.

I think I will copy and save these posts so that if I ever need to copy-protect something again, I might be able to do it.

By the way, the simplest solutions can be the best.

Most of the people in my class couldn't find the line of code that created the error, much less unlock it from Graph-Link...or mirageos for that matter...
User avatar
KermMartian
Calc Wizard
Posts: 549
Joined: Tue 05 Jul, 2005 11:28 pm
Contact:

Post by KermMartian »

That was expected, both your decision to sell it, and their decision to resell + inability to unlock it. Goes to show ya...
Image Image Image
Post Reply