CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

LIB in CCS

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
scanan



Joined: 13 Aug 2004
Posts: 58
Location: Turkey

View user's profile Send private message Visit poster's website

LIB in CCS
PostPosted: Thu Dec 18, 2014 4:01 am     Reply with quote

Hello,
I would like to know if it is possible to make library file like "lcd.lib"
and include while compiling.
I want nobody see the library code. I think mikroC compiler is doing this.
Is it possible in CCS?

cheers
_________________
Dr Suleyman CANAN
R&D Electronic Engineer
https://suleymancanan.wordpress.com

Do whatever you do with amateur spirit -
But always feel professional.
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Thu Dec 18, 2014 12:31 pm     Reply with quote

See Ttelmah's reply in this thread:
http://www.ccsinfo.com/forum/viewtopic.php?t=53035
temtronic



Joined: 01 Jul 2010
Posts: 9229
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Thu Dec 18, 2014 12:49 pm     Reply with quote

I have to ask 'why ?'
If you're concerned about a 'library' of functions you can easily encrypt them. When 'main' is run, it decrypts them, saves into flash and runs them from there.
Frankly most 'functions' can be easily duplicated. Things like LCD drivers, I2C devices, etc. are 'generic' by nature and very well documented.

That's why I asked 'why'. Heck, even code within a PIC can be 'extracted' given time and money.


Jay
ELCouz



Joined: 18 Jul 2007
Posts: 427
Location: Montreal,Quebec

View user's profile Send private message

PostPosted: Sun Dec 21, 2014 6:31 pm     Reply with quote

temtronic wrote:
I have to ask 'why ?'
If you're concerned about a 'library' of functions you can easily encrypt them. When 'main' is run, it decrypts them, saves into flash and runs them from there.
Frankly most 'functions' can be easily duplicated. Things like LCD drivers, I2C devices, etc. are 'generic' by nature and very well documented.



Jay


Probably he's interested in making money with libraries or distributing a trial library before buying...



Quote:
That's why I asked 'why'. Heck, even code within a PIC can be 'extracted' given time and money.


It's painful once the read protect flag is enabled but doable with some buffer overflow technique...

Requires finesse , patience and maybe sulfuric acid (if you really want to go to the chip die)


See here --> http://www.cl.cam.ac.uk/~sps32/mcu_lock.html
Very OLD (not applicable anymore) but very interesting read!
_________________
Regards,
Laurent

-----------
Here's my first visual theme for the CCS C Compiler. Enjoy!
scanan



Joined: 13 Aug 2004
Posts: 58
Location: Turkey

View user's profile Send private message Visit poster's website

PostPosted: Fri Dec 26, 2014 9:41 am     Reply with quote

temtronic wrote:
I have to ask 'why ?'
If you're concerned about a 'library' of functions you can easily encrypt them. When 'main' is run, it decrypts them, saves into flash and runs them from there.
Frankly most 'functions' can be easily duplicated. Things like LCD drivers, I2C devices, etc. are 'generic' by nature and very well documented.

That's why I asked 'why'. Heck, even code within a PIC can be 'extracted' given time and money.


Jay

I do not want my programmers see the algorithms. I want they just use the function that s it.
_________________
Dr Suleyman CANAN
R&D Electronic Engineer
https://suleymancanan.wordpress.com

Do whatever you do with amateur spirit -
But always feel professional.
Ttelmah



Joined: 11 Mar 2010
Posts: 19520

View user's profile Send private message

PostPosted: Fri Dec 26, 2014 10:20 am     Reply with quote

Don't get me wrong, but if you distribute, even as a library, the code is 'infantile' to disassemble.
It only becomes even remotely secure, once programmed into a chip with the code protection enabled.
If you want to supply code without fiddling around, which still allows optimisation, with some slight degree of protection, look at the 'encrypted' include extension.
ELCouz



Joined: 18 Jul 2007
Posts: 427
Location: Montreal,Quebec

View user's profile Send private message

PostPosted: Fri Dec 26, 2014 5:13 pm     Reply with quote

scanan wrote:
temtronic wrote:
I have to ask 'why ?'
If you're concerned about a 'library' of functions you can easily encrypt them. When 'main' is run, it decrypts them, saves into flash and runs them from there.
Frankly most 'functions' can be easily duplicated. Things like LCD drivers, I2C devices, etc. are 'generic' by nature and very well documented.

That's why I asked 'why'. Heck, even code within a PIC can be 'extracted' given time and money.


Jay

I do not want my programmers see the algorithms. I want they just use the function that s it.


Your only real protection is the IP laws and a lawyer to sue your patented algorithm if you see abuse of it.

If you are an external consultant most of the time you sell the algorithm to the company or license it...
_________________
Regards,
Laurent

-----------
Here's my first visual theme for the CCS C Compiler. Enjoy!
temtronic



Joined: 01 Jul 2010
Posts: 9229
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Fri Dec 26, 2014 7:50 pm     Reply with quote

One 'simple' way to somewhat 'protect' your algorithms is to split it into two halves,where each half is really either the high or low nibble of the actual hex code. Once downloaded into the PIC ,your 'main' program calls a function to 'reassemble' the two banks of 'data' into a third 'real' bank of algorithms( callable functions).If you try it on paper it's a fairly simple process and the PIC can handle nibbles very fast. This does require a PIC with fast clock and large memory capacity.
From the hardware side, simply sanding off the laser etched part number is easy and will slow down most 'entry level' hackers.
Frankly I don't know the kind of 'algorithms' need to be 'top secret' considering everything is on the internet these days. Even a sloppy programmer can get a PIC to run 'awkward' code to completion by speeding up the clock! Simply going from 16MHz to 64MHz means it's 4x faster. Reverse engineering a product is easy these days and even if the algoritmn isn't 100% of the original, it only has to give the same result for the same inputs.

As for IP protection and lawyers....well China(and others) don't seem to worry about it, there's BILLIONS of PCs running unpaid for OSes,etc.

In the beginning there was ONE computer program...
..all the rest are just copies,clones,reworks,slightly modified versions.

jay
scanan



Joined: 13 Aug 2004
Posts: 58
Location: Turkey

View user's profile Send private message Visit poster's website

PostPosted: Mon Dec 29, 2014 2:24 am     Reply with quote

Many thanks for your advices,

I am aware that enough time and enough money can do a lot.
But seems that some people are not doing commercial devices and products, and it is not important to protect the codes.
But in my case,
I sold more that 20000 devices made upon PIC18F chips. I have a lot of competitors that try doing the same thing as mine and even they copied my hardware as a whole but the problem is that their devices are not as stable as mine why? Because I have my own way of solving problem that others don't know. That's why I want to protect my routines.
why give easily the know how isn't?
_________________
Dr Suleyman CANAN
R&D Electronic Engineer
https://suleymancanan.wordpress.com

Do whatever you do with amateur spirit -
But always feel professional.
Ttelmah



Joined: 11 Mar 2010
Posts: 19520

View user's profile Send private message

PostPosted: Mon Dec 29, 2014 2:48 am     Reply with quote

So use the encrypted include ability.

You generate the include file. Then encrypt it. Distribute this to the people you want to use the code. They can then use this as if it were a normal include file, _but cannot see the code inside_. They can call the functions from their code, but the routines will also not be shown in the assembler listing. It's designed to allow you to distribute code to people, without making it easy for them to crack what you have done.
Normally you generate two files. One with the function prototypes, and comments, that is not encrypted, and one with the actual code, that it.
scanan



Joined: 13 Aug 2004
Posts: 58
Location: Turkey

View user's profile Send private message Visit poster's website

PostPosted: Mon Dec 29, 2014 3:02 am     Reply with quote

Ttelmah wrote:
So use the encrypted include ability.

You generate the include file. Then encrypt it. Distribute this to the people you want to use the code. They can then use this as if it were a normal include file, _but cannot see the code inside_. They can call the functions from their code, but the routines will also not be shown in the assembler listing. It's designed to allow you to distribute code to people, without making it easy for them to crack what you have done.
Normally you generate two files. One with the function prototypes, and comments, that is not encrypted, and one with the actual code, that it.


THanks Ttelmah,
Ok I encrypted my lib file and included but can't compıle
what more to do to get it work?
_________________
Dr Suleyman CANAN
R&D Electronic Engineer
https://suleymancanan.wordpress.com

Do whatever you do with amateur spirit -
But always feel professional.
scanan



Joined: 13 Aug 2004
Posts: 58
Location: Turkey

View user's profile Send private message Visit poster's website

PostPosted: Mon Dec 29, 2014 3:25 am     Reply with quote

OK done,
many thanks Ttelmah
_________________
Dr Suleyman CANAN
R&D Electronic Engineer
https://suleymancanan.wordpress.com

Do whatever you do with amateur spirit -
But always feel professional.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group