Yazılım Güvenliği

Arkadaşlar merhaba. Genel bir soru sormak istiyorum. Uygun kategoriyi bulamadığım için bu kategoride açtım konuyu.
Nispeten büyük firmaların bile yazılımları birkaç gün içinde cracklenebiliyor veya patch’lrı çıkıyor.
En basidinden Winrar yazılımı bile dosyaları mükemmel derecede kriptolayabilirken, nasıl oluyor da bu firmaların yazılımları kırılıyor?
İnternetten öğrendiğim kadarıyla .exe dosyalarının hex kodlarına erişip Assembly diliyle kodlar değiştirilerek yapılıyormuş.
Bu kodları derleyen programlar da aynı winrar gibi kodları belli bir algoritma ile kriptolayamaz mı?

Kriptolayabilirler fakat acildiktan sonra paylasilmalarini engelleyemezler? WinRAR’in da engelleyemedigi gibi?

Winrar dosyaları şifreliyor ama şifreyi kendisi dahi bilmiyor. Tam olarak neyi kıracağız?

Yazılım crackleme ise farklı, uygulamanın içerğini değiştiriyorsun.

Bu hex kodları dediğiniz şey uygulamanın kendisi. Bunu görmeniz çok kolay, hepsi dosyanın içinde çünkü.

Nasıl açacağız peki bunu? Şifreyi nerede saklayacağız? Uygulamaları şifreli bir rar’a koyup pazarlayalım o zaman, rar’ı nasıl açacağız?

Kast ettiğim şey tam anlaşılamamış.

Uygulamanın kendisi derken bahsettiğin şey sintakslar mı?

Örnek üzerinden anlatayım. adam yazılımda değişiklik yapmak için açtı kodları mesela. “printf” ifadesini gördü ve bu ifadeyi ihtiyacı doğrultusunda değiştirdi. Ama o printf “fhxyc” gibisinden bakanın anlayamayacağı şekilde olsa değiştiremez kimse.
Burdaki printf sadece bi örnek.

Hayır. Kastettiğim şey o uygulama dosyası. Mesela uygulamanın adı python.exe ise o exe dosyası.

Programın derlenmiş halinde çoğu fonksiyon birer hafıza adresinden ibarettir, eğer kaynak kodu ile alakalı konuşuyorsanız zaten executable olarak derlenmiş kodlarda fonksiyon isimleri saklanmaz. @aib bir hatam varsa düzelt.

Tam neyin konusuldugunu anlayamadim.

Programin kodunu sifreliyorsak CPU o kodu nasil calistiracak?

Fonksiyon isimleri gibi semantik manasi olmayan sembolleri degistiriyorsak buna “obfuscation” deniyor.

Kirmaya zaten fonksiyon isimlerinin olmadigini varsayarak basliyoruz (dile/derleyiciye/ayarlara gore degisiyor). Aksi takdirde yapacagimiz modifikasyon “kirma” denemeyecek kadar hizli gerceklesir muhtemelen.

Boyle bir sey duymadim.

Ben hala WinRAR / encryption ile benzerligi yakalamaya calisiyorum. Yoksa bir sey demeden vaz mi gectik ondan?

1 Beğeni

Tamam sanırım şimdi anladım. Biz ne yaparsak yapalım kullanılan fonksiyonlar syntax biçimi derlenme şekli vs. hiçbir önemi yok çünkü bu programı çalıştıracak olan birim CPU ve yazdığımız kodun en son hâli CPU’nun diline göre kodlar. Değiştiren de zaten bunu değiştiriyor.
Doğru anlamış mıyım acaba?

Hocam şunu demek istiyordum örnek üzerinden devam edeyim,
3 5 4 8 bu yazılım camiasında anlamlı bi ifade olsun mesela (herhangi bi dilin belli bi işi yapan kodları olarak düşünebiliriz) Ben bu 3 5 4 8 herkesin okuyup anlamasını engellemek adına işlevini yitirmeyecek şekilde değiştirmek istiyorum diyelim. şifrele(3548,x^2-5) (buradaki x^2-5 kilit olsun) biçiminde bi şifreleme mekanizması olsa ve yeni sonuç, her bir elemana kilit formülünü uygulamın ardından 4 20 11 59 olsa. Bütün kodlar bu şekilde gizli. Çalıştırmak için de kilit’in tersi olan (x+5)^(1/2) anahtarı kullanılsa. Winrar orada sadece şifreleme ile ilgili bir örnekti.

Şu anda zihnimde kurduğum bu şeyler boşa çıktı aslında. Neticede en son kademe kodlar CPU’nun anlayacağı şekle bürünecek -Bu kilitlenen ve anahtarla tekrar çözülüp çalışan kodlar olsa bile- Crack yapan da zaten bu "CPU'nun anlayacağı şekle" dediğim kodda değişiklik yapacağı için bizim işlemler çöp olacak.

Evet. Bu dile de “assembly” diyoruz. Haliyle her CPU ailesinin kendi assembly dili var.

Soyle de dusunebilirsin, bir film (vidyo dosyasi) ne kadar korumadan kanundan bilmemneden gecse de bir ise yarayabilmesi icin bir insan evladi tarafindan izlenmesi ve dinlenmesi lazim. Bu insanin eline bir kamera alip vidyoyu kopyalamasini engelleyemezsin.

Aynen, aynen. Bi ara asimetrik kriptografi ile calisan bilgisayma sistemleri tasarladilar, Trusted Computing - Wikipedia , programin/datanin CPU’ya kadar sifreli gittigi ve sifreyi anca CPU’nun acabildigi. Tam kullanimi guzel bir bilimkurgu distopyasi yaratacak proje, son derece destekliyorum.

Eyvallah dostum hiç bilgim yoktu konuya dair ama öğrenmiş oldum sayende.

Bunu yazdıktan sonra aklıma gelen tek bi çözüm oldu, o da programa özgü CPU kullanılması. Ütopik tabi ki :D.
Tek program , tek CPU, tek millet.

2 Beğeni

Ahahaha :slight_smile:

Onlara da ASIC deniyo bu arada—Application-Specific Integrated Circuit. CPU’dan ziyade mikroislemci gibi oluyolar; RAM, ROM, peripheral’lar filan iclerinde. Bildigim tek ornekleri BitCoin miner’lari oldugu icin cok fazla bir sey soyleyemeyecegim.

Bunlarin programlanabilir versiyonlari da FPGA’ler. Orasi da cok ilginc. Ozgur hardware ve tooling daha yeni yeni geliyor ama acik islemci kaynak kodlari simdiden var.

4 Beğeni