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. 🦈
Gringos