ano, je legalny
robi sa cez tzv. "clean room design", kde jeden clovek skuma funkcnost a zdokumentuje, zatial co druhy clovek, ktory reverse-eng nerobil napise novy kod (je to vlastne "znovuvynajdenie" toho kodu)
pre viac detailov odporucam Wikipediu