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