Hi, I am working on a compression algorithm for embedded systems. I wish to sell my algorithm as a closed source proprietary library specially for ARM7, ARM8, Cortex M3 architectures. Also I plan to implement it in 8-bit MCUs as well. I don't have much idea on building a library.
My questions are- 1. How can I build a closed source proprietary library for ARM7, ARM9 and Cortex series ?
2. How safe the library will be in terms of disassembly and hack proof. Also is there any built in compiler support for protection of my algorithm?
3. What will be most secured possible solution to sell my library which can be bought and implemented by systems designers in different MCUs?
4. Is it possible to build MCU architecture independent or compiler independent library (as my algorithm only uses core CPU functionalities like addition, shifting, multiplication etc).
5. How can I build an external library to use in Keil CARM or RVCT? Is there any API type to integrate a library?
Please also suggest me some links, books and resources to study more on this.
Thank you.
The documentation for each tool chain will tell you how to build a library. Note that a library is basically a collection of object files stored in a single file.
Of course there are no compiler options to create hack-proof libraries. A compiler is intended to generate efficient (size and/or speed) code. Any attempts you do to make it harder to disassemble will make it slower and/or harder to maintain. But why bother? Have you invented a magic compression? The people who know how to disassemble already know about good compression algorithms.
The library must be compatible with the relevant toolchain. That means that you can't mix ARM and 8051. And the ABI (how to pass arguments, return values and store data in structs, ...) must be identical so you will need one library for each memory model - and for the different settings of some specific compiler flags.
Still nothing magic with a library - just a collection of object data.
What type of compression where you planning?
Compression of initialized data? Compression of runnable code? Compression of transmitted data on serial port? ...
Hi, Thanks for your reply.
No, this is not any magic compression algorithm. But it is for very specific purpose and for very specific datatype. This is to compress data, encrypt and then transfer.
I understand the reality of decompile, disassembly. But want to know how to make it harder.
Is there anyway to build library as DLL file? Like DLL file will work with Keil where user can select MCU, memory model, and can configure library options. Then based on that configuration library file will be generated and will be integrated in users project?
Please suggest me some books or links or articles on building commercial library.
The user can't selection options and generate the library unless you give the source code to the user.
So if you want to protect your code, you must supply multiple library files and have the user select which file to link.
I begin to translate pascal code demonstration,into C for test . when you like i make another good ebook .