İçeriğe atla

Yazılım yaması

Yama, bilgisayar programlarında oluşan bir hatayı ya da programın içeriğindeki hatalı bir fonksiyonu düzelten bir programcıktır. Genelde bilgisayarlardaki en büyük güvenlik sorunlarından olan yazılım açıklarına müdahale amacıyla kullanılır.

Yazılımlarda var olan açıkları kullanan kötü niyetli kişiler, bilgisayarlarda istedikleri kodları çalıştırabilirler. Çalıştırılan bu kodlar sayesinde bilgisayarda kapılar açıp kişisel bilgiler öğrenilebilir, donanımlarda hata oluşturup bilgisayarın yapısı bozulabilir. Verilerin içerikleri de değiştirilebilir.

Yazılım firmaları, açıkları kötü niyetli insanlardan önce bulup, bunu gidermek için yama (patch) yayınlamaya çalışırlar. Her programda açık vardır ve olmaya devam edecektir. Önemli olan, açıkların üreticiler tarafından kısa sürede tespit edilmesi ve bunları giderici programların yani yamaların hızlı bir şekilde yayınlanmasıdır. Bunu da açık kaynak kodlu yazılımlar çok hızlı bir şekilde yapmaktadır.

Programların yamalarının takip edilip ve yüklenmesi önemlidir. Programlardaki “update” veya “live update” kısımlarını aktif halde tutulmalıdır.

Türler

İkili yamalar

Özel yazılım yamaları genellikle kaynak kodu yerine yürütülebilir dosya olarak dağıtılır. Bu dosyalar yürütüldüğünde, yama kodunun diskteki hedef program(lar)a kurulumunu yöneten bir programı belleğe yükler.

Diğer yazılımlar için yamalar genellikle yama kodunu içeren veri dosyaları olarak dağıtılır. Bunlar, kurulumu gerçekleştiren bir yama yardımcı programı tarafından okunur. Bu yardımcı program, hedef programın yürütülebilir dosyasını (programın makine dilini) genellikle yeni yama kodunu temsil eden baytlarla baytlarının üzerine yazarak değiştirir. Yeni kod, eski kodun kapladığı alana (bayt sayısı) sığarsa, doğrudan eski kodun üzerine yazılarak yerine yerleştirilebilir. Buna satır içi yama denir. Yeni kod eski koddan daha büyükse, yama yardımcı programı yeni kodu içeren yükleme kaydını(kayıtlarını) yama uygulanan hedef programın nesne dosyasına ekler. Yama uygulanan program çalıştırıldığında, yürütme yeni koda yönlendirilir ve dal talimatları (atlamalar veya çağrılar) yeni kodun gerekli olduğu eski koddaki yerin üzerine yamalanır. Örneğin Radio Shack TRS-80 gibi eski 8 bitlik mikro bilgisayarlarda, işletim sistemi bir metin dosyasından yama verilerini kabul eden ve düzeltmeleri hedef programın yürütülebilir ikili dosyasına(dosyalarına) uygulayan bir PATCH/CMD yardımcı programı içerir.

Yama kodunun çalışma zamanında yürütülebilmesi için bellekte yeri(leri) olması gerekir. Satır içi yamalar zor değildir, ancak ek bellek alanına ihtiyaç duyulduğunda programcı doğaçlama yapmalıdır. Doğal olarak, yama programcısı yama uygulanacak kodu ilk oluşturan kişiyse, bu daha kolaydır. Bilgili programcılar, son yinelemelerini üretirken kullanılmadan bırakılan, daha sonraki genişlemeler için bellek ayırarak bu ihtiyaç için önceden plan yaparlar. Orijinal uygulamayla ilgisi olmayan ve daha sonra değişiklikleri dahil etmeye çalışan diğer programcılar, ihtiyaç duyulan ek baytlar için yer bulmalı veya açmalıdır. Bunun için en şanslı olası durum, yama uygulanacak rutinin ayrı bir modül olmasıdır. Bu durumda yama programcısının yalnızca diğer sistem bileşenlerine modül tarafından işgal edilen alanı işaret eden işaretçileri veya uzunluk göstergelerini ayarlaması gerekir; daha sonra bu bellek alanını genişletilmiş yama koduyla doldurmakta özgürdür. Yama uygulanacak rutin ayrı bir bellek modülü olarak mevcut değilse, programcı genişletilmiş yama kodu için yeterli yer açmak amacıyla rutini küçültmenin yollarını bulmalıdır. Tipik taktikler arasında, daha verimli talimat dizileri bularak (veya daha verimli algoritmalarla yeniden tasarlayarak) kodu kısaltmak, mesaj dizilerini ve diğer veri alanlarını sıkıştırmak, program işlevlerini toplu depolamaya aktarmak (disk katmanları gibi) veya yamayla birlikte yüklenecek değişikliklerden daha az önemli olduğu düşünülen program özelliklerini kaldırmaktır.

Küçük bellek içi makine kodu yamaları, CP/M'nin DDT veya MS-DOS'un DEBUG hata ayıklayıcıları gibi sistem hata ayıklama yardımcı programıyla elle girilebilir. Yorumlanmış BASIC'te çalışan programcılar, bir sistem servis rutininin veya yorumlayıcının kendisinin işlevselliğini değiştirmek için genellikle POKE komutunu kullanırdı.

Kaynak kodu yamaları

Yamalar ayrıca kaynak kodu değişiklikleri biçiminde de dolaşabilir. Bu durumda, yamalar genellikle iki kaynak kodu dosyası arasındaki metinsel farklılıklardan oluşur ve bunlara "diffs" denir. Bu tür yamalar genellikle açık kaynaklı yazılım projelerinden çıkar. Bu durumlarda, geliştiriciler kullanıcıların yeni veya değiştirilmiş dosyaları kendilerinin derlemesini bekler.

Büyük yamalar

"Yama" kelimesi küçük bir düzeltme çağrışımı taşıdığından, büyük düzeltmeler farklı bir adlandırma kullanabilir. Hacimli yamalar veya bir programı önemli ölçüde değiştiren yamalar "servis paketleri" veya "yazılım güncellemeleri" olarak dolaşabilir. Microsoft Windows NT ve halefleri (Windows 2000, Windows XP, Windows Vista ve Windows 7 dahil) "servis paketi" terminolojisini kullanır.[1] Tarihsel olarak, IBM bu güncellemelere atıfta bulunmak için "FixPaks" ve "Düzeltici Hizmet Disketi" terimlerini kullanmıştır.[2]

Kaynakça

  1. ^ "Service Pack and Update Center". windows.microsoft.com. 1 Haziran 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Haziran 2015. 
  2. ^ "Glossary of terms". www.tavi.co.uk. 1 Aralık 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Kasım 2016. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

Komut kümesi mimarisi, CPU'nun yazılım tarafından nasıl kontrol edileceğini tanımlayan bilgisayar soyut modelinin bir parçasıdır. ISA, işlemcinin ne yapabileceğini ve bunu nasıl yapacağını belirterek donanım ve yazılım arasında bir arayüz gibi davranır.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

Bilgisayar virüsü, kullanıcının izni ya da bilgisi dahilinde olmadan bilgisayarın çalışma şeklini değiştiren ve kendini diğer dosyaların içerisinde gizlemeye çalışan aslında bir tür bilgisayar programıdır.

<span class="mw-page-title-main">Windows Vista</span> 2007de piyasaya sürülen Windows sürümü

Windows Vista, kişisel bilgisayarlar için geliştirilen Microsoft Windows işletim sistemleri ailesinin sürüm olarak altıncı üyesidir. 22 Temmuz 2005'te gerçek adı duyurulmadan önce Longhorn kod adıyla tanınıyordu. Windows Vista, 30 Ocak 2007'de dünya çapında piyasaya sürülmüştür. Microsoft Türkiye, 24 Ocak 2007 tarihindeki tanıtımıyla Vista'nın resmî lansmanını yapan ilk Microsoft şubesi olmuştur. Windows Vista eski sürümle oranla birçok yeni özellik ve değişikliğe sahiptir. Bu değişim geliştirilmiş grafiksel kullanıcı arayüzü, görsel stil, yeniden tasarlanmış arama fonksiyonları, multimedya araçları, yeniden tasarlanmış ağ iletişimi, görüntü ve yazıcı gibi çeşitli fonksiyonları kapsamaktadır.

Arabellek aşımı ya da arabellek taşkını, iki yazılım arasında veri iletişimi için ayrılmış olan bir arabelleğe boyutundan daha fazla veri konulması ile ortaya çıkan durumdur.

Donanım yazılımı (İng: firmware), sayısal veri işleme yeteneği bulunan her tür donanımın kendisinden beklenen işlevleri yerine getirebilmesi için kullandığı yazılımlara verilen addır. Elektronikte ve bilişimde donanım yazılımı, kalıcı bellek, program kodu ve veri deposudur. Donanım yazılımının bulunduğu cihazlara tipik örnekler; gömülü sistemler, bilgisayar çevre birimleri, cep telefonu, dijital fotoğraf makinesi verilebilir. Bu cihazlarda bulunan yazılım, cihazın kontrol programını barındırır. Donanım yazılımı ROM, EPROM, flaş bellek gibi kalıcı bellekte saklanır. Bir cihaz yazılımının değiştirilmesi, cihazın ömrü boyunca ya hiç yapılmaz ya da sadece birkaç kez yapılır. Bazı cihazların yazılımları üretim aşamasından sonra değiştirilemez. Donanım yazılımında güncelleştirme ya yazılım hatası ya da cihaza yeni bir özellik eklemek için yapılır. Bunun için mikroçip ROM'u değiştirilmesi gerekebilir veya flaş belleğin özel bir yöntemle tekrar programlanması gerekir. Bilgisayardaki BIOS yazılımı yalnızca, cihazın temel işlevlerini saklar, işletim sistemi gibi yüksek seviye yazılımlara önayak olur.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

<span class="mw-page-title-main">Çekirdek (bilgisayar bilimi)</span>

İşletim sistemi çekirdeği, kısaca çekirdek (kernel), işletim sistemindeki her şeyin üzerinde denetimi olan merkezi bileşenidir. Uygulamalar ve donanım seviyesindeki bilgi işlemleri arasında bir köprü görevi görür. Çekirdeğin görevleri sistemin kaynaklarını yönetmeyi de kapsamaktadır. Genellikle çekirdek, işletim sisteminin temel bir elemanı olarak, yazılımın fonksiyonunu yerine getirebilmesi için kontrol etmesi gereken kaynaklar için düşük seviye soyutlama katmanı sağlayabilir. İşletim sistemi görevleri, tasarımları ve uygulanmalarına göre farklı çekirdekler tarafından farklı şekillerde yapılır. Sistem açılırken belleğe yüklenir ve sistem kapatılıncaya kadar ana bellekte kalır.

patch (Unix)

patch, yama dosyası adı verilen farklı bir dosyada yer alan yönergelere göre metin dosyalarını güncelleyen bir Unix programıdır. Yama dosyası bir liste halinde iki dosya arasındaki farklılıkları barındıran bir metin dosyasıdır ve diff programı ile orijinal ve güncel dosya karşılaştırılacak oluşturulur. Patch programı ile dosyaları güncellemeye yamayı uygulamak veya basitçe dosyaları yamamak denir.

<span class="mw-page-title-main">Java sanal makinesi</span>

Java Sanal Makinesi (JSM), Java platformunun nesne modülü formatı olan class uzantılı sınıf dosyalarının belleğe yüklenip çalıştırılması için gereken hizmetleri sunan bir sistem programıdır ve temel görevinin sınıf dosyalarını yorumlamak olduğu söylenebilir. Ancak, JSM'ni salt bir yorumlayıcı olarak görmek büyük haksızlık olur. Zira, yorumlama ile birlikte JSM'nin şu görevleri de vardır.

Windows Orijinal Ürün Avantajı Microsoft firmasının işletim sistemlerinde Windows Update kullanımı veya Microsoft Download Center'dan bileşen kurulumu yapılırken İnternet üzerinden, kurulu işletim sisteminin orijinal olup olmadığını kontrol eden sistem. Windows 7 ile birlikte bu sistemin adı Windows Activation Technologies olarak değiştirilmiştir.

Zararlı yazılım, kötü amaçlı yazılım veya malware, bilgisayar ve mobil cihazların işlevlerini bozmak, kritik bilgileri toplamak, özel bilgisayar sistemlerine erişim sağlamak ve istenmeyen reklamları göstermek amacı ile kullanılan yazılımdır. 1990 yılında Yisrael Radai tarafından malware ismi konulmadan önce, bu tür yazılımlara bilgisayar virüsü adı veriliyordu. Kötü amaçlı yazılımların ilk türü, parazit (asalak) yazılım parçalarını yürütülebilir, çalışan içeriklere eklemekle ilgileniyordu. Bu yazılım parçaları, mevcut çalışan uygulamayı, sistem üstünde çalışan programları ve hatta bilgisayar sistemlerinin ayağa kaldırılmasında önemli rol oynayan önyükleme (boot) kodlarını etkileyen makine kodları olabilir. Kötü amaçlı yazılımlar, kullanıcıların gereksinimlerine karşı bir davranış sergiler ve sistemin yetersizliğinden kaynaklanan bir sorun yüzünden istemsiz, rastgele bir şekilde verecek yazılım parçaları içermez.

Bilgisayar güvenliğinde, Sandbox, çalışan programları ayırmak için kullanılan bir güvenlik mekanizmasıdır.

Sıfır-gün genellikle bir yazılımda bir zayıflığın keşfedildiği gün, çok uzun zamandan beri o açıklığın blackhatler tarafından bulunup kullanıldığının ortaya çıkmış olmasıdır. Ayrıca zayıflık ortaya çıktıktan sonra geliştirici tarafından bir güncelleme sunulamadan önce faydalanılan bir zayıflıktır

<span class="mw-page-title-main">Kütüphane (bilgisayar bilimi)</span> yazılım geliştirmek için bilgisayar programları tarafından kullanılan, komutlar ve işlemler koleksiyonu

Bilgisayar bilminde kütüphane, bir bilgisayar programını çalıştırmak için yazılım geliştirme sırasında kullanılan salt okunur kaynaklardan oluşan bir koleksiyondur.

<span class="mw-page-title-main">Yazılım kategorileri</span>

Yazılım kategorileri, yazılım gruplarıdır. Yazılımın bu kategoriler açısından anlaşılmasını sağlamaktadırlar. Farklı sınıflandırma şemaları, yazılımların farklı yönlerini dikkate alır.

Açık kaynak yazılım hareketi, daha geniş açık işbirliği kavramının bir parçası olarak, yazılımların bir kısmı veya tamamı için açık kaynak lisanslarının kullanımını destekleyen bir harekettir. Açık kaynak hareketi, açık kaynak yazılım kavramını/fikrini yaymaya başlamıştır. Açık kaynak hareketi felsefesini destekleyen programcılar, yazılım geliştirme için gönüllü olarak programlama kodu yazarak ve değiş tokuş ederek açık kaynak topluluğuna katkıda bulunurlar. "Açık kaynak" terimi, hiç kimsenin düzenlenmiş kodu paylaşmayan bir gruba karşı ayrımcılık yapmamasını veya başkalarının önceden düzenlenmiş çalışmalarını düzenlemesini engellememesini gerektirir. Yazılım geliştirmeye yönelik bu yaklaşım, herkesin açık kaynak kodunu almasına ve değiştirmesine olanak tanır. Bu değişiklikler, yazılımla çalışan kişilerden oluşan açık kaynak topluluğu içindeki geliştiricilere geri dağıtılır. Bu sayede kod değişikliğine katılan tüm bireylerin kimlikleri ortaya çıkarılmakta ve kodun zaman içinde dönüşümü belgelenmektedir. Bu yöntem, belirli bir kod parçasının sahipliğini oluşturmayı zorlaştırır, ancak açık kaynak hareketi felsefesiyle uyumludur. Bu hedefler, yüksek kaliteli programların üretimini ve açık kaynak teknolojisini geliştirmek için benzer düşünceye sahip diğer insanlarla işbirliği içinde çalışmayı teşvik eder.

Bir hex düzenleyici [hex editör], bir bilgisayar dosyası oluşturan temel ikili verilerinin değiştirilmesine izin veren bir bilgisayar programıdır. 'Hex' adı, ikili verileri temsil etmek için standart bir sayısal format olan 'hexadecimal'dan gelir. Tipik bir bilgisayar dosyası, içeriği dosyayı oluşturmak için birleştirilen depolama ortamında birden fazla alan kaplar. Floppy veya sabit disklerin fiziksel bölümlerindeki disk sektörü verilerini ayrıştırmak ve düzenlemek için tasarlanmış hex düzenleyiciler, bazen sektör düzenleyicileri veya disk düzenleyicileri olarak da adlandırılır.

<span class="mw-page-title-main">Phantom OS</span>

Phantom OS, çoğunlukla Rus programcılar tarafından yapılan bir işletim sistemidir. Kalıcı sanal bellek kavramına dayalıdır ve bir sanal makine, yönetilen kod ve bayt kodları kullanır. Unix benzeri sistemlerin klasik kavramlarına dayanmayan birkaç işletim sisteminden biridir. Öncelikli hedefi hem işletim sisteminde hem de uygulama yazılımında aynı anda basitlik ve etkinlik sağlamaktır. GNU Kısıtlı Genel Kamu Lisansı (LGPL) altında yayınlanan ücretsiz ve açık kaynaklı bir yazılımdır (FOSS).