The problem here is ofcourse, if your app does not need to connect to the internet (for example a file viewer) it will probibly get labeled as spyware, whereas if its something like a web browser, its a little easier to pull off.
Now, the biggest problem with online verification is people can dummy servers by changing the values in the host file and they can block the app from accessing the host file as well to make sure its legit.
So the way i managed to get passed this was to do the following:
When the app connects to send the registered serial key, the server side checks the key from a database and then returns a UNIQUE data string that revolves around the serial key in some way but does not contain the whole key. (Yes so far all this can probibly be faked BUT!) Here is the magic part, that data string has to be valid as the client side dosnt just check it, it uses it to complete the program. The data string is decrypted with the serial key send client side, and then certen parts of the data string are then slotted in to the program to complete the app, If the wrong data string is given and the user manages to crack the app to bypass checking, then the application simply crashes. This was VERY hard for me to do as i had to build a kind of scripting engine all of its own for it and its very tempremental (sometimes it crashes anyway ^.^) now, even that is not immune but it makes it that little bit harder


