Pues nada mas para tu pregunta, para eso existe la ingenieria inversa; un grupo de desarrolladores se juntan y analizan la aplicacion, esto sacan lo que es el analisis de la aplicacion y luego otro grupo que no este contaminado (osea que no deben de haber visto la aplicacion) hacen nuevamente la aplicacion apartir del analisis que le pasaron, evitando asi problemas de copyright dado a que es muy dificil que las dos aplicaciones se parescan, pero van a realizar casi las mismas funciones