основная сложность - несовместимые/закрытые системные API/фреймворки/либы.
если приложение изначально не писалось с прицелом на кросс-платформенность, то зачастую проще написать с нуля, чем портировать.
и не забываем, что для портирования нужен исходный код. который у большинства профессионального десктопного софта закрыт.
что касается безопасности, то основная ей угроза - сам пользователь.