Kod karıştırma (Obfuscation)

Katılım
8 Ekim 2022
Mesajlar
952
Bir MCU için hex dosyamız olsun.

Dissasembly sonucunda fonksiyonların asm kodu ortaya çıkıyor. Buradan uygun ufak değişiklikler yapılarak yeniden derleme yapılırsa benzer bir yazılım oluşur ve istendiği gibi çalışır .

Örneğin cihaz kapağının açılmasını kontrol eden anahtar algılama fonksiyonu iptal edilecektir.

Benim yapmak istediğim bu kodun normalde o işi yapacak şekilde bulunmaması fonksiyon işlevinin çalışma zamanında ortaya çıkması.

Fonksiyonu dağıtsak, belirli şartlar dahilinde birleşerek bir fonksiyon oluşsa? Yani ram hafızada fonksiyon oluşturabilir miyiz? Program flash üzerine tekrar yazılmayacak.

Mcu ve derleyici olarak genel düşünelim. 8 bit mcu.


Code obfuscation is the process of making applications difficult or impossible to decompile or disassemble, and the retrieved application code more difficult for humans to parse.
 
Son düzenleme:
Benim bilmedigim bir konu ; ama biz bir mcu uzerinden hex'i okuyabiliyor muyuz ? Yada hex dosyasini disassembly ile ASM koduna donusturebiliyor muyuz ?

ASM koduna dönüyorsa bence yapacak çok bir şey yok sonuçta parçala da bölsek encrypt de etsek geriye dönebilir aslında sonuçta onu döndüren fonksiyon da okuduğun içinde bulunacak bunlara ek olarak bilgisayardaki yazılımdan farklı bir şekilde ciddi performans kaybı olacaktir MCU üzerinde
 
Benim bilmedigim bir konu ; ama biz bir mcu uzerinden hex'i okuyabiliyor muyuz ? Yada hex dosyasini disassembly ile ASM koduna donusturebiliyor muyuz ?

ASM koduna dönüyorsa bence yapacak çok bir şey yok sonuçta parçala da bölsek encrypt de etsek geriye dönebilir aslında sonuçta onu döndüren fonksiyon da okuduğun içinde bulunacak bunlara ek olarak bilgisayardaki yazılımdan farklı bir şekilde ciddi performans kaybı olacaktir MCU üzerinde
mcu kilitli değilse çekilir, hiçbir kod güvende değildir büyük maliyetler ile çalınır, çipe röntgen çekiyorlar lazerle kazıp içindeki flash'ı buluyorlar. Daha bissürü tersine mühendislik yolları var
 
zorlaştırman mümkün ama engellemen imkansız. örneğin o kapağın kontrol edildiği fonksiyonu bulmak çok kolay olacaktır. ilgili pinlerin registerlerini okuyan bir fonksiyon ararsın.

nasıl zorlaştırabilirsin mesela pinleri tek tek okumazsın bir dizi içine tüm pinleri tek seferde okursun. oradan yapacağın işlemi matematiksel bir döngü ile oluşacak şekle sokarsın. anlaşılması zor olur.
 
Belki kendi karıştırıcımızı yapabiliriz

 
Disassembly edilen kod karmasik bile olsa debugger icinde adim adim incelendiginde cozulebilir.
Debugger icindeki kodun anlasilmasini zorlastirmak mumkun. Fakat kafaya takan yapacagini yapar.
 
İşte o adımları çoğaltarak işi zorlaştırmak istiyorum. 1 yıl filan sürsün. Debug yapan kişinin gözü kan çanağı gibi olsun. Bir deri bir kemik kalsın...

Çözmek için çok para istensin. Kodu çözdürecek kötü amaçlı kişi de vaz geçsin.
 
Son düzenleme:
O kadar da degil. Dogru kisilere ulasilirsa disasm kodlar anlasilir.
Manyak cok.
 
bu yöntemle işi bilen bir insan için sadece 1-2 gün geciktirebilirsin. işi bilmeyen hex editörle açıp yazıları falan değiştirebilir. ancak bu seviyede konuya hakim biri işin içinde kriptografik bir durum yoksa o kodu zaten sıfırdan da yazar.
 
Kriptografik durum reca ediyorum.

Matrix olsun kodlar önce oraya uğrasın, asıl haline dönüşsün. İş bitince kaybolsun. Flash içinde kabak gibi görünmesin. String yeterli değil. Fonksiyona ait kodlar şifrelenecek
 
bu durumda iki seçenek var:
- kendine ait bir asic yaptıracaksın.
- atmelin harici güvenlik chipleri var onlardan kullanacaksın.


anladığım kadarıyla müşteriye bir proje yapıyorsun ve hex kodları ile teslim edeceksin. sen teslim ettikten sonra değişiklik ihtiyaçları olursa mutlaka sana dönüş yapmalarını istiyorsun.
 
Kesin bir proje yok. Fakat öyle hex verilecek diye düşünebilirsiniz.

Çözme işlemi dışarıdan (usart) gelen bir komut veya şifre vasıtasıyla olabilir.

Daha da iyisi fonksiyonu usart ile gönderelim flash üzerine yazılmadan çalışsın. Böyle bir şey olabilir mi?
 
Amacınız nedir? Onu söylerseniz daha mantıklı konuşabiliriz. Kimden korunacak bu kod? FBI mı gelip çözmeye kalkışacak, Çinliler klonlamasın diye mi, nedir hedef?
 
Çinliler (kolay) klonlamasın diye yapılacak.


Bir Çinlinin makalesini okudum. O da bunu tavsiye ediyor. Yazılımı karıştırmak gerekiyormuş nasıl yapılacağını anlatmamış.
 
Son düzenleme:
- Kod okuma elbette kapatılacak ama aşması zor değil
- Büyük şirketlerin "secure" olarak pazarlanan MCU'ları kullanılabilir. Bunlar kod okuma açısından daha sağlam
- Çip kodu encrypted halde saklanır, anahtar olarak da çipin unique idsi (veya kripto hafızası varsa oraya konan bir key) ile çözülür, SRAM'e yüklenip çalıştırılır. Tabi Yeterli SRAM lazım bunun için

Uygulanabilecek tonlarca önlem var, bitmez. Unutmayın ki eğer kod koruma önleminiz sıfırdan firmware yazmaktan daha zorsa bir işe yaramaz. Oturur yazarlar.
 
çinlilerin birşeyi kopyalamamasının yolu az adet satılmasıdır. yani yaptığını ürün her ne ise yılda 3000-5000 adet satılıyorsa asla kopyalamakla uğraşmazlar. 50-100k (bu bile az aslında) adede çıkıyorsa o zaman ilgilenirler.
 
Bir zamanlar hex kodlarimi internete koyayim, isteyen benden satin aldigi karta yuklesin amaciyla bir kart ve yazilim gelistirmistim.
Amac cep telefonu uygulamalari indirir gibi hex kod indirmekti.

Tabiki indiren kodlarimi kendi kartina yukleyince calismamaliydi.

Istedigimi gerceklestirdim. Fakat ne kadar guvenli?

Kartin ustune loader ve kripto cozen yazilimi yuklenip oyle satisa sunulur. Hex kod Internetden indirilir ve SD kart ile karta yuklenir.

Hex kodu olusturduktan sonra bunu PC deki yazilimim kriptoluyor ve internete kriptolu halini yukluyorum. Internetteki kriptolu kod hem hex kodu hem de kriptosunu acacak anahtarlari barindiriyor. Kod gelistirme asamasinda 1byte da kod uretseniz 32K da kod uretseniz kripto algoritmasi hep 64K kod uretiyor.

Kriptolu haline yeterince guveniyorum. Fakat cipin kod koruma duzenegini iptal edecek Cinli kripto algoritmama ulastigi anda sistem coker.

Bu yolu izlemeyip kriptoyu cozmeye ugrasacaklar icin sancili bir donem.

Kart, SD karttan kod yukledikten sonra kodun kriptosu aciliyor ve kodlarin calismaya baslamasi yada hata vermesi icin ilave 5 sn lik bekleme eklemistim. Bu da brute force icin yeterince zaman kaybettiren bir eklenti.
 
Son düzenleme:
Unique id var. ID kontrol edecek fonksiyon açıkta duruyorsa benzersiz olmasının anlamı nedir? Yapılan kontrol avuntudan ibaret olur. Asm üzerinde ID yi okuyan bölüm bulunur. Okunacak ID sabit yazılır. Kopya mcular aynı IDyi okur. Veya o kısmı kolayca atlatır. Aynı program, IDsi farklı mcular ile çalışır
Doğru söylüyorsun ancak, birkaç yerde tuzak kurulabilir. Fonksiyonu atlarsın ama program başka bir yerde saçma çalıştırılabilir.
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,944
Mesajlar
118,680
Üyeler
2,821
Son üye
Sfkzdmr

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top