Blog Linux Sublime Text 4 Lisanslama
Paylaşımlar
İptal

Linux Sublime Text 4 Lisanslama

Ghidra Kullanarak Sublime Text Binary Dosyasında Hex Patch Uygulama

1. Ghidra Kurulumu ve Proje Oluşturma

Ghidra, NSA tarafından geliştirilen bir reverse engineering aracıdır. İkili dosyalar üzerinde analiz yaparak, makine kodunu insan okunabilir hale getirmeye ve gerekli düzenlemeleri yapmaya olanak tanır.

1.1. Ghidra’yı Kurma

Ghidra’yı henüz kurmadıysanız, aşağıdaki adımları takip edebilirsiniz:

  • Resmi Ghidra sitesinden en güncel versiyonu indirin: https://ghidra-sre.org
  • Dosyayı zipten çıkartın ve terminalde dizine giderek ghidraRun komutunu çalıştırın:
    1
    2
    
    cd /path/to/ghidra
    ./ghidraRun
    

1.2. Yeni Bir Proje Oluşturma

  1. Ghidra’yı başlatın ve “New Project” seçeneğini tıklayın.
  2. Proje Adını ve Kayıt Konumunu belirleyin.
  3. Proje oluşturduktan sonra, “Import File” seçeneğini kullanarak /opt/sublime_text/sublime_text binary dosyasını içe aktarın.
  4. “OK” butonuna basarak analiz işlemini başlatın.

2. Hex Dizisini Bulma

Binary dosya içinde belirli bir hex kod dizisini bulmak için aşağıdaki adımları takip edin:

  1. Ghidra’da proje yüklendikten sonra “Search” → “Search Memory” menüsüne girin.
  2. Aramak istediğiniz hex dizisini girin:
    1
    
    80 79 05 00 0F 94 C2
    
  3. “Search” butonuna basarak arama yapın.
  4. Eğer hex kod bulunursa, ilgili bellek adresine giderek disassembly kodunu inceleyin.

3. Assembly Kodunun Analizi

Bulunan hex kodunun disassembly karşılığı aşağıdaki gibidir:

cmp byte [rcx+0x5], 0  ; RCX + 5 adresindeki byte'ı 0 ile karşılaştır
sete dl                ; Eğer değer 0 ise DL = 1, değilse DL = 0
ret                    ; Fonksiyondan çık

Bu kod, bir doğrulama mekanizmasını temsil etmektedir.

  • cmp talimatı bir bellek adresindeki baytı kontrol eder.
  • sete talimatı, şartın sonucuna göre bir register’ı (DL) 1 veya 0 yapar.
  • ret ile fonksiyon sonlandırılır.

4. Patchleme: Yeni Hex Kodunu Uygulama

Doğrulama kontrol mekanizmasını bypass etmek veya değiştirmek için yeni bir hex dizisi ile değişiklik yapılabilir.

4.1. Assembly Kodunun Değiştirilmesi

Yeni hex kodunun disassembly karşılığı şu şekilde olabilir:

mov byte [rcx+0x5], 1  ; RCX + 5 adresindeki byte'ı doğrudan 1 yap
mov dl, 0              ; DL register'ını sıfırla
nop                    ; No operation (gereksiz kod atlama)

Bu koşullu kontrol mekanizmasını kaldırmakta ve değişmez bir değer atamaktadır.

4.2. Patchleme Adımları

  1. Bulduğunuz hex dizesinin üzerine sağ tıklayın ve “Patch Instruction” seçeneğini seçin.
  2. Yeni hex kodunu girin:
    1
    
    C6 41 05 01 B2 00 90
    
  3. Değişiklikleri kaydedin.
  4. Disassembly penceresinde güncellenmiş kodu kontrol edin.

5. Patchlenmiş Binary’yi Kaydetme

Düzenlenmiş binary dosyasını kaydetmek için:

  1. “File” → “Export Binary” seçeneğini tıklayın.
  2. Patchlenmiş binary’yi dışa aktarın ve orijinal binary dosyası ile değiştirin:
    1
    2
    
    sudo mv sublime_text_patched /opt/sublime_text/sublime_text
    sudo chmod +x /opt/sublime_text/sublime_text
    

6. Son Kontroller

Patch’in doğru uygulandığını test etmek için:

1
ndisasm -b 64 /opt/sublime_text/sublime_text | grep "1000"

Bu komut, belirli bir adres aralığında disassembly sonucunu kontrol etmek için kullanılabilir.


Tek komutla işlemleri sağlama:

1
sudo perl -pi -e 's/\x80\x79\x05\x00\x0F\x94\xC2/\xC6\x41\x05\x01\xB2\x00\x90/' /opt/sublime_text/sublime_text 

Sonuç

Ghidra kullanarak binary dosya içindeki belirli bir hex dizesini başka bir hex dizesiyle değiştirme işlemi başarıyla tamamlandı. Bu işlem, belirli bir kontrol mekanizmasını atlamak veya sistemin davranışını değiştirmek amacıyla yapılmaktadır.

Not/Dikkat: Bu işlem, tamamen deneysel olup, yalnızca eğitim amaçlı olarak hazırlanmıştır. Çalışma, hex string üzerinde tersine mühendislik eğitimi kapsamında gerçekleştirilmekte olup, herhangi bir w*raz/nulled script amacı taşımamaktadır.

Bu yazı yazar tarafından DMCA altında lisanslanmıştır.