Windows Platformu – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Windows Platformunda Yerel Kodu Düzeltme
Bu bölümü anlamak, temel bir montaj dili bilgisi ve Portable Executable formatına biraz aşinalık gerektirir. Bilgisayar korsanlığı ve yama, oyuncular ve üniversite öğrencileri arasında oldukça popüler bir konudur ve bu, Windows platformundaki görevi büyük ölçüde basitleştiren çok sayıda yardımcı programla sonuçlanır. İkili kodu manuel olarak düzenlemek ve yeni makine yönergeleri eklemek yerine, alt düzey düzeltme ekini yapmak için yardımcı programlara ve kitaplıklara güvenebiliriz.
Taşınabilir Yürütülebilir Biçim
Windows Portable Executable (PE) formatı, genel olarak Unix’in Ortak Nesne Dosyası Formatına (COFF) dayalıdır. Herhangi bir Win32 uyumlu işletim sisteminde çalışabilen yürütülebilir bir dosyanın ikili yapısını açıklar. Yürütülebilir dosyalar EXE, DLL, SCR, VxD ve diğer türleri içerir.
Yapısal olarak, bir PE dosyası, diğer dosyaları veya bölümleri içeren bir JAR veya Zip arşivine çok benzer. Bir PE dosyasının bir DOS başlığı vardır; bir PE başlığı; ve metin, veri ve UI kaynakları gibi çeşitli kaynakları temsil eden bir dizi bölümün izlediği bir bölüm tablosudur. Bir PE dosyasının yapısını gösterir.
Taşınabilir yürütülebilir bir dosyanın iç yapısını keşfetmenin harika bir yolu, onu PE Explorer yardımcı programında açmaktır. Bilinen PE bölümlerinin başlıklarını, bölümlerini ve içeriklerini bir GUI penceresinde görüntüleyen, iyi yazılmış bir paylaşılan yazılım programıdır. PE Explorer ayrıca, dosyanın içindeki makine kodunu incelemek için kullanılabilecek bir ayrıştırıcı içerir. PE Explorer ücretsiz değerlendirme için indirilebilir.
Örneğin, daha önce oluşturduğumuz OSMemoryInfo.dll dosyasını PE Explorer’a yüklemek, o DLL’nin bölümlerini ve dışa aktarımlarını görmemizi sağlar. Dışa aktarmaları görüntülemek, DLL’nin karıştırılmış adlara sahip dört işlevi ortaya çıkardığını gösterir.
Fonksiyon mantığını yamalamakla ilgilendiğimiz için, karşılık gelen makine kodunu görebilmemiz gerekiyor. C dili kaynak kodu doğrudan ikili makine kodunda derlenir. JIT tarafından daha fazla derlenmesi veya yorumlanması gereken Java bayt kodunun aksine, makine kodu doğrudan işlemci tarafından yürütülür.
Bunun doğrudan anlamı, derlenmiş yürütülebilir dosyanın yalnızca oluşturulduğu işlemci mimarisinde çalışabilmesidir. Dolaylı çıkarım, makine kodunu kaynak koduna geri derlemenin kolay bir yolu olmadığıdır.
İkisi çok farklı; C dili yapılarının makine yönergeleriyle nasıl temsil edileceğine dair bir standart yoktur; ve her derleyici, kaynak koda dönüştürmeyi daha da karmaşık hale getiren farklı optimizasyonlar yapar. Bu nedenle ikili yürütülebilir dosyaları tersine mühendislikle çalıştırmanın tek yolu, derleme dili düzeyinde çalışmaktır.
Montaj dili, makine talimatlarının insan tarafından okunabilen bir temsilidir. Çok ilkeldir, ancak kodu doğrudan işlemcinin onu yürütme biçimine karşılık gelir. Assembly dilinde herhangi bir kod yazmayacağız, ancak bu konuda daha fazla bilgi edinmek istiyorsanız Amazon.com’dan bir kitap alın veya yalnızca çevrimiçi belgeleri okuyun. Intel mimarileri için, Kip R. Irvine tarafından yazılan Assembly Language for Intel-Based Computers’ı öneririz.
Universal Windows Platform nedir
Uwp nedir
C# UWP nedir
PE Explorer kullanarak Java_covertjava_nativecode_OSMemoryInfo_ getPhysicalTotal işlevinin kodunu ikili dosyanın içinde bulmaya çalışalım. Henüz yapmadıysanız, PE Explorer’ı indirin, kurun ve çalıştırın; sonra içine OSMemoryInfo.dll dosyasını yükleyin.
DLL tarafından sunulan işlevlerin adlarını görmek için dışa aktarmalara bir göz atın. Ardından Araçlar menüsünden Disassembler’ı varsayılan ayarlarla çalıştırın. Çeşitli bilgiler içeren panelleri gösteren mavi bir ekran göreceksiniz. Ana panel, DLL’ye giriş noktası için parçalarına ayrılmış kodu gösterir.
getPhysicalTotal() koduyla ilgilendiğimiz için, onu hızlı bir şekilde bulmak için arama özelliğini kullanacağız. Ara menüsünden Bul’u seçin ve Bul iletişim kutusunda metin alanına getPhysicalTotal yazın. Ad Listesi paneli Java_covertjava_nativecode_OSMemoryInfo_getPhysicalTotal adlı bir öğeyi vurgulamalı ve demonte kodu gösterildiği gibi ana panelde gösterilmelidir.
Assembly dilini temel düzeyde anlayarak, işlevin yığın işaretçisini kaydederek ve yığında yerel değişkenler için alan ayırarak başladığını fark edebilmeniz gerekir.
Daha sonra KERNEL32.dll modülünden GlobalMemoryStatusEx’i çağırır ve dönüş değerinin 0 olup olmadığını kontrol eder. Sonuç 0 ise, getPhysicalTotal() için env parametresinin 0 olup olmadığını kontrol eder; değilse, bir hata mesajı biçimlendirir ve bir istisna oluşturmak için bir alt programı çağırır.
Aksi takdirde, dönüş değeri olarak GlobalMemoryStatusEx tarafından doldurulan yerel bir yapıdaki değeri kullanır. Daha sonra yığın işaretçisini geri yükler ve geri döner. Gördüğümüz, işlev gövdesinin C koduyla neredeyse bire bir eşleşme çünkü getPhysicalTotal yalnızca karşılaştırma ve işlev çağrıları gibi ilkel işlemleri kullanıyor. Artık bu kodu yeni bir mantıkla düzeltmeye hazırız.
İşlev Değiştirici Yardımcı Programını Kullanarak Yerel Bir İşleve Yama Uygulama
Daha önce belirttiğim gibi, yerel bir işleve yama uygulama işlemi, işlevin ikili kodunu bulmayı ve bunun bir bölümünü yeni kodla değiştirmeyi veya yeni koda yönlendirmeyi içerir. Yönlendirme, yeni yönergelerin başladığı adrese basit bir JMP derleme yönergesi veya dinamik bir kitaplık yükleyen ve ondan bir yordam çağıran bir kod parçası olabilir.
Kayıtların ve çağrı yığınının durumunu bozmamak için yama dikkatli bir şekilde uygulanmalıdır. Bir başka hassas konu da yönlendirme koduyla geçersiz kılınan kodun akıbetidir. Orijinal kodu çalıştırmanız gerekmiyorsa, yama kodu orijinal talimatların üzerine yazılabilir.
Bununla birlikte, yama, ön veya son işleme yaparak orijinal mantığın üzerine mantık eklerse, orijinal kodun, yönlendirme ile değiştirilmeden önce farklı bir alana taşınması gerekir. Gördüğünüz gibi, ikili yama, arayanın durumunun ve çağrılan kodun kapsamlı bir analizini gerektiren oldukça karmaşık ve kırılgan bir süreçtir. Bu nedenle, Java yöntemi bildirimine yama uygulamanızı veya tüm kitaplığı ilk seçenek olarak değiştirmenizi öneririz.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)