IP Library Granted Patent US 8,893,298
Granted Patent B2
US 8,893,298 · App. 13/829,942 · Granted Nov 18, 2014

Network linker for secure execution of unsecured apps on a device

Inventors: John Roark (San Francisco, CA); Dean E. McKee (Irvine, CA)
Assignee: Mocana Corporation
G06F8/24G06F21/12G06F21/00H04W12/08
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,893,298
App. No.
13/829,942
Granted
Nov 18, 2014
Kind
B2
Abstract

An app is made secure using an app wrapping security technique and a network linker that creates an executable binary file of the wrapped app that does not use custom dynamic libraries. The network linker includes a client-side linker component and a server-side linker component. When the app is created and the developer decides to have it security wrapped, an extra parameter is inserted in the client-side linker component for invoking the network linker of the present invention. If a call is being made from app security wrapping code, then the invocation resolves to normal system libraries and the call is not shimmed. Once all the symbols have been resolved on the server-side linker, the executable binary is transmitted back to the client-side linker component where it is digitally signed by the app developer and put in a suitable form for uploading to an app store or marketplace.

Claims (49)

1. A method of linking a security wrapped app during development of the app using a network linker having a client linker component and a server linker component, the method comprising:

modifying the client linker component of the network linker to include a network linker flag parameter;

serializing, by a microprocessor, object files of the app on the client linker component for transmission over a network to the server linker component;

determining whether a symbol invocation in the object files is being made from within app code or from within app security wrapping code injected into the app code;

replacing the symbol invocation with a substitute invocation that makes a call to an app security program static library;

creating an executable binary file on the server linker component; and

transmitting the executable binary file to the client linker component, wherein the executable binary file does not make any custom dynamic library calls.

2. A method as recited in claim 1 further comprising:

checking for the network linker flag parameter in the client linker.

3. A method as recited in claim 1 further comprising:

adding the network linker flag parameter to the client linker component, thereby signaling the network linking.

4. A method as recited in claim 1 further comprising:

injecting app security code into app.

5. A method as recited in claim 1 further comprising:

signing the binary executable file on the client linker component; and

preparing the executable file for uploading to an app store.

6. A method as recited in claim 1 wherein the network linker flag parameter is defined by the app security provider and sent to an app developer.

7. A method as recited in claim 6 further comprising:

verifying that the app developer is authorized to use the app security wrapping.

8. A method as recited in claim 1 further comprising:

transmitting the object files of the app to the server linker component.

9. A method as recited in claim 1 wherein the server linker component is under control of the app security provider.

10. A method as recited in claim 1 further comprising:

if the symbol invocation is being made from within app security wrapping code, the symbol invocation is resolved to normal system libraries.

11. A method comprising:

receiving a plurality of app object files from a client-side linker component, the plurality of app object files received at a server-side linker component;

determining that a first symbol invocation in the plurality of app object files is being made from within app code;

replacing, by a microprocessor, the first symbol invocation with a substitute invocation to make a first call to an app security program static library;

determining that a second symbol invocation in the plurality of app objects files is being made from within app security wrapping code injected into the app code;

maintaining the second symbol invocation to make a second call to a normal system library corresponding to the plurality of app object files; and

transmitting an executable binary generated using the plurality of app object files to the client-side linker component.

12. The method of claim 11 , wherein the executable binary file does not make any custom dynamic library calls.

13. The method of claim 11 , wherein the executable binary is a monolithic executable binary.

14. The method of claim 11 , wherein the executable binary file is digitally signed by a client device running the client side linker component.

15. The method of claim 11 , wherein the executable binary file is uploaded to an app store or marketplace after it is digitally signed.

16. A device comprising:

an interface included in a server-side linker component, the interface receives a plurality of app object files from a client-side linker component; and

a processor to determine that a first symbol invocation in the plurality of app object files is being made from within app code and to replace the first symbol invocation with a substitute invocation to make a first call to an app security program static library, wherein the processor determines that a second symbol invocation in the plurality of app objects files is being made from within app security wrapping code injected into the app code and maintain the second symbol invocation to make a second call to a normal system library corresponding to the plurality of object files;

wherein the interface is further operable to transmit an executable binary generated using the plurality of app object files to the client-side linker component.

17. The device of claim 16 , wherein the executable binary file does not make any custom dynamic library calls.

18. The device of claim 16 , wherein the executable binary is a monolithic executable binary.

19. The device of claim 16 , wherein the executable binary file is digitally signed by a client device running the client-side linker component.

20. A non-transitory computer-readable medium comprising:

computer code for receiving a plurality of app object files from a client-side linker component, the plurality of app object files received at a server-side linker component;

computer code for determining that a first symbol invocation in the plurality of app object files is being made from within app code;

computer code for replacing the first symbol invocation with a substitute invocation to make a first call to an app security program static library;

computer code for determining that a second symbol invocation in the plurality of app objects files is being made from within app security wrapping code injected into the app code;

computer code for maintaining the second symbol invocation to make a second call to a normal system library corresponding to the plurality of app object files; and

computer code for transmitting an executable binary generated using the plurality of app object files to the client-side linker component.

Assignments (3)
SECURITY INTEREST Recorded Jul 30, 2019
From: BLUE CEDAR NETWORKS, INC.
To: KREOS CAPITAL VI (UK) LIMITED
Reel/Frame 049909/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2016
From: MOCANA CORPORATION
To: BLUE CEDAR NETWORKS, INC.
Reel/Frame 039744/0142 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2013
From: MCKEE, DEAN E.; ROARK, JOHN
To: MOCANA CORPORATION
Reel/Frame 030040/0683 →
Continuity (3)
Continuation In Part 13025994 · Feb 11, 2011
Provisional Application 61611424 · Mar 15, 2012
Related Publication 20130205415A1 · Aug 8, 2013