Ram okuma (windows ortamı, oyun pointer zinciri çıkarımı) kaynak (konu anlatımı) tavsiyesi istiyorum

:bullseye: “Reverse Engineering of Runtime Memory Structures in C++ Applications (with Anti-Tamper / Obfuscation)”


:magnifying_glass_tilted_left: Daha dar ve uygulamalı başlık:

:white_check_mark: “Game Memory Reverse Engineering (Heap Structures, Dynamic Offsets, XOR/Obfuscated Data Access)”

Bu başlık doğrudan:

  • Diablo III gibi sembolsüz, heap-dinamik, şifreli bellek erişimi olan sistemleri
  • Actor listeleri, attribute map’ler, XOR maskeleri gibi yapıları
  • Pointer chain ile çözülemeyen sistemlerde imza ve kod analizine dayalı çözüm tekniklerini içerir

:brick: Konuya Bağlı Alt Başlıklar:

Alt Başlık Açıklama
Static vs Dynamic Memory Layout Heap, stack ve static veri ayrımı
RIP-relative addressing in x64 mov reg, [rip+off] çözümü
XOR and Salted Memory Protection Değer şifreleme yöntemleri
Signature Scanning & Pattern Matching FindPattern() sistemleri
Runtime Data Structure Recovery (manual) Struct offset çıkarımı, heap analiz
CE & x64dbg ile Debug-based Reverse Breakpoint + RAM değişimi ile akış analizi
IDA Disassembly Flow Analysis Assembly’den erişim zinciri çözümü
  • Sembollu, sifrelenmemis bellek erisimli sistemler
  • Belirli obfuscation metodlarini kullanmayan programlar
  • Pointer chain ile cozulebilen sistemler

Konulari icin hangi kaynaklari kullandiniz? Hangi noktada yetersiz kalmaya basladilar?

Bahsettiginiz reverse engineering konularinin 4-5 adim gerisindeki konulari ogrenmis bir insanin, bu konulari ogrenebilmek icin kendine yol cizebilmesi, ogrenme egzersizleri yapabilmesi lazim.

Reverse engineering’e baslamak isteyen, ve bir LLM’e ileri konu basliklarini listeletmis biri gibi duruyorsunuz. Bunun yerine, bulundugunuz noktadan ileriye giden bir yol haritasi cizdirmenizi tavsiye ederim.

Öncelikle kıymetli vaktiniz için teşekkürler. En temelden reverse enginering öğrenmek istiyorum. Yukarıda anlattıklarım esas hedeftir. Konuların teknik isimlendirmelerini bilmediğim için chat gpt ile hazırlattım. Cheat engine kullanarak chatgpt 4.o yardımı ile denemeler yaptık ama pointer zinciri (chat gpt öyle diyor ) çıkaramadık.
Soruyu sorma amacım şu örnekle açıklayım. Python öğrenmek farklı, python ile data analizi öğrenmek farklı, pygame öğrenmek farklı. Yukarıdaki hedefler için nasıl bir yol haritası tavsiye edersiniz. Ayrıca türkçe/ingilizce kaynak öneriniz var mıdır ?

Ana amacım (biliyorum şuan çok uzak ) : Oyunun bilgisayarda ram de yüklü olan datalar içinden okuma yapmak ve oyun içinde bunları bilgi olarak göstermek, mesela 30 brim ilerde elit düşman var gibi. Sadece okuma müdahale yok

Hocam hangisine öncelik vermeyi düşünüyorsunuz?

Reverse engineering mi? Python mı, Python ile data analizi mi, pygame mi?

Çünkü bunların her biri aslında ayrı uzmanlık gerektiren alanlar. Öğrenme sürecini kolaylaştırmak açısından birini seçip derinleşmeye çalışmak çok daha verimli olur gibi geliyor bana.

ChatGPT’ye belirli bir alanla ilgili kaynak önerisi sorsanız sanırım ileri konular da dahil olmak üzere kaynak önerileri sunar. Mesela "Reverse engineering öğrenmek istiyorum. Bana temel seviyeden ileri seviyeye doğru sıralanmış 10 kitap veya kaynak önerir misin?” veya daha spesifik sorular da olabilir.

“diablo 3” (online bilizard oyunu) deki xor yapılarını çözerek ram den anlık bilgi almak
örneğin: düşman 20 brim uzakta

Cheat enginle çözmeye çalıştıklarım ( sıfır bilgiyle)
![76bed3ad-f20d-4869-9be1-cdf6cb0966e9|631x500]

Hedef oyun içi şöyle bir görünüm. Normalde her nokta gridir mini mapde , Bunu renklendiren "Turbohud " adlı helper programı
(upload://63pq6XKYOtpnYV1IDScG4ElLQ0Y.png)

Bu konu bana cocuklugumu hatirlatti. Simdi oncelikle bir hex editor indiriyorsunuz. Hedef oyunda bir save aliyorsunuz ve bu save dosyasini hex editorde açıyorsunuz. Daha sonra oyuna tekrar dönüp mesela oyundaki paranizi varsayiyorum 1000’den 1025’e cikariyorsunuz ve yeni bir save dosyasi alip onu da hex editor’de aciyorsunuz. Sonra bu 25’lik hexadecimal formatta olusan bolgeye mesela +1000 para gibi ama yine hexadecimal bir deger-karsiliginda girip o save dosyasini yuklediginizde bir seyler olabilir, olmayabilir cunku benim bilgim 90’lardan kalma. Buyuk olasilikla oyun data integrity hatasi verip save dosyasini yuklemez.

Sanırım yazılanlara hızlı göz atmışsınız
Birkaç küçük düzeltme yapayım sizin için
Bu bir online oyun ve ana dosyalar battle.net serverlarında tutulur (save/load) yoktur
Oyundaki para karakter seviyesi gibi değerler değiştirilemez çünkü sunucuda tutulur
Her oyun başladığında memory bloğunda farklı yere yazılır ve sanırım 5 katmanlı
Cheat engine ile bu bilgi alınabilir ama her oyuna girişte bu değişir. Ben helper gibi bişey yazmak istediğimden tüm katmanları soyup ana id lere ulaşmaya çalışıyorum. mesela görseldeki şifrelemelere göz attınız mı

reverse engineering for beginners

2 Beğeni

Ben reverse engineer’ine baslayali baya oldu. O vakit YouTube (hatta Google bile) yoktu, o yuzden kaynak arama/bulma konusunda cok yardimci olabilecegimi zannetmiyorum.

Ama tabi ki assembly ogrenmeniz lazim. Saheserler yaratabilmeye gerek yok; fonksiyonlarin %80’ini olusturan 5-10 instruction’i bilmek yeter.

C gibi low level bir dilde program yazip nasil assembly koduna donustugunu gormek, debug bilgisi olmadan basit fonksiyonlari ve veri turlerini takip etmek guzel egzersiz.

Crackme’lere ve etraflarindaki derslere goz atilabilir.

Cheat Engine de guzel bir program. Pointer zincirinden kasti C+assembly ogrenince anlayacaksiniz zaten. Onun disinda zincir bulmanin ezbere yontemini kullanabilseniz de, ogrenmekten daha cok vakit alabilir.

Render cagrilarina hook atip oyunun uzerine bir seyler cizmeden once, basit bir ReadMemory ile disaridan bir programdan yazdirabilirsiniz istediginiz bilgileri.

1 Beğeni

Gayet yeterli teşekkür ederim. :star_struck:
Github dosyalarının tamamını indirdim
Eldad_Eilam-Reversing__Secrets_of_Reverse_Engineering-Wiley(2005)
ile başlamayı düşünüyorum ne nedir i daha detaylı anlatmış

1 Beğeni

Bu Gamerlar iyi para kazanıyor he…

Yalnız söyleyin, dikkat etsinler, Vergi Dairesinden kapınıza gelmesinler…