Code Renewability for Native Software Protection
This addresses software protection for developers and organizations by making attacks more difficult, though it appears incremental as it builds on existing diversification techniques.
The paper tackles the problem of protecting native software from reverse engineering and tampering by introducing an architecture and tool flow that dynamically renews and diversifies code and data on demand from a secure server, resulting in frequent changes to software components under attack to make attacks harder. The prototype was evaluated on industrial use cases, showing that it enables novel protection combinations and strengthens existing ones.
Software protection aims at safeguarding assets embedded in software by preventing and delaying reverse engineering and tampering attacks. This paper presents an architecture and supporting tool flow to renew parts of native applications dynamically. Renewed and diversified code and data belonging to either the original application or to linked-in protections are delivered from a secure server to a client on demand. This results in frequent changes to the software components when they are under attack, thus making attacks harder. By supporting various forms of diversification and renewability, novel protection combinations become available, and existing combinations become stronger. The prototype implementation is evaluated on a number of industrial use cases.