Eğitmen (oyunlar) - Trainer (games)

Oyun eğitmenleri hafızasını değiştirmek için yapılan programlardır. bilgisayar oyunu böylelikle hile yapmaya izin vermek için adresleri ve değerleri kullanarak davranışını değiştirir. Bir "donabilir" hafıza adresi oyunun o hafıza adresinde depolanan bilgileri (örneğin sağlık ölçer, cephane sayacı vb.) düşürmesine veya değiştirmesine izin vermemek veya kişinin ihtiyaçlarına uyacak şekilde belirtilen hafıza adreslerindeki verileri değiştirmek hile oyunda.

Tarih

1980'lerde ve 1990'larda, eğitmenler genellikle doğrudan gerçek oyuna entegre edildi. kırma grupları. Oyun ilk başladığında, eğitmen ilk olarak yükledi ve oyuncuya hile yapmak isteyip istemediğini ve hangi hilelerin etkinleştirilmesini istediğini sordu. Daha sonra kod gerçek oyuna geçer. Bu gömülü eğitmenler ile birlikte geldi tanıtımlar oyunu yayınlayan gruplar ve genellikle cracking grubunun becerilerini sergilemek için kullanılan eğitmen hakkında demo kodlama becerileri,[1] bu gruplardan bazıları tamamen kendi Demoscene bugün[2] Cracker grubu sürüm listelerinde ve tanıtımlarında, eğitimli oyunlar, her seçenek veya hile için bir tane olmak üzere, bir veya daha fazla artı işaretiyle işaretlendi, örneğin: "Mega Krew sunar: Bayan Astro Chicken ++". Modern eğitmenler başlıklarına tek bir + veya "artı" ve bir sayı yazarak ekliyorlar, çünkü birçoğunun birkaç işlevi var. Kullanılan sayı, eğitimcinin sahip olduğu değişikliklerin sayısını temsil eder, örn. "sonsuz sağlık" veya "bir vuruş öldürür". Diğer bir fark, oyun sürümünün veya oyunun dijital indirme kaynağının dahil edilmesidir. Örneğin: "Hitman: Absolution Steam +11 Trainer",[3] "F.E.A.R 3 v 1.3 PLUS 9 Eğitmeni" vb.[4][5]

Modern eğitmenler ayrıca ayrı olarak indirilen programlar olarak gelir. Oyunun programlamasını doğrudan değiştirmek yerine, bellekte depolanan değerleri değiştirirler. Aslında, bu o kadar yaygın hale geldi ki, bugün eğitmenler, tanımı gereği, yalnızca hafızayı değiştirirler; Oyunun yürütülebilir dosyasında yapılan değişiklik hoş karşılanmaz ve bu tür programlar gerçek eğitmenler olarak değil, yamalar olarak kabul edilir.

İle nesne yönelimli programlama hafıza nesneler genellikle dinamik olarak depolanır yığın ama modern işletim sistemleri kullanım adres alanı düzeni randomizasyonu (ASLR). Bu nedenle, bu tür hafızayı tekrarlanabilir bir şekilde değiştirmenin tek yolu, oyun sürecinin içinden bilgi almaktır. Bu gerektirir tersine mühendislik gibi yöntemler API bağlantısı nın-nin malloc () ve Bedava(), kod yerleştirme veya statik erişim işaretçileri aranıyor. Eğitmen, nesne tahsis edildiğinde aktif hale gelir ve nesne serbest bırakıldığında kendini tekrar devre dışı bırakır.

Modern işletim sistemleri aynı zamanda konumdan bağımsız çalıştırılabilir dosyalar (PIE) güvenlik için. ASLR ile birlikte ikili dosyalar, her kod yürütme işleminde farklı bir sanal bellek adresine yüklenir. Bu, statik bellek değerlerinin güvenilir şekilde değiştirilmesini daha karmaşık hale getirir. Statik bir bellek ofseti elde etmek için yükleme adresi belirlenmeli ve bulunan bir bellek adresinden çıkarılmalıdır. Bu ofset genellikle tam olarak PIE ikilisindeki statik değişkenin adresidir. Örneğin. Linux araç Scanmem PIE'yi bu şekilde destekler.[6] Yapılandırılmış bellek dengesi için oyun eğitmeni, yük adresini de belirler ve çalışma zamanı sırasında geri ekler. Aynı yöntem aşağıdakiler için de kullanılabilir: dinamik kitaplıklar yanı sıra.

Statik erişim işaretçileri ve API bağlantısı

Statik bellekteki işaretçilerin tersine erişim işaretçileri aramak ve takip etmek külfetli olabilir. Nesnenin boyutunu sağlamaz ve aynı sınıftan birden fazla nesne varsa, bunlar genellikle doğru şekilde ele alınamaz, çünkü örn. yığın üzerinde vektörler veya listeler. Ancak avantajı, bu yöntemin çalışıyorsa zaten çalışan bir sürece bağlanmak için kullanılabilmesidir. DMA (Dinamik Bellek Ayırma) desteği Hile motoru bunun bir örneğidir.

API kancalama tamamen farklı şekilde çalışır: Bir ön yükleyici, oyunu başlatırken oyun sürecine bir kitaplık yükler. Kütüphane, dinamik bellek ayırmalarını izler ve keşif, bunların tümünü kaydetmeye başlar. Paralel olarak statik bellek aramasıyla, bulunan değer adresini benzersiz bir bellek tahsisi ile eşleştirmek mümkündür. Fikir, değer bulunduktan ve nesne hala var olduktan sonra oyun sürecini doğrudan kapatmaktır. Daha sonra, en son eşleşen bellek tahsisi doğru olanıdır. Bu yüzden onu tersine eşleştirmek, tercih edilen yöntemdir. Nesne boyutu ve içindeki değer ofseti keşfedilir ve oyun ikilisindeki geri atlama kod adresi geriye dönük izleme ile belirlenebilir. Genellikle bir kurucu bulunur ve bununla ayırdığı tüm bellek nesnelerini takip etmek mümkündür. Oyun sürecindeki kütüphane ve oyun eğitmeninin birbirleriyle iletişim kurması gerekir. süreçler arası iletişim (IPC) Dezavantajı ise şu şekilde tespit edilebilir: kötü amaçlı yazılım. Ancak nesnelerin içinde daha fazla değer bulmak, onları döküp karşılaştırarak mümkündür. Ayrıca, diğer oyun ve derleyici sürümlerine adaptasyon, tek gereken sökme işleminde bilinen parametre (nesne boyutu) ile bir kütüphane işlevi çağrısı aramak olduğu için basitleşir. ücretsiz ve açık kaynak (FOSS) evrensel oyun eğitmeni "ugtrain" bu yöntemi, FOSS örnekler olarak oyunlar.[7]

Eğitmen yapımında kullanılan Otomatik Araçlar

Geçmişte, eğitmenler genellikle montaj dilinde veya o sırada mevcut olan yüksek seviyeli dillerden herhangi birinde kodlanıyordu. Bugün, eğitmenler, adres ve enjeksiyon kodu gibi hileler hakkında sadece temel bilgileri gerektiren otomatik eğitmen yapma araçlarıyla da yapılabiliyor, program daha sonra eğiticiyi, son kullanıcıdan hiçbir programlama becerisi gerektirmeyen önceden tanımlanmış değerleri ve ayarları kullanarak derliyor. Günümüzde kullanılan en popüler eğitmen yapım aracı Hile motoru çok çeşitli enjeksiyon türlerini ve işaretçileri destekleyen, geçmişte kullanılan ancak artık geçerli olmayan diğer araçlar Eğitmen Yapıcı Kiti, Oyun Eğitmeni Stüdyosu ve Eğitmen Oluşturma Kiti vb.[8] Cheat Engine eğitmenlerinin desteklediği gelişmiş tekniklerden bazıları kod enjeksiyonu, kod değiştirme ve Lua komut dosyası tarafından sağlanan esneklik ve çok yönlülüğü içerir.[9][10] Bu özelliklerin bazıları için desteği olmayan diğer eğitmen yapım araçlarını aşamalı olarak kaldıran

Ayrıca bakınız

Referanslar

  1. ^ "Fairlight için Defacto2 Grup Bilgi Sayfası". Eski demoları, sürümleri ve istatistikleri hakkında bilgi içerir. Arşivlenen orijinal 6 Ekim 2011 tarihinde. Alındı 14 Şubat 2014.
  2. ^ "Razor1911 grup demoları". Gömülü eğitmenlerin ilk günlerinde etkileyici demoları kodlayan Razor1911 demoscene bölümü. Alındı 14 Şubat 2014.
  3. ^ "Hitman Eğitmeni". Eğitmenlerin Modern eğitmen gruplarına göre isimlendirilmesi. 21 Kasım 2012. Alındı 14 Şubat 2014.
  4. ^ "GCW eğitmen listesi". Alındı 14 Şubat 2014.
  5. ^ "DVT grubunu yapan ünlü sahne eğitmeninin listesi". Alındı 5 Haziran 2015.
  6. ^ "Scanmem: bölge türünü tanıtın ve adres desteğini yükleyin". Alındı 5 Haziran 2015.
  7. ^ "evrensel oyun eğitmeni" ugtrain"". Alındı 25 Aralık 2015.
  8. ^ "Eğitmen Yapma Araçları". Alındı 14 Şubat 2014.
  9. ^ "Korkusuz Devrim". Hile motoru eğitmenleri ve masaları için ayrılmış topluluk. 2020-03-25. Alındı 2020-03-25.
  10. ^ "Lua". Cheat Engine Lua Wiki, CE'de bulunan bazı betikleme işlevlerini açıklıyor. 2013-06-11. Alındı 2014-02-14.