Raft – 20 Özellikli Trainer | Unity Mono Sistemi, Güncelleme ve Uyumluluk Konusu

Sürüm uyumu #raft#20-ozellik#orga-hub#unity-mono#trainer 0 cevap 15 okunma

Raft için hazırladığım trainerin güncelleme, uyumluluk ve sorun bildirimlerini bundan sonra bu konu altında toplayacağım.

Trainer şu anda 20 farklı özellik içeriyor ve ORGA Hub üzerinden kullanılabiliyor. 🦈

Raft tarafı benim için teknik açıdan güzel örneklerden biri çünkü trainer sadece tek bir yöntemle çalışmıyor.

Oyun Unity ve Mono kullandığı için ORGA Hub’ın Mono runtime altyapısından yoğun şekilde faydalanıyorum.

Bunun yanında gerekli yerlerde method patchleme, code cave ve doğrudan oyun methodlarını çalıştırma gibi farklı yöntemler de kullanılıyor.

🎮 Raft Neden Mono Üzerinden Çalışıyor?

Raft Unity tabanlı bir oyun ve kullandığı yapı sayesinde oyun içerisindeki C# sınıfları, field’lar ve methodlarla runtime sırasında çalışabiliyoruz.

Bu yüzden her özellik için:

Bellekte değeri ara → pointer bul → offset yaz.

şeklinde ilerlemek zorunda değilim.

ORGA Hub’ın Mono katmanı üzerinden mümkün olan yerlerde oyunun gerçek yapılarına ulaşabiliyorum.

Örneğin teorik olarak:

PlayerStats

içerisindeki bir değeri kullanmam gerekiyorsa ilgili class ve field bilgilerini runtime üzerinden çözmek mümkün olabiliyor.

Bu hem trainer yapısını daha düzenli hale getiriyor hem de bazı sabit offset bağımlılıklarını azaltıyor.

🧊 Mono Freeze

Raft trainerinde kullandığım yöntemlerden biri Mono Freeze.

Bu yöntem özellikle sürekli değişen oyuncu değerlerinde kullanışlı.

Mantığı basit:

ORGA Hub ilgili class ve field’ı çözüyor, gerçek oyun instance’ına ulaşıyor ve değeri belirlediğimiz seviyede tutuyor.

Oyun değeri azaltmaya çalışsa bile trainer tekrar istediğimiz değeri yazıyor.

Böylece kullanıcı tarafında örneğin sınırsız bir kaynak veya oyuncu değeri elde edilebiliyor.

🔧 Mono Patch

Her özellik bir değeri sürekli sabitleyerek yapılamıyor.

Bazen oyunun bir methodunun çalışma şeklini değiştirmek daha doğru.

Böyle durumlarda Mono Patch kullanıyorum.

Önce Mono metadata üzerinden ilgili method bulunuyor.

Ardından methodun JIT edilmiş native koduna ulaşılıyor.

Gerekli instruction üzerinde geçici bir patch uygulanabiliyor.

Bu yaklaşımın güzel tarafı şu:

Native methodu bellekte tamamen rastgele aramak yerine Mono bize önce:

Aradığın method burada.

diyebiliyor.

Sonrasında gerekli native işlemi uygulayabiliyoruz.

🕳️ Mono Cave

Raft trainerinde daha gelişmiş özelliklerde Mono Cave yöntemi de kullanılabiliyor.

Burada daha önce anlattığım Code Cave mantığı ile Mono sistemini birleştiriyorum.

Genel olarak:

Mono → Methodu bul → Native kodunu çöz → Code Cave kur

şeklinde ilerliyor.

Bu sayede bir methodun davranışını sadece NOP yapmak yerine daha kontrollü şekilde değiştirebiliyoruz.

Örneğin:

  • Belirli koşulda işlemi atlamak

  • Runtime değer yakalamak

  • Trainer seçeneğine göre farklı davranmak

gibi daha gelişmiş işlemler mümkün oluyor.

▶️ Oyunun Kendi Methodlarını Çalıştırmak

Raft tarafında kullandığım diğer yöntemlerden biri doğrudan Mono method çağırma.

Bazı trainer özelliklerinde oyunun zaten yapmak istediğimiz işlemi gerçekleştiren bir methodu bulunabiliyor.

Eğer bu method güvenli ve doğru şekilde çağrılabiliyorsa aynı işlemi sıfırdan memory patch ile tekrar üretmeye gerek kalmıyor.

Mantık:

ORGA Hub → Mono Runtime → Oyunun kendi methodu

şeklinde.

Bence trainer geliştirirken en temiz yöntemlerden biri bu.

Eğer oyun zaten bir işi nasıl yapacağını biliyorsa mümkün olduğunda onun kendi sistemini kullanmak daha mantıklı.

🖱️ Tek Seferlik Özellikler

Trainerde her seçenek sürekli açık kalmak zorunda değil.

Bazı özellikler bir butona bastığınızda bir kez işlem gerçekleştirebilir.

Böyle durumlarda ORGA Hub’ın Mono button yapısını kullanabiliyorum.

Örneğin bir değerin:

Bir kez maksimuma çıkarılması

gerekiyorsa sürekli freeze yapmak yerine tek seferlik işlem daha mantıklı olabilir.

Bu hem gereksiz bellek yazımını azaltıyor hem de oyunun normal davranışını daha az etkiliyor.

🧠 Neden 20 Özelliğin Tamamını Aynı Şekilde Yapmadım?

Çünkü Raft içerisindeki bütün sistemler aynı değil.

Bir özellik normal bir C# field olabilir.

Başka bir özellik bir method tarafından hesaplanıyor olabilir.

Bir diğeri her frame tekrar oluşturulabilir.

Başka bir sistem ise ancak bir fonksiyonun çalışma şeklini değiştirerek kontrol edilebilir.

Bu yüzden Raft trainerinde:

  • Mono Freeze

  • Mono Patch

  • Mono Cave

  • Mono Button

  • Mono Method Call

gibi farklı işlemler birlikte kullanılıyor.

Kullanıcı tarafında ise bunların hiçbiriyle uğraşmanız gerekmiyor.

Hepsi ORGA Hub içerisinde normal trainer seçenekleri olarak görünüyor.

🔄 Raft Güncellendiğinde Trainer Bozulabilir mi?

Evet.

Mono kullanıyor olmamız traineri oyun güncellemelerine karşı tamamen korumuyor.

Raft geliştiricileri yeni sürümde:

  • Class adlarını

  • Field isimlerini

  • Methodları

  • Method parametrelerini

  • Oyunun çalışma mantığını

  • JIT edilen kodu

değiştirebilir.

Bu durumda bazı trainer özelliklerinin yeniden güncellenmesi gerekebilir.

🛡️ Mono’nun Güncellemelerde Avantajı Ne?

Diyelim eski sürümde bir field fiziksel olarak:

+0x120

offset’indeydi.

Yeni sürümde sınıfa yeni alanlar eklendi ve artık:

+0x138

oldu.

Eğer trainer doğrudan:

+0x120

kullanıyorsa özellik bozulur.

Ama ilgili field’ın offset’ini Mono runtime üzerinden yeniden çözebiliyorsak trainer yeni değeri kendisi bulabilir.

Bu durumda hiçbir değişiklik yapmamız gerekmeyebilir.

Tabii geliştirici field’ın adını veya sistemin tamamını değiştirdiyse yine müdahale etmek gerekiyor.

🤔 Neden Bazen Sadece Birkaç Özellik Bozuluyor?

Çünkü 20 özellik birbirinden farklı sistemlere bağlı.

Örneğin oyun güncellemesinde sadece bir method değiştiyse o methodu kullanan birkaç özellik etkilenebilir.

Mono Freeze kullanan diğer değerler çalışmaya devam edebilir.

Bu yüzden yeni Raft sürümünden sonra:

Trainer açıldı.

demek benim için yeterli değil.

20 özelliğin ayrı ayrı kontrol edilmesi gerekiyor.

🧪 Güncelleme Sonrası Nasıl Test Ediyorum?

Raft trainerini yeni bir oyun sürümünde test ederken özellikle:

  • Oyuncu değerleri

  • Hayatta kalma sistemleri

  • Envanter ve kaynaklar

  • Hareket

  • Dünya etkileşimleri

gibi alanları ayrı ayrı kontrol ediyorum.

Bunun yanında:

  • Oyunu yeniden başlatma

  • Save yükleme

  • Ölüm ve respawn

  • Özelliği açıp kapatma

  • Birden fazla özelliği aynı anda kullanma

gibi senaryolar da önemli.

Unity oyunlarında özellikle sahne veya oyuncu instance’ı değişikliklerine dikkat etmek gerekiyor.

☠️ Respawn Sonrası Özellikler

Örneğin ORGA Hub bir player instance’ına ulaştı.

Trainer çalışıyor.

Oyuncu öldü ve respawn oldu.

Raft yeni bir player veya stats instance’ı oluşturursa trainerın eski nesneyi kullanmaya devam etmemesi gerekiyor.

Bu yüzden Mono tarafında yeni instance’ların tekrar çözülebilmesi önemli.

Bir özellik:

Ölene kadar çalışıyor, respawn sonrasında çalışmıyor.

şeklinde davranıyorsa bunu özellikle bildirmenizi isterim.

Bu tarz bilgiler hatayı çok hızlı daraltıyor.

🔁 Değer Değişiyor Ama Geri Dönüyorsa

Bu da önemli bir sorun belirtisi.

Mesela trainer değeri:

100

yapıyor.

Bir saniye sonra tekrar:

25

oluyor.

Bu durumda büyük ihtimalle oyunun başka bir sistemi gerçek değeri yeniden hesaplıyor veya bizim değiştirdiğimiz değer yalnızca geçici bir kopya.

Böyle durumlarda basit Mono Freeze yerine ilgili methodu patchlemek veya doğrudan gerçek kaynağı bulmak gerekebilir.

O yüzden:

Çalışmıyor.

yerine:

Değer değişiyor ama hemen geri dönüyor.

demek benim için çok daha faydalı bir hata raporu.

💾 Save Yedeği Almak Yine Mantıklı

Raft’ta bazı trainer özellikleri yalnızca geçici oyuncu değerlerini etkilerken bazı değişiklikler save dosyasına da yansıyabilir.

Özellikle:

  • Envanter

  • Kaynaklar

  • Kalıcı oyuncu değerleri

gibi sistemlerle oynarken manuel save yedeği bulundurmak iyi fikir.

Trainer kullanırken genel olarak uyguladığım kural şu:

Kalıcı olabilecek bir değere dokunuyorsanız önce save alın.

10 saniyelik işlem, ileride saatlerce uğraşmanızı engelleyebilir.

⚠️ Çok Yüksek Değerler Kullanırken Dikkat

Trainer belirli bir sayıyı değiştirmenize izin veriyor olabilir.

Ama oyun geliştiricisi o sistemi:

0-100

arasında çalışacak şekilde tasarlamış olabilir.

Siz:

999999999

yazdığınızda trainer teknik olarak görevini yapmış olsa bile oyunun başka hesapları bu sayıyı kaldıramayabilir.

Bu yüzden manuel değer girilen alanlarda mümkün olduğunca makul değerler kullanmanızı öneriyorum.

🌐 Multiplayer Konusunda Dikkat

Raft multiplayer desteğine sahip olduğu için burada ayrıca dikkat edilmesi gereken bir nokta var.

ORGA Hub trainerlerinin temel amacı kişisel ve tek oyunculu kullanım.

Trainer özelliklerini başka oyuncuların deneyimini bozacak veya haksız avantaj sağlayacak şekilde kullanmanızı önermiyorum.

Özellikle başkasının oyununa katıldığınız durumlarda trainer kullanmadan önce bunu göz önünde bulundurun.

Mümkünse trainer özelliklerini kendi dünyanızda veya tek oyunculu kullanımda kullanın.

🖥️ ORGA Hub Üzerinden Çalışıyor

Raft için ayrı bir trainer uygulaması dağıtmıyorum.

ORGA Hub:

  • Oyunu algılıyor

  • Trainer paketini yüklüyor

  • 20 özelliği gösteriyor

  • Mono runtime katmanını başlatıyor

  • Özellikleri ve hotkey’leri yönetiyor

ve bütün sistemi tek arayüz üzerinden kullanmanızı sağlıyor.

Teknik tarafta birçok farklı Mono yöntemi çalışsa da kullanıcı açısından diğer ORGA trainerleriyle aynı kullanım deneyimi korunuyor.

🔐 Trainer Paketleme

Geliştirme aşamasındaki Raft trainer tanımını doğrudan açık JSON dosyası şeklinde dağıtmıyorum.

Yayınlama sırasında trainer tanımı:

paketleniyor → şifreleniyor → imzalanıyor

ve .bin paketi haline getiriliyor.

ORGA Hub paketi kullanmadan önce doğruluyor ve ardından trainer runtime içerisinde gerekli işlemleri çalıştırıyor.

Bu sayede bütün ORGA trainerleri aynı dağıtım sistemi içerisinde tutulabiliyor.

🐛 Sorun Bildirirken

Raft trainerinde bir sorun yaşarsanız bu konu altında bildirebilirsiniz.

Mümkünse şunları ekleyin:

  • Raft oyun sürümü

  • Steam vb. kullandığınız platform

  • Çalışmayan özelliğin adı

  • Özellik daha önce çalışıyor muydu?

  • Sorun oyun güncellemesinden sonra mı başladı?

  • Özellik hiç mi çalışmıyor?

  • Değer değişip sonra geri mi dönüyor?

  • Ölüm/respawn sonrasında mı bozuluyor?

  • Save yükleyince mi çalışmamaya başlıyor?

  • Başka mod kullanıyor musunuz?

  • Multiplayer mı single-player mı kullanıyorsunuz?

  • Varsa ekran görüntüsü

Bu bilgiler sorunun hangi Mono sisteminden kaynaklandığını anlamamı ciddi şekilde kolaylaştırıyor.

📝 Güncellemeleri Buradan Paylaşacağım

Raft trainerinde önemli bir değişiklik olduğunda bu konu altında not düşeceğim.

Örneğin:

🔄 Güncellendi

Yeni Raft sürümüyle uyumluluk sağlandı.

🐛 Düzeltildi

Belirli Mono field’ının değişmesi nedeniyle çalışmayan özellik güncellendi.

🔧 Değiştirildi

Bir özellik Mono Freeze yerine daha stabil bir method tabanlı sisteme geçirildi.

⚠️ Bilinen Sorun

Yeni oyun sürümünde belirli özellik geçici olarak uyumsuz.

gibi.

❤️ Kısaca

Raft traineri şu anda 20 özellik içeriyor ve ORGA Hub üzerinden kullanılabiliyor.

Teknik tarafta özellikle Unity’nin Mono yapısından faydalanıyorum.

Kullandığım yöntemler arasında:

  • Mono Freeze

  • Mono Patch

  • Mono Cave

  • Mono Button

  • Mono Method Call

bulunuyor.

Yani Raft traineri basit bir:

Pointer bul → değeri sürekli yaz

trainerinden daha farklı bir yapıya sahip.

Oyunun kendi C# runtime sisteminden mümkün olduğunca faydalanıp her özellik için en uygun yöntemi kullanmaya çalışıyorum.

Yeni Raft sürümleri geldikçe 20 özelliği kontrol edip uyumluluk durumunu ve önemli değişiklikleri bu başlık altında paylaşmaya devam edeceğim. 🦈

Cevap yazmak için giriş yapmalısın. Okumak için giriş gerekmez.

Giriş yap