Oyun Dosyalarını CRC ile Koruma (Anti-Modlama Sistemi)
Gönderilme zamanı: Sal Haz 24, 2025 5:43 pm
[hr]Açıklama yazdı: Oyuncuların client dosyalarını değiştirerek hile yapmalarını engellemek istiyorsan, oyun dosyalarının hash kontrolünü (CRC veya MD5) yapmalısın. Bu rehberde, Metin2 ve Knight Online PvP sunucularında sık kullanılan CRC kontrol sistemlerini nasıl kurabileceğini anlatıyoruz.
- CRC32: Dosya bütünlüğünü kontrol etmek için kullanılan bir tür dijital parmak izi
- Launcher açıldığında belirli dosyaların hash değeri kontrol edilir
- Dosyada oynama varsa oyun başlamaz veya log tutar
Lua tabanlı launcher sistemlerinde hash kontrolü yapılabilir. Aşağıdaki örnek “root.epk” dosyasını kontrol eder.
1. CRC Kontrol Scripti (crc_check.py)
Kod: Tümünü seç
import zlib
def get_crc(filepath):
prev = 0
for eachLine in open(filepath, "rb"):
prev = zlib.crc32(eachLine, prev)
return "%X" % (prev & 0xFFFFFFFF)
expected_crc = "8A1C93F0" # root.epk dosyasının orijinal CRC değeri
actual_crc = get_crc("pack/root.epk")
if actual_crc != expected_crc:
print("Dosya değiştirilmiş! Oyunu başlatamazsınız.")
exit()
- Launcher.exe içine gömülür (py2exe ile EXE'ye çevrilebilir)
- Her açılışta dosyalar kontrol edilir
- Fark varsa uyarı verir
Knight Online clientlerinde dağınık TBL, FX ve UI dosyalarını kontrol etmek için MD5 kullanımı yaygındır.
1. MD5 Hash Kontrol Scripti (verify_files.php)
Kod: Tümünü seç
<?php
$expected = [
"Data/Skill.tbl" => "d41d8cd98f00b204e9800998ecf8427e",
"Data/Item.tbl" => "2d2d2d8e84d8fa25e54d5e58d3fa6ff9"
];
foreach ($expected as $file => $md5) {
if (md5_file($file) !== $md5) {
echo "Hatalı dosya: $file";
exit;
}
}
echo "Dosyalar doğrulandı.";
?>
- Launcher EXE’si PHP veya Python betiğini çalıştırır
- Dosyalar doğrulanmazsa oyun başlamaz
- “clean.log” veya benzeri bir log tutabilir
Oyun dizinine özel bir “hashlist.crc” dosyası yerleştirilip, her açılışta bu dosya ile client dosyalarının birebir karşılaştırılması yapılabilir.
Örnek satır:
Kod: Tümünü seç
root.epk: 8A1C93F0
root.eix: 2B1D9987
intro.mpg: 7C3A8EF1
[hr]
- Python tabanlı CRC karşılaştırıcı GUI arayüz
- PHP MD5 kontrol paneli (.htaccess korumalı)
- Hazır launcher EXE örneği (shell wrapper)
- Oyuncuların client tarafında dosya değiştirmesini %100 engellemek zordur. Ama tespit etmek mümkündür.
- En iyi çözüm: Launcher → Dosya kontrolü → Güncel değilse update → Hash kontrolü → Oyun başlat
- Dosyaların yedeğini alırken hash değeri de saklanmalı
- [REHBER] Otomatik Sunucu Restart (Çökme Sonrası)
- [SCRIPT] Oyun Giriş Loglama Sistemi (PHP + MySQL)
- [PAYLAŞIM] Güncel AntiCheat Yapılandırmaları
CRC kontrolü konusunda daha gelişmiş örnekleri yakında yayınlayacağız.