Yazılım | Programlama C# Memory.dll Kütüphanesini Nasıl Kullanırım ?

15 Mar 2018
223
9
Türkiye
Merhabalar, hayırlı ramazanlar dilerim. Bu kütüphaneyi kullandığımda cheat engineden karakteri z adresindeki float değeri 12345.67890 şeklinde. Bu karakter z adresini labele çektirdiğimde ise, 12345.67 şeklinde çekiyor. Yazırmada ise 12345 şeklinde yazdırıyor. Bu durumda ise ışınlama yapmak istediğimde map dışına atıyor. Bunu memorydeki tam hali ile okuyup yazdırmayı nasıl sağlarım?

Bu şekilde okuyup : 12345.67890
Bu şekilde yazdırmak istiyorum : 12345.67890

Bilgisi olanlar yardımcı olursa sevinirim.

Kütüphane Linki
 

Gauloran

Moderasyon Ekibi Lideri
7 Tem 2013
8,231
4
715
Float değerleri okurken, varsayılan olarak 6-7 haneli sayıya yuvarlar muhtemelen o yüzden okunan değer 12345.67890'sa 12345.68 olarak çekiyor.
float yerine double veri türünü kullanmanız gerekmiyor mu? double veri türü daha büyük sayıları tutabilir.


Kod:
using Memory;
// Bellek işlemleri için Memory.dll kütüphanesini yükle
MemoryManager mem = new MemoryManager();

// Bellek adresi
IntPtr address = new IntPtr(0x123456);

// Double veri türünde oku
double value = mem.ReadDouble(address);

// Tam haliyle yazdır
Console.WriteLine(value.ToString("F10")); // "F10" 10 haneli sayıya yuvarlar

// Double veri türünde yaz
mem.WriteDouble(address, 12345.67890);
 

fsKS

Üye
11 Şub 2023
137
3
74
Merhabalar, hayırlı ramazanlar dilerim. Bu kütüphaneyi kullandığımda cheat engineden karakteri z adresindeki float değeri 12345.67890 şeklinde. Bu karakter z adresini labele çektirdiğimde ise, 12345.67 şeklinde çekiyor. Yazırmada ise 12345 şeklinde yazdırıyor. Bu durumda ise ışınlama yapmak istediğimde map dışına atıyor. Bunu memorydeki tam hali ile okuyup yazdırmayı nasıl sağlarım?

Bu şekilde okuyup : 12345.67890
Bu şekilde yazdırmak istiyorum : 12345.67890

Bilgisi olanlar yardımcı olursa sevinirim.

Kütüphane Linki
Bu durum, kayan nokta hassasiyetiyle ilgilidir. Float tipi, varsayılan olarak 32 bit (4 byte) boyutunda ve 7 haneli kayan nokta hassasiyetine sahiptir. Bu nedenle, 12345.67890 gibi 10 haneli bir sayıyı tam olarak temsil edemez ve yaklaşık bir değer kullanır.

Cheat Engine, bu 32 bit float değerini, 12345.67890 şeklinde gösterirken, label veya yazdırma işlemleri için varsayılan kayan nokta hassasiyetini kullanır ve 12345.67 şeklinde yuvarlar.

Bunun için, Cheat Engine'in ayarlarında kayan nokta hassasiyetini artırmayı deneyebilirsiniz. "Settings" menüsünden "Scan Settings"i seçin ve "Floating point precision" ayarını artırın. Bu ayar, kayan nokta hassasiyetini artırarak, daha doğru sonuçlar elde etmenize yardımcı olabilir.

Ancak, bu ayar değişikliği, diğer işlemlerinize de etki edebilir. Bu nedenle, yapacağınız işlemleri dikkatle kontrol etmeniz önerilir. Ayrıca, kayan nokta hassasiyetiyle ilgili daha fazla bilgi edinerek, doğru işlemleri yapmanız daha kolay olabilir.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.