Если ты под взломом имеешь ввиду декомпиляцию кода из IL обратно в C#, то посмотри в сторону Native AOT. Кроме того, есть средства обфускации (запутывания) кода, типа dotFuscator.
Для контроля лицензий существуют коммерческие решения. Обычно дешевле и надёжнее купить такое решение, чем его разрабатывать и поддерживать. Тем более специальное средство вряд ли получится обойти в надёжности защиты.
Часто компании следуют логике - бизнес не станет использовать нелицензионное ПО (так как это противозаконно), а если какие-то юзеры скачают с торрента, ну и хрен с ним.
Зависит конечно от сферы применения приложения.