Soru:
İkili dosyalardaki metni şifreleme
Mellowcandle
2013-03-28 21:55:17 UTC
view on stackexchange narkive permalink

Metin dizeleri, genellikle onaltılık değerlerin ASCII kodlamasını destekleyen herhangi bir düzenleyici kullanılarak ikili bir dosyada kolayca okunur. Bu metin parçacıkları, bir tersine mühendis tarafından kolaylıkla incelenebilir ve değiştirilebilir.

Bir geliştiricinin, çalışma zamanında bu metin parçacıklarını şifrelemek ve bunların şifresini çözmek için hangi seçenekleri vardır?

Bir cevap:
#1
+8
QAZ
2013-03-28 22:34:50 UTC
view on stackexchange narkive permalink

İhtiyaçlarınıza bağlı olarak geçerli olabilecek veya olmayabilecek bazı seçenekler:

  1. Mümkün olduğunda ilginç bilgileri sızdırmak için dizeler kullanmaktan kaçının . Örneğin, hata bilgilerini veya günlük bilgilerini görüntülemek için dizeler kullanıyorsanız, bu, uygulamanızda neler olabileceğine ilişkin herhangi bir tersine mühendisliğe değerli ayrıntılar verebilir. Bunun yerine, bu dizeleri sayısal hata kodlarıyla değiştirin.

  2. Tüm dizeleri, basit bir XOR rutini gibi bir tür simetrik algoritma veya benzeri bir kripto algoritması ile gizleyin . AES. Bu, ikilinizin rastgele incelenmesi sırasında dizenin keşfedilmesini önleyecektir. Muhtemelen kripto / xor anahtarını ikili dosyanızda saklayacağınız için 'şaşırt' diyorum. Biraz daha fazla çabalayan herhangi bir tersine mühendis kesinlikle karmaşık dizeleri kurtaracaktır.

  3. Tüm dizeleri şifrele (tüm dizelerin ayrı bir bölüme bağlanmasını sağlayın yürütülebilir dosyanızda bulun ve bu bölümü şifreleyin) ve şifre çözme anahtarını ikili programınızın dışında saklayın. Anahtarı uzaktan saklayabilir ve mümkünse erişimi sunucu tarafında kısıtlayabilirsiniz. Bu nedenle, bir ters mühendis ikili dosyanızı alırsa, anahtara erişemeyebilir . Şifre çözme anahtarı, aynı zamanda, bu kullanıcının makinesi hakkında bilinen birkaç öngörülebilir faktöre dayalı olarak kullanıcıların bilgisayarında dinamik olarak üretilebilir ve bu, esas olarak yalnızca bu özel makinede (veya makine türünde) çalıştırıldığında şifrelenmiş verilerin şifresinin çözülmesine izin verir. Bu teknik, hükümete ait kötü amaçlı yazılımlar tarafından belirli hedefler için yükleri şifrelemek için kullanılmıştır (Eğer makalenin bağlantısını hatırlayabilirsem, bunu şu sayfada okuyorum, cevabı güncelleyeceğim).

  4. Yaratıcı Olun , Tüm dizeleri yabancı bir dilde depolayın ve ardından çalışma zamanında dizeyi beklenen ana dilinize geri çevirmek için bir çevrimiçi çeviri hizmeti kullanın. Bu elbette pek pratik değil.

Elbette dizelerinizin kodu çalışma zamanında çözülürse / şifreleri çözülürse, o zaman bir ters mühendis dizeleri görmek için işlemi bellekten atabilir. Bu nedenle, tek tek dizelerin kodunu yalnızca gerektiğinde çözmek / şifresini çözmek en iyisidir (muhtemelen kodu çözülen dizeyi geçici bir konumda depolamak ve kullandıktan sonra sıfırlamak).

Şifrelenmemiş dizelerin bellekten dökülmesini engelleyen teknikler için [bu yığın aşımı sorusuna] (http://stackoverflow.com/questions/3785582/how-to-write-a-password-safe-class) bakın.
"Yaratıcı olun" için +1. Programınızı anlama girişimlerini engellemenin en iyi yolu, çevrimiçi Soru-Cevap sitelerinde belgelenmeyen teknikleri kullanmaktır ...


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...