Software-splitting is a technique for protecting software from piracy by removing code fragments from an application and placing them on a remote trusted server. The server provides the missing functionality but never the missing code. As long as the missing functionality is hard to reverse-engineer, the application cannot run without validating itself to the server. Current software-splitting techniques scale poorly to the Internet because interactions with the remote server are synchronous: the application must frequently block waiting for a response from the server. Perceptible delays due to network latency are unacceptable for many kinds of highlyreactive applications, such as games or graphics applications. This paper introduces virtual leashing, the first nonblocking software-splitting technique. Virtual leashing ensures that the application and the server communicate asynchronously, so the application’s performance is independent (within reason) of large or variable network ...