.Net için anti decompiler uygulamaları bulunur.
Bknz;
https://www.youtube.com/watch?v=ARH0uRFQ9Q8
(Google da daha fazla kaynak bulabilirsiniz)

Java için şifreleme işlemi daha karmaşıktır. Proguard kullanarak kodları karıştırabilirsiniz fakat %100 kod güvenliğini sağlamanız pek olası değil.

Uygulamalarınızın içinde veritabanı veya şifre saklamanızı tavsiye etmem. Ne kadar önlem alırsanız alın ne yaparsanız yapın kırılabilir ve düzenlenebilir. Kod kırma ve crack için çok fazla method var ve çok büyük firmaların bile uygulamalarını kırabiliyorsunuz.
Bu yüzden her zaman uzak sunucu ile çalışın ve kodlamayı sağlıklı yapmaya çalışın.

Düzenleme: Exe veya apk formatında olup kırılamayacak hiçbir uygulama yoktur. Hepsi tekrar derlenebilir, crack edilebilir. Sadece o uygulamanın kullandığı methodlar önemlidir. Tersine mühendislik bu uygulamalara her zaman yapılabilir.
Uzak sunucu ile çalışan uygulamalarında güvenilir olduğunu savunmuyorum. Bütün bağlantı methodlarını ağ trafiğini izleyerek değiştirmek, h*cklemek mümkün. %100 güvenliği sağlamak internette mümkün olan bir şey değil ne yazık ki.