the present invention is directed to a method for protecting a software application from unauthorized use , the method comprising the steps of : executing a first part of the software application by a user &# 39 ; s machine ; executing a second part of the software application on a remote server accessible by the user &# 39 ; s machine over a network , thereby keeping the second part away from the user &# 39 ; s machine ; and communicating between the first part and the second part via the network ; whereby preventing hacking the software application . in another aspect , the present invention is directed to a software application , comprising : a first part , to be executed on a user &# 39 ; s machine ; a second part , to be executed on a remote server accessible by the user &# 39 ; s machine over a network , thereby keeping the second part away from the user &# 39 ; s machine ; and a communication module , for communicating between the first part and the second part .