  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.
