Ничто не защитит от ручной декомпиляции, специалист все равно разберется. Для автоматической же C++ существенно лучше в этом плане — бинарник почти не хранит метаинформации о коде, соответственно и разобрать программе его сложнее.
C++
И поручить разработку плохому архитектору, он запутает код лучше любого обфускатора.
Можно подумать заодно о собственном упаковщике, кое-кого остановит.