işlemcinin içerisinde koşan programı uzaktan değiştirebilmek

Başlatan jackal183, 05 Kasım 2012, 09:32:28

Burak B

ST Micronun DFU dökümanlarına ve örneklerine bir göz gezdirin. Ayrıca Cortex M3' ler için genel manada konuşmak gerekirse çalışma esnasında Flash belleğe erişim bir kilit vasıtasıyla oluyor genelde. Bu durum üreticiye göre değişebilir.  Örnek için yine ST micronun EEPROM Emülasyonu örneklerine bakın. Flash belleği EEPROM gibi nasıl kullanabileceğinizi anlatıyor.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

XX_CİHAN_XX

Alıntı yapılan: z - 05 Kasım 2012, 11:12:53
Kullandığınız işlemcinin flashını parça parça silmek mümkünse kendi yazacağınız  programlama, iletişim ve kripto çözme programlarını asla silmeyeceğiniz flash segmentlerden birinde tutarsınız.

Kullanıcı son versiyonunuzu yüklemek istediğinizde kriptolanmış dosyayı internet üzerinden indirir. Cihazını bir tuş ile programlama moduna geçirir ve dosyayı okutur. Senin yazılımın dosyayı deşifre edip flasha yükler.

Dosyanın başkalarının eline geçmesinin önemi kalmaz.

Bu yöntemle yazılımsal bootloader kullanabiliriz donanımsal kullanamıyoruz hocam.
Donanımsal bootloader için iki tane pc programı oluşturmak gerekli diye düşünüyorum.

1. program .hex dosyamızı atıyorum .cry gibi kriptolu bir hale getirecek.

Biz bu .cry uzantılı tek başına anlam ifade etmeyen dosyayı internete yükleyeceğiz.

Kullanıcı bilgisayarında ikinci program yüklü olacak ve bilgisayarına indirdiği .cry uzantılı dosyayı bu program ile açıp cihazı bilgisayarına bağlayacak.
Yükle butonuna basınca program kripto lu cry dosyasını arka planda decriypt ederek tekrar hexe dönüştürecek ve Donanımsal(veya yazılımsal) bootloader üzerinden bunu cihaza atacak.

Yani kripto işini bilgisayarda çözmek bizim üniversal bir bootloader programı yapmamızı sağlar.
Ben bu işi yapan bir ticari program arayıp duruyorum ama hala bulamadım   >:(

mesaj birleştirme:: 05 Kasım 2012, 11:34:02

Alıntı yapılan: ByteMaster - 05 Kasım 2012, 11:30:13
ST Micronun DFU dökümanlarına ve örneklerine bir göz gezdirin. Ayrıca Cortex M3' ler için genel manada konuşmak gerekirse çalışma esnasında Flash belleğe erişim bir kilit vasıtasıyla oluyor genelde. Bu durum üreticiye göre değişebilir.  Örnek için yine ST micronun EEPROM Emülasyonu örneklerine bakın. Flash belleği EEPROM gibi nasıl kullanabileceğinizi anlatıyor.

Anlatıyor hocam ama benim derdim veri güvenliğini sağlayarak yazılım yükleyebileceğim bir bilgisayar programı bulmak bu programı yapmakla uğraşmak istemiyorum.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.


Burak B

ST Micro DFU nun secure versiyonunu da üretmiş. Ancak bunun için irtibata geçmeniz gerekiyor. Firmware korumak kolay iş değildir. Özellikle PC tarafında firmware çaldırmanız büyük olasılıkla mümkün.

Bir örnek vereyim model marka önemli değil Dijital SLR makinelerden birinin firmware ini adamlar firmware güncelleme esnasında yanıp sönen LED lambayı bir Opto ile dinleyerek çalıp üzerinde değişiklik yapıyorlar.

Buna benzer çok örnek mevcut.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

Kripto çözme işini PC de yapma. Ham veriler senin karta gitsin orada çöz. Algoritma kodların PC de olduktan sonra kriptolamanın anlamı yok.

Bu projenin en zor kısmı flash programlama kısmı. Gerisini kolayca halledersin. Flash programlama ilgili olarak da illaki bir örnek program verilmiştir.

Bootloader'ın hard yada soft olmasının hiç önemi yok. Hard olursa en fazla silinememe garantisi olur.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

Kodu bir anahtar ile kriptolayın işlemci içerisinde aynı anahtarla çözüp güncelleyin anahtarı bilmeyen birisinin kodu çözme olasılığı çok düşük.

Firmware korumak kolay işdir. Ama birileri bundan para kazanmak isterse zorlaşır.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

XX_CİHAN_XX

Alıntı yapılan: z - 05 Kasım 2012, 11:56:25
Kripto çözme işini PC de yapma. Ham veriler senin karta gitsin orada çöz. Algoritma kodların PC de olduktan sonra kriptolamanın anlamı yok.

Bu projenin en zor kısmı flash programlama kısmı. Gerisini kolayca halledersin. Flash programlama ilgili olarak da illaki bir örnek program verilmiştir.

Bootloader'ın hard yada soft olmasının hiç önemi yok. Hard olursa en fazla silinememe garantisi olur.

Bu durumda aklıma gelen en basit yöntem şu;

Cihaza üretim aşamasında ilk program yüklenirken eeprom belleğinin yada flash belleğinin bir köşesine benim belirlediğim bir seri numarası yüklenecek.
Ham olarak müşterilerimle paylaştığım hex kodu gönderilirken aynı seri numarası bu kez kıyaslama amacıyla gönderilecek.
Bootloader programım gelen seri numara ile hafızasındaki eski kaydı kıyaslayıp geçerli olup olmadığına bakacak.
Geçerli seri numarası ise hex dosyasını flasha yazacak.

Çok basit ama iş görür mü?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

OG

Alıntı yapılan: z - 05 Kasım 2012, 11:56:25
Bu projenin en zor kısmı flash programlama kısmı. Gerisini kolayca halledersin.
Bu işe bende az bir kafa yormuştum. Aynı sonuca ulaştım.

Kendimiz, açık kaynak kodlu Bootloader lı veya bootloader sız bir programlayıcı yapsak gerisini (PC ve internet tarafını) kullanıcılar kendine göre düzenlese derim, bu tarafı kolay çünkü.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

anladinmi

Arduino ile BT üzerinden kod göndermek çocuk oyuncagi.

Herhangi bir MCU için gereksinim :
-Bootloader
-MCU'nun kendini resetleme kabiliyeti.
Bu iki fonksyon olduktan sonra bir engel kalmiyor.

carirt

binbir türlü yöntemi var ethernet bootloader yazılımı ver pic serileri için

ben pic32 de flash bellekten güncelleme yapmıştım

coco

ilginç bir konu. cihan hocamın fikri güzel peki pic veya atmega ...... içindeki boatloader ana hex programı nasıl yazılır Neye göre yapılır ?hazır bir boatloder hex  programı mı kullanılır?

XX_CİHAN_XX

Yazılımsal bootloader larda mcu programın başında reset vektöründen hemen sonra bootloader kodlarını koşturur ve iki üç saniye çevre birimlerinden hex kodların gelmesini bekler. Tabi bu kodlardan önce bir takım komutlar gönderilir. Flash memory nin bilmem kaçıncı adresinden itibaren program kodlarını yazmaya başla gibi bir takım bilgilerin olduğu bootloader komutları gönderilir. Akabinden gelen hex kodları flash memory e yazma özelliği olan mcu larda doğrudan seçilen adrese yazılır ve cihaz kendini tekrar resetler resetten sonra bootloader programı yeni bir boot kodu almazsa bekleme süresini aştıktan sonra programın yüklendiği başlangıç adresine zıplar ve yeni programımız orada koşmaya başlar.

@og hocama katılıyorum böyle bir çalışma güzel olurdu ancak şu aralar PIC lerle ilişiğimi kestim gibi birşey. Tüm performansımı STM32F lere aktarmak durumundayım. Bu seriler için bir bootloader çalışması yapılacaksa her türlü varım. (Özellikle usb dfu bootloader konusunda)
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.