Bugünlerde çoğu mikro kontrolör gömülü üretici yazılımı kodunu korumak için parçaya veya üreticiye özgü yöntemlere sahiptir. Bu genellikle normal olarak kod belleğinin okunmasına izin veren devreleri kilitleyerek yapılır. (Veri sayfasında ya da geçerli uygulama notlarındaki üreticilerin web sitesinde kısmi ayrıntılara bakmak zorunda kalacaksınız).
Kilitlendikten sonra normal teknikleri kullanarak kod belleğini okumak mümkün değildir. Bu, çoğu bilgisayar korsanının gömülü uygulamanızın makine kodunu görüntülemesini engellemek için makul bir koruma düzeyi sağlar.
Bugünlerde birçok MCU cihazı, program kodunu değiştirmek için yerleşik FLASH belleğe sahiptir. Daha önce FLASH'da depolanan ve korunan bir program genellikle yeni kodla değiştirilebilir ancak koruma mekanizmasının kilidini açmak için tam bir çip FLASH silme işlemi gerekir. Silinen parça, orijinal koruma kilidinden önceki gibi çalışır. Yeni bir program yüklenirse, yeni yüklenen makine kodunu korumak için parçanın tekrar kilitlenmesi genellikle mümkündür.
Mikrodenetleyicilerde kod korumayla ilgili herhangi bir tartışma, parça üreticisi tarafından sunulan herhangi bir koruma düzeninin aptal olduğunun garanti edilmediğinden genellikle söz edilmeden tamamlanmış sayılmaz. Üreticiler, koruma sistemlerinin% 100 aptal olmadıklarını bile belirtecekler. Bunun nedenlerinden biri, bir ücret karşılığında çalışkan bilgisayar korsanlarının, ödeme yapmak isteyen herkes için korunan bir bölümden kod okuyacağı bir karaborsa endüstrisi olduğudur. Korumalı mikro kontrolörlerde kodun ROM'lardan veya FLASH'lardan okunmasına izin veren çeşitli şemalar geliştirdiler. Bu programların bazıları inanılmaz derecede zekidir ancak bazı ailelerde diğerlerine göre daha iyi bir başarı için çalışmaktadır. Öyleyse bu gerçeğin farkında olun, ardından programınızı meraklı gözlerden korumaya çalışırsınız.
Biri bir mikrodenetleyiciden okunan makine kodunun ikili görüntüsünde ellerini tutarsa, korumalı bir mikrodenetleyici olsun ya da olmasın, makine kodunu bir disassembler adı verilen bir araçla işleyebilir. Bu, ikili veriyi, programınızın algoritmalarının nasıl çalıştığını öğrenmek için çalışılabilecek derleme dili koduna dönüştürür. Makine kodunun doğru bir şekilde sökülmesi, çok fazla iş gerektirebilecek özenli bir iştir. Sonunda işlem, tarif ettiğim gibi assembler koduna yol açabilir. Programınız C, C ++ veya Basic gibi bazı yüksek dilde yazılmışsa, montaj kodu yalnızca programınızın derlenmiş ve bağlantılı sonucunu gösterir. Çalınan kodun mühendisliğini yüksek dil seviyesine kadar geri döndürmek genellikle mümkün değildir.
Bunun anlamı, gömülü uygulama donanım yazılımınızı yüksek seviyede bir dilde yazmanın bir faydası olduğudur. Programınızın tamamen tersine mühendislik edilmesini zorlaştıran başka bir katman sağlar. Gömülü uygulamayı derlemek için derleyicileri optimize etmede en yüksek teknolojiyi kullanarak daha da büyük bir fayda elde etmek gerekir, çünkü en yüksek performans optimize edicileri, programı tam anlamıyla çok zor olan düzinelerce çağrı ile dolu büyük bir spagetti kabına dönüştürebilir. bir sökme cihazında deşifre etmek.
En deneyimli yerleşik geliştiriciler, uygulamanızdaki MCU'da sunulan herhangi bir koruma düzenini kullanmanıza devam etmenizi ve bunun ürününüz için yolun sonuna bağlı olmamanızı söyleyecektir. Rakiplerin önünde durmanın en iyi yolunun, ürününüzün sürekli yükseltilmesi olduğunu, böylece eski sürümlerin korsanların kodunuzu klonladığı zamanın ilgisini çekmemesini sağlamaktır. Kodunuzu değiştirin, yeni özellikler ekleyin, zaman zaman tüm G / Ç'lerinizi ve aklınıza gelebilecek diğer şeyleri değiştirmek için PC kartlarınızı döndürün. Bu şekilde yarışı her seferinde kazanabilirsiniz.