Bugün 1997'de çıkmış bir oyunun CD korumasını aşacağız! 
Öncelikle oyunumuz sorunsuz açılmakta lakin Single Player dediğinizde sizden CD'yi istemekte.
Bugün artık Windows 10, ISO dosyalarını doğrudan yerleştirebilediğinden dolayı oyunun ISO'sunun yedeğini alıp çift tıklamanız yeterli ama olay o değil...
Biz doğrudan Exe'nin içinden CD kontrolü yapan kısmı devre dışı bırakacağız.
Gereken yazılımlar:
Öncelikle oyunumuz sorunsuz açılmakta lakin Single Player dediğinizde sizden CD'yi istemekte.
Bugün artık Windows 10, ISO dosyalarını doğrudan yerleştirebilediğinden dolayı oyunun ISO'sunun yedeğini alıp çift tıklamanız yeterli ama olay o değil...
Biz doğrudan Exe'nin içinden CD kontrolü yapan kısmı devre dışı bırakacağız.
Gereken yazılımlar:
- Win32DASM
- HEX Editor (Mesela HxD)
GetDriveTypeA kullanıyor ki bu da KERNEL32.dll içinden elde ediliyor.- Öncelikle W32Dasm ile oyunun ana exe dosyasını açıyoruz. Yazılım bize Exe'nin kullandığı modülleri sıralayacak. İçerinde
KERNEL32.dllolması dikkatinizden kaçmamalı:
Kod:+++++++++++++++++++ IMPORTED FUNCTIONS ++++++++++++++++++Number of Imported Modules = 12 (decimal) Import Module 001: KERNEL32.dll Import Module 002: USER32.dll Import Module 003: GDI32.dll Import Module 004: ADVAPI32.dll Import Module 005: DPLAYX.dll Import Module 006: DSOUND.dll Import Module 007: DDRAW.dll Import Module 008: WINMM.dll Import Module 009: IMM32.dll Import Module 010: MSVFW32.dll Import Module 011: ole32.dll Import Module 012: WSOCK32.dll
- Şimdi
GetDriveTypeAfonksiyonunu bulmamız gerek. Bunun için yukarıdaki Imports butonuna basıyoruz ve kısa bir göz gezdirme sonrasındaKERNEL32.GetDriveTypeAfonksiyonunu buluyoruz.
- Şimdi buna çift tıklıyoruz. W32Dasm bizi doğrudan Assembler koduna götürüyor:
Kod:* Reference To: KERNEL32.GetDriveTypeA, Ord:00DEh | :004D65F6 FF1554267000 Call dword ptr [00702654] :004D65FC 83F805 cmp eax, 00000005 :004D65FF 7404 je 004D6605 :004D6601 33C0 xor eax, eax :004D6603 EB53 jmp 004D6658- Buradaki
Callkomutu CD bulunamadığında ekrana çıkan CD'yi takın hata penceresini çağırıyor. CMP, compare, yani karşılaştırma yapmaya yarayan kod.EAXdeğeri5mi diye kontol ediyor. 5, CD-ROM sürücünün kodu.- Yani buradaki kod CD-ROM sürücüyü kontrol ediyor ve eğer istediği ver gelmez ise de hata kodunu ekrana veriyor.
- Buradaki
- Korumayı aşmak için birden çok seçeneğiniz mevcut. Örneğin CD-ROM kontrolü yerine Sabit Disk kontrolü yapabiliriz. Bunun için
83F805 ( CMP EAX, 05 )kodunu83F803 ( CMP EAX, 03 )yapmamız yeterli zira3, sabit diskin kodu.
Alternatif olark söz konusu satırları NOP ile doldurabiliriz. NOP, "No operation performed", yani hiçbir işlem gerçekeleştirilmedi anlamına geliyor.
- Sıra geldi korumayı kaldırmaya. Bunun için
CMPkomutunun konumunu öğrenmemiz gerek. W32Dasm'da satıra çift tıklıyoruz ve aşağıda Offset'i görüyoruz:000D59FCh. Buradaki h, hexadecimal, yani onaltılık anlamına geldiğinden gözardı edebiliriz.
- Şimdi oyunun Exe'sini HxD gibi bir Hex Editör ile açıyoruz ve
000D59FCHex değerini aratıyoruz. Bunun için HxD'de Ara > Git > Bulunulan ofset seçeneğini seçebiliriz:
- Konuma vardığınızda
83 F8 05 74 04 33 C0kodlarını göreceksiniz. Tanıdık geldi mi?
- Şimdi bu değerleri seçiyoruz ve seçileni doldur deyip
90909090909090giriyoruz.90,NOP'un hex kodu oluyor.
- Şimdi Dosya > Kaydet diyoruz ve oyunun Exe'sini bizim düzenlediğimiz ile değiştiriyoruz. Artık CD-ROM kontrolü olmadan oyunu oynayabilirsiniz.
Son düzenleme: