İkili Modüllerle Fonksiyon Detour Etme
Navigasyon
Bazı Bilgiler
Bu sayfa, garrysmod_common için her şeyi açıklayacaktır.
Bu ayrıca HxD ve IDA ile imzaların nasıl bulunacağını da anlatacaktır. Hangisini kullanmak istediğinize karar vermekte özgürsünüz.
Başlarken
Eğer halihazırda bir projeniz yoksa, bu sayfayı takip ederek bir tane oluşturabilir veya bunun gibi bir şablon kullanabilirsiniz.
premake5.lua dosyanızı açın ve CreateProject'ten sonra bu fonksiyonları çağırın.
Bu, fonksiyonları saptırmak için ihtiyaç duyacağımız genişletilmiş yardımcıları, saptırma ve tarama alt modüllerini ekleyecektir.
Dosyanız şuna benzer bir görünüme sahip olmalıdır:
İmzayı Alma
Bu bölüm, belirtilen platform için bir imzanın nasıl alınacağını açıklayacaktır.
Linux
İlk olarak, içinde arama yapmak istediğiniz .so dosyalarından birini açın.
Arama yapmak istediğiniz dosyanın bir _srv.so sürümü olabilir. Eğer varsa, o dosyayı kullanın.
Bu örnek için, garrysmod/bin/server_srv.so dosyasından CServerGameDLL::ShouldHideServer için imzayı alacağız.
HxD (Linux)
İlk olarak, server_srv.so dosyasını açın.
ctrl + o tuşlarına basarak veya Dosya->Aç menüsüne giderek bir dosya açabilirsiniz.
Şimdi şuna benzer bir görünüme sahip olmalıdır:

Şimdi sadece istediğimiz fonksiyonu aramamız gerekiyor.
Arama kutusunu ctrl + f tuşlarına basarak veya Ara->Ara menüsüne giderek açın.
Şimdi ShouldHideServer yazın ve aratın.
Şimdi, ShouldHideServer içeren bölüm seçilidir.

Son nokta ile bir sonraki nokta arasındaki her şeyi seçin, böylece imzamızı elde etmiş oluruz.

Ve şimdi CServerGameDLL::ShouldHideServer için imzayı elde ettik. Bu durumda imza _ZN14CServerGameDLL16ShouldHideServerEv'dir
IDA (Linux)
İlk olarak, server_srv.so dosyasını açın.
Eğer dosyayı ilk kez açıyorsanız, tüm dosyanın yüklenmesi ve analiz edilmesi biraz zaman alabilir.
Yükleme bittikten sonra şuna benzer bir görünüme sahip olmalıdır:

Şimdi alt + t tuşlarına basarak veya Ara->Ara menüsüne giderek arama kutusunu açın.
CServerGameDLL::ShouldHideServer yazın ve arayın.

Şimdi fonksiyon sol listede seçili olmalıdır ve üzerine çift tıklamanız gerekir.

Şimdi bize fonksiyonu ve imzayı bu şekilde göstermelidir.

Ve şimdi CServerGameDLL::ShouldHideServer için imzayı elde ettik. Bu durumda imza _ZN14CServerGameDLL16ShouldHideServerEv'dir

Windows
Yapılacak: Windows için imzanın nasıl alınacağını öğrenin ve belgeleyin.
Fonksiyonları saptırma.
İlk olarak, gereken her şeyi dahil ediyoruz.
Bundan sonra, Symbol'ümüzü şu şekilde tanımlıyoruz:
Şimdi sadece onu değiştirmek istediğimiz fonksiyonu tanımlamamız gerekiyor.
Sunucuyu sunucu listesinden gizlemek için true döndürüyoruz.
Bu, hiçbir oyuncunun sunucunuzu bulmasını istemiyorsanız kullanışlıdır.
Geriye kalan tek şey, şimdi asıl fonksiyonu saptırmaktır.
Ayrıca Sunucuyu gizlemek için bir Lua fonksiyonu da ekleyebiliriz.
Sonunda, dosyanız şuna benzer bir görünüme sahip olabilir:
Şimdi her şeyi test edebilirsiniz ve beklendiği gibi çalışmalıdır.
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord