1 puan yazan GN⁺ 2026-02-02 | 1 yorum | WhatsApp'ta paylaş
  • 1990'larda kullanılan bir muhasebe amaçlı RPG II derleyicisinin gerektirdiği paralel port dongle'ının analiz edilip davranışının yeniden oluşturulduğu bir örnek
  • Orijinal yazılım Windows 98 ortamındaki DOS konsolunda çalışıyor ve dongle olmadan çalışmıyor
  • Disk imajı emülatöre taşınıp analiz edildiğinde, RPGC.EXE ve SEU.EXE gibi çalıştırılabilir dosyaların içine aynı kopya koruma rutinlerinin eklendiği görüldü
  • Assembly analiziyle rutinin her zaman sabit bir değer (7606h) döndürdüğü doğrulandı ve 4 baytlık bir yama ile dongle doğrulaması atlatıldı
  • Böylece Software West şirketinin RPG II derleyicisi dongle olmadan da çalıştırılabilir hale geldi; bu da klasik yazılımın korunması açısından anlamlı bir sonuç

Antik muhasebe yazılımı ve dongle'ın keşfi

  • 40 yıldır kullanılan muhasebe amaçlı RPG tabanlı yazılımın hâlâ bir Windows 98 PC'de çalıştığı görüldü
    • RPG, IBM System/3, System/32, AS/400 gibi orta sınıf bilgisayarlar için geliştirilmiş bir dildi ve daha sonra MS-DOS'a taşındı
  • Bu program çalışırken paralel portta bir donanımsal kopya koruma dongle'ı gerektiriyordu
    • Dongle üzerinde “Stamford, CT” ve “Software Security Inc.” logosu silik şekilde duruyordu
    • Üzerinde “RUNTIME” kelimesi yazıyordu; bunun anlamı daha sonra analiz sırasında ortaya çıktı

Disk imajı analizi ve RPG derleyicisinin yapısı

  • Windows 98 sisteminin disk imajı çıkarılıp emülatörde çalıştırıldı
    • RPG II derleyicisinin iki sürümü (Software West Inc. yapımı) ve muhasebe yazılımının tam RPG kaynak kodu bulundu
    • Yapı, birden çok RPG modülü ve DOS batch dosyalarından oluşan menü sistemi biçimindeydi
  • Derleyicinin kendisi dongle doğrulaması yapıyor ve üretilen çalıştırılabilir dosyalara da aynı koruma rutinini ekliyordu

Paralel port iletişim rutininin tersine mühendisliği

  • Reko disassembler kullanılarak SEU.EXE analiz edildi
    • Başlangıçta in/out komutları görünmüyordu, ancak başka bir segmentte (0800h) bulundu
    • Bu rutin, paralel port adresini BIOS veri alanından okuyor ve veriyi LPT1 portu üzerinden gönderip alıyordu
    • Sonuç değerini BX register'ında tutuyor, giriş değeri almıyor ve her zaman aynı sonucu döndürüyordu

Sabit değerin çıkarımı ve yama

  • Rutinin sonunda BH değerinin 76h olarak sabitlendiği doğrulandı
    • Yalnızca BL değeri bilinmiyordu; bunun için 0~255 aralığında brute-force araması yapıldı
    • Doğru kombinasyonun BL=06h, yani BX=7606h olduğu doğrulandı
  • Rutinin ilk 4 baytı MOV BX,7606h ve RETF ile değiştirilerek dongle doğrulaması atlatıldı
    • Ardından program hemen çalıştı ve aynı rutini içeren diğer çalıştırılabilir dosyalara da aynı değişiklik uygulanabildi

Sonuç ve önemi

  • Tüm RPG II derleyicisi bileşenlerinde aynı kopya koruma kodu bulunduğu için toplu yama uygulanabildi
  • Dongle'ın yalnızca sabit bir değer döndüren bir yapıda olduğu ve sadece 4 baytlık bir yamayla etkisiz hale getirilebildiği görüldü
  • Düzenlenmiş derleyici dongle olmadan da normal çalışıyor; gelecekte kişisel veriler çıkarıldıktan sonra tarihsel bir yazılım arşivi olarak yayımlanması planlanıyor
  • Software West Inc. hakkında internette neredeyse hiç bilgi kalmadığından, geliştiriciyle ek temas kurulması umuluyor

1 yorum

 
GN⁺ 2026-02-02
Hacker News yorumları
  • İlk dönemlerde yazılım koruması gerçekten çok basitti
    Eskiden bir Windows 3.11 yükseltme disketim vardı; kurulum programı, önceki sürüm kurulu değilse başarısız oluyordu
    Çözüm ise sadece boş bir metin dosyası oluşturup adını win.com olarak kaydetmekti. Çünkü kurulum programı tüm diski tarayıp yalnızca o dosyayı arıyordu
    Aslında yükseltme disketinin içinde tam kurulum zaten vardı. O zamanlar gerçekten çok basitti

    • Ben çocukken babam Windows 3.1 yükseltme sürümünü satın almıştı; kutuda “3.0 ve altı sürümlerden yükseltilebilir” yazıyordu ama gerçekte yalnızca 3.x’i tanıyordu
      Sonunda bir arkadaşımdan 3.x sürümünü alıp kurduk ve reklamda söylenenden farklı olduğu için bunun ahlaken kabul edilebilir olduğunu düşündüm
      İlgili ürünün fotoğrafları eBay bağlantısında görülebilir
  • Ben inşaat mühendisliği yazılımı geliştiriyorum (mes100.com)
    Hâlâ donanım dongle tercih eden kullanıcılar var. Elde tutulur fiziksel bir aygıt olmadan içleri rahat etmiyor
    Kalıcı lisans sattığımız için dongle bozulduğunda yedek parça bulunmaması sorun yaratıyor. Bulut lisanslamayı sevmiyorlar ama bu model abonelik tabanlı gelir elde etmeyi mümkün kılıyor
    Ama ne yaparsanız yapın kırılmış sürümler internette dolaşıyor. Hukuki mücadele verecek gücümüz de olmadığı için koruma şart

    • Bu tür dongle’ların tercih edilmesinin nedenlerinden biri air-gap ortamları. Askeri ya da nükleer gibi hassas tasarım verileriyle çalışan yerlerde dış ağa bağlanmak mümkün olmuyor
      Bazıları da sadece üçüncü taraf sunuculara bağımlı olmamayı, yani özerkliği seviyor
    • Düzenlemelerin yavaş değiştiği sektörlerde yükseltme için teşvik az denmişti; öyleyse kullanıcıların neden sürekli para ödemek isteyeceği de ayrı bir soru
    • Babam Cosmos adlı bir inşaat mühendisliği programını kullanırken böyle bir dongle vardı. Bazen algılanmıyor ve bu gerçekten sinir bozucu oluyordu
    • Kullanıcı açısından bakınca, “bozulmadıysa değiştirmeye gerek yok” yaklaşımı gayet mantıklı
      Bu yüzden SaaS modeli kullanıcılar için felaket gibi. Yazılım korsanlığından hoşlanmıyorum ama SaaS’tan da aynı ölçüde hoşlanmıyorum
  • Eskiden crack’ler çok daha basitti
    Sadece JE ya da JNE’yi JMP’ye çevirmek bile korumayı aşmaya yetebiliyordu
    Asıl mesele koruma kodunun nerede olduğunu ve nasıl çalıştığını anlamaktı

    • Bu kadar basit korumaların ortaya çıkmasının birkaç nedeni var
      Birincisi, geliştiriciler kodla bizden çok daha uzun süre yaşadığı için fazla karmaşık korumalar hata düzeltmeyi zorlaştırıyor
      İkincisi, hacker’ların birkaç numara bilmesi yeterliyken geliştiricilerin o numaraların hepsine karşı önlem alması gerekiyor
      Üçüncüsü, koruma mekanizmaları eğlenceli değil ve takdir de görmüyor; bu yüzden motivasyon eksikliği büyük
    • Bir zamanlar demo bir yazılımı debugger ile açmıştım; bellek dökümünde aktivasyon kodu dizgesi olduğu gibi duruyordu
      Onu girince anında etkinleşti. Sonrasında resmi olarak satın aldım
    • dBASE III’ün ProLok “laser protection” sistemini kırmıştım
      Diskete lazerle imza atma yöntemiydi ama assembly okuyabilen bir ergen çocuk bile bunu kolayca aşabiliyordu
      Hatta disketi iğneyle çizmek bile kopyalamaya yetiyordu. Sonuçta bu, pazarlamanın teknolojinin önüne geçtiği bir örnekti
  • 80’lerde RPG II kodu yazdım, 90’larda ise S/36 emülasyon ortamına geçişe yardımcı oldum
    California Software Products adlı şirketin ürününü kullandık; oldukça iyi çalışıyordu ve şirket, kurucusu emekli olana kadar ayakta kaldı

  • “Bu kopya koruma yöntemi fazla basit değil mi?” denmesine karşılık, o dönemde bunun uygun düzeyde mühendislik olduğunu düşünüyorum
    Emülatörler ve decompiler’lar sayesinde bugün birkaç günde çözülebilir ama o zamanlar böyle araçlar bile yoktu

    • Hedef müşteri kitlesi önemli. Teknik olmayan sektörlerdeki sıradan şirketleri durdurmak amaçlanıyorsa profesyonel tersine mühendisleri engellemek gerekmeyebilir
    • Decompiler’lar koruma kodunu analiz edemiyordu
      O dönemin yazılımlarının %90’ı gerçekten bu kadar basitti. Gözden kaçan karmaşık bir şey yoktu
    • 2000 civarında Buenos Aires’te küçük bir telekom şirketinde benzer türde hack işleri yapmıştım. Çoğu, gönderi sahibinin anlattığı seviyede zorluktaydı
    • Bizim BT şirketimiz de şüpheli dosyayı bit shift ederek bir magic number üretme yöntemiyle koruma uyguluyor. Karmaşık olmak zorunda değil
  • Çocukken Ultima oyununu crack’lemiştim
    Çünkü her seferinde floppy takmakla uğraşmak istemiyordum. Kod kendi kendini çözüyor ve diskin belirli bir sektöründen başlangıç adresini okuyordu
    O sektör sıradan kopyalama araçlarıyla kopyalanamıyordu ama çalıştırılabilir dosya başlığını değiştirerek sorunu çözmüştüm

  • 90’ların başında, bir franchise merkezinin şirket içinde geliştirdiği lisans yenileme sisteminin bakımını yapıyordum
    Her ay floppy ile yenileme gerekiyordu ve merkez bazen hoşlanmadığı şubeleri keyfi şekilde engelliyordu
    Sonunda birkaç şube bir araya gelip dava açtı; ben de her şubenin telefonla kod alıp yenileme yapabilmesi için DOS tabanlı bir lisans üreticisi hazırladım
    Dava bittikten sonra lisans kontrolünü tamamen kaldıran bir yama dağıttım. Bir gün bunu DOSBox ile yeniden çalıştırmayı isterim

  • Windows 95’in hâlâ gerçek iş ortamlarında kullanıldığına dair yazı ilginçti
    Gösterişli yapay zeka trendlerinin aksine, sektörün sıkıcı alanlarında teknoloji değişimi yavaş ilerliyor

    • 2014’e kadar Windows 95’i sanallaştırarak çalıştıran bir şirket görmüştüm. Eski bir tıbbi yazılımdı ve şaşırtıcı derecede kararlıydı
    • Ekran görüntüsüne bakınca program DOS için yazılmış gibi görünüyor. Muhtemelen Windows yalnızca dosya paylaşımı için kullanılıyordu
    • Win95 henüz sadece 30 yıllık ve bazı modern donanımlarda hâlâ çalışabiliyor
      Hatta bugün bile PDP-11 emülatörü üzerinde çalışan sistemler var
  • Bu yazılım ve donanımın hâlâ bazı şirketlerde kullanılıyor olması etkileyici
    Bu yüzden crack’lenmiş bir sürümü yayımlamak hukuki risk doğurabilir
    Şirketler eski sistemleri ayakta tutmak için büyük paralar ödeyebildiğinden bu tür satıcıya bağımlılık sürüp gidiyor
    Patent ya da fikri mülkiyet hakları hâlâ geçerliyse, yayımlamadan önce mutlaka kontrol edilmeli

  • Sadece sabit bir sayı döndüren bir donanım dongle fikri gerçekten çok basit bir koruma yöntemi
    Ama o dönemde bu kadarı yeterliydi. Bugünün kurumsal yazılımlarında da benzer şekilde çoğu zaman sadece lisans anahtarı kullanılıyor
    Sonuçta bu, 80’ler versiyonu bir “fatura sinyali gelirse ödeme yapılır” anlayışıydı