Размер имеет значение только при загрузке из Интернета. Если вы используете UPX, то на самом деле вы получаете худшую производительность, чем если бы вы использовали 7-zip (на основании моего тестирования 7-Zip в два раза лучше, чем UPX). Затем, когда он остается сжатым на целевом компьютере, ваша производительность снижается (см. Ответ Ларса). Так что UPX не является хорошим решением для размера файла. Просто распакуйте все это.
Что касается предотвращения взлома, это также FAIL . UPX также поддерживает распаковку. Если кто-то захочет изменить EXE-файл, он увидит, что он сжимается с помощью UPX, а затем распаковывает его. Процент возможных взломщиков, которые вы можете замедлить, не оправдывает потери усилий и производительности.
Лучшим решением было бы использовать двоичное подписание или хотя бы просто хеш. Простая система проверки хеша состоит в том, чтобы взять хеш вашего двоичного файла и секретное значение (обычно guid). Только ваш EXE знает секретное значение, поэтому, когда он пересчитывает хеш для проверки, он может использовать его снова. Это не идеально (секретное значение может быть восстановлено). Идеальная ситуация - использовать сертификат и подпись.