required import tables and the like 610 and or decrypting the application code 512 if encrypted to produce the executable application code as shown in block 612 fig7 shows a shelled application 700 in which the application code 702 accesses license information 704 embedded in shell code 706 as described previously the license information 704 is embedded in the shell code 706 during the packing process that is during the generation of the shelled application 700 a shell license library 708 can be provided to the shell 706 comprising a set of apis for use by the application 702 to access the license information 704 before the shelling process is performed software security modules referred to as callable security checks can be inserted into the application 702 to communicate with the shell 706 such as to make license information related requests the set of software security modules in the application constitute a secure client library 710 when the shelled application 700 is launched it initiates a communication service thread 712 which handles license related requests from the application the application 702 uses the secure client library 710 to make calls to the apis requesting licensing information 704 the communication service thread 712 accesses the shell license apis in the shell license library 708 which accesses and returns the license information 704 as needed to satisfy the requests the license related requests responses and other messages are sent between the application 702 and the shell 706 a secure tunnel 714 can be set up by the communication service thread between the application 702 and the shell 706 for example the secure client library 710 may include one or more software security modules for secure.