Protect the source code of your programs

페이지 2/3
1 | | 3

By carmeliofh

Supporter (6)

carmeliofh의 아바타

25-03-2019, 10:04

On this subject of "TOKENIZER" I believe I have explained enough, but I will speak a little more.
The BASIC language is an important part of the MSX system and in the laws, there is something called copyright, so "TOKENIZER V2" will be useful for software developers, who for some reason want to use the BASIC language and also are interested protect copyright. True MSX fans will like "TOKENIZER V2" and will appreciate the good ideas, but MSX fake fans will despise the good software and hardware that is created for MSX and will value emulators that run on the PC with Windows operating system.

By bore

Expert (115)

bore의 아바타

25-03-2019, 10:44

It sounds like "protect copyright" is the incorrect expression to use.
Obfuscation doesn't have any impact on copyright whatsoever.

What you probably mean is that it protects your "trade secrets". (Disputable, but that is another discussion.)

By NYYRIKKI

Enlighted (5392)

NYYRIKKI의 아바타

25-03-2019, 11:15

carmeliofh wrote:

On this subject of "TOKENIZER" I believe I have explained enough

I don't believe that people don't understand your idea behind, that seems quite clear, but maybe it would be good to explain a bit how it protects the customer since other ways people don't trust your software to do what it claims to do and therefore won't put their money in to it.

Since the fact is that MSX-BASIC is interpreted language, the way I see it is that either the program causes quite radical performance drop or then it doesn't really protect the customer. This raises some questions:

- Do you have any performance numbers to present?
- let's say that if I run the program protected with TOKENIZER in openmsx, hit the F10-key and type "listing", do I see the program listing or not?
- Is there any demo programs protected with method, so that people could actually see the protection in work?

By DrWh0

Paladin (767)

DrWh0의 아바타

25-03-2019, 11:32

This kind of protections bring me back some memories to my mind Wink

I cracked my first MSX game was exactly because I wanted to see the source code in order to improve it and it had one of this antilisting protection scheme.

The game had some bugs and I wanted to correct those also improve the game itself (I did both things and learned about protections).

I am not personally criticizing to anyone, only I have a clear way of thinking against adding protections to a program.

I understand that some people wants to close the program for estetic or fear.

But I think that anyone one should have the right to add improvements to a software or hardware (not only in IT).

By gdx

Prophet (3048)

gdx의 아바타

25-03-2019, 14:21

I think it's not very honest to sell programs in Basic, even worse if it is protected.
Otherwise, I agree, the Basic is an important part of the MSX.

By Meits

Scribe (5545)

Meits의 아바타

25-03-2019, 14:59

carmeliofh wrote:

On this subject of "TOKENIZER" I believe I have explained enough, but I will speak a little more.
The BASIC language is an important part of the MSX system and in the laws, there is something called copyright, so "TOKENIZER V2" will be useful for software developers, who for some reason want to use the BASIC language and also are interested protect copyright. True MSX fans will like "TOKENIZER V2" and will appreciate the good ideas, but MSX fake fans will despise the good software and hardware that is created for MSX and will value emulators that run on the PC with Windows operating system.

That's quite a statement. For those who got curious now (including me), please tell us how true of an MSX fan you are yourself.

In my humble opinion, liking Tokenizer does not define how "true" you are. Having not abandoned it as a hobby is by far the most important ingredient of "trueness". Then there's nothing for quite a long while. After that comes the rest of thinkable reasons.
Great stuff has been created using only emulators, be it because it's more convenient or because there's no real machine available (anymore). Without being "true" (to the system) all that would have never existed. Using an emulator does not disqualify what you feel for MSX and you are not the judge for that.

Furthermore I'm curious about the answers to Nyyrikki's questions as they are decisive about the value of the program.

ps. being around in MSX land is not about showing off how "true" you are.

By Louthrax

Prophet (2084)

Louthrax의 아바타

25-03-2019, 19:37

I'm also curious to know if your protection tool would work against this:

  • Launch a commercial game protected with your tool in openMSX (wait a bit before it starts).
  • Make a memory dump of area 0x8000-0xCFFF in a file.
  • Reset openMSX and go into BASIC.
  • Restore memory dump file to 0x8000-0xCFFF.
  • Type "LIST".

EDIT: Ah, a bit the same question as the one from NYYRIKKI, was not aware of the "listing" command in openMSX console...

And that reminds me that some Japanese ROM games were in fact BASIC programs (containing only tokens and not directly listable). They just had to poke something in memory at start to prevent CTRL+STOP to work.

By mars2000you

Enlighted (5513)

mars2000you의 아바타

25-03-2019, 19:53

Louthrax wrote:

And that reminds me that some Japanese ROM games were in fact BASIC programs (containing only tokens and not directly listable). They just had to poke something in memory at start to prevent CTRL+STOP to work.

Indeed! With an hexadecimal editor, it's easy to extract the BASIC part. What's more difficult is the adaptation of the BASIC listing when it includes calls to binary parts (to also extract from the rom).

By the way, when a BASIC listing is hidden in a binary file, the first step is to remove the 7 first bytes of the binary file, the second step is to add the value FF at the beginning of the file. A few other steps can be required, but again, the most difficult is the adaptation of the listing when it includes calls to real binary parts.

By Louthrax

Prophet (2084)

Louthrax의 아바타

25-03-2019, 19:53

Also, I think that in openMSX, disabling the CTRL+STOP protection with a single POKE in memory would re-enable CTRL+STOP (and you'd just have to do a "LIST" after that).

By NYYRIKKI

Enlighted (5392)

NYYRIKKI의 아바타

25-03-2019, 22:48

I feel like there is now starting to be so much inaccurate information around the topic that it is better if I write down here the basics of MSX-BASIC list protection. Please note: As I don't know how the "TOKENIZER V2" works this is not an attack against it. In general I also encourage people to obey copyrights and appreciate fellow MSX users. What I write here is just to fix any wrong understandings. This is a sum up of information in my head that I've gathered mostly from local computer magazines released before 1988. All this information is available in variable forms also on msx.org Wiki-pages.

POKE &HFBB1,0

This enables CTRL+STOP if it has been disabled. Practically this has no meaning to "true MSX fans" as the program probably writes the value over anyway at start. How ever it might be valuable for people who use emulators as long as they know how to replace "&H" with "0x"

POKE &HFBB0,1

This goes other way around... This is practically not usable for emulator users due to keyboard mapping & PC keyboard limitations, but for real MSX users this is a real key to the success... You press CTRL+SHIFT+GRPH+CODE and you are the master of the universe.

POKE &H8000,0

If you can't RUN the program the reason might be that the start address -1 of the program is not zero. The protections may change the start address that makes this poke invalid, but the real start address is always stored as word at &HF676. Usual reason for LIST not to work is that this pointer is wrong.

POKE &HFF89,&HC9: POKE &HFF8E,&HC9

If the LIST-command does not work, these POKEs should return the command functionality to normal.

There are also many other possibilities to hide stuff from users... One way is to add "'" REM mark after the line and replace the characters after that with backspace & new information. Good way around this is printer & LLIST-command.

You can also for example change the line number to &HFFFF that will cause the rest of the BASIC program to go hidden, but simple RENUM-command is enough to make them visible again. This method is anyway not good as it may make GOTO and such to point to wrong lines, but it is anyway easy method to recognize this trick and find the correct pokes to undo the effect. Reload & execute pokes from program it self and you have well working program without protection.

Sometimes you may also end up to situation, where you can see the listing, but you can't RUN or SAVE it... In this case it is good to remember ",A"-parameter in SAVE-command. This will save all that you can see and when you load & execute the program later the rest of the program will be fixed automatically.

I know it IS possible to do real time protection as well by using hooks ie. in &HFF3E or &HFF43 but as I told earlier this causes CPU payload that the user must pay in the end anyway and this is why I asked the questions that I asked.

페이지 2/3
1 | | 3