- 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
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.comolarak kaydetmekti. Çünkü kurulum programı tüm diski tarayıp yalnızca o dosyayı arıyorduAslında yükseltme disketinin içinde tam kurulum zaten vardı. O zamanlar gerçekten çok basitti
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
Bazıları da sadece üçüncü taraf sunuculara bağımlı olmamayı, yani özerkliği seviyor
Cosmosadlı 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 oluyorduBu 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ı
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
Onu girince anında etkinleşti. Sonrasında resmi olarak satın aldı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
O dönemin yazılımlarının %90’ı gerçekten bu kadar basitti. Gözden kaçan karmaşık bir şey yoktu
Ç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
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ı