Sro_Client Aniden Kapanma & ????????? Hatasına KESİN SON! (Saf Inline ASM Bypass)
admin
Katılım
23 Eki 2022
Mesajlar
8,408
Çözümler
12
Tepkime puanı
5,259
Puanları
113
Yaş
28
1780273517959.webp
[REHBER] Sro_Client Aniden Kapanma & ????????? Hatasına KESİN SON!
(Saf Inline ASM Bypass)



Selamlar herkese!

Ya tam kervan çekerken ya da unique keserken oyunun zart diye kapanıp suratınıza o meşhur ????????? hatasını çarpmasından gına gelmedi mi? Ya da klasöre habire .dmp dosyası tükürüp masaüstünü çöp etmesinden? Bugün, piyasadaki standart DLL yöntemlerini bir kenara bırakıp, client'ın kendi kod yapısına "Saf Inline ASM" ile nasıl müdahale edeceğimizi anlatacağım.

Peki Bu Client Neden Trip Atıp Kapanıyor?

Oyun aslında her zaman sistem bozulduğu için çökmüyor. Joymax, oyunu yaparken araya "tuzaklar" bırakmış. Oyun olur da anlamadığı bir şeyle karşılaşırsa (hatalı efekt, eksik dosya vb.), "Aman sistem bozulmasın, ben en iyisi klasöre bi tane .dmp yazıp kendimi imha edeyim" diyor.

Bir de en büyük sorun olan Null Pointer (Donanımsal Çöküş) var. Oyun hafızada bulamadığı bir obje için "0" (Sıfır) adresine gidiyor ve Windows, Access Violation hatası vererek oyunu anında öldürüyor.

Biz Ne Yapacağız?

Hiçbir DLL veya Code Cave (Mağara) açmadan, oyunun ikili kodları arasındaki "padding" (çöp) alanları temizleyip, kendi güvenlik yamamızı doğrudan orijinal satırların içine gömeceğiz. Client'a şu komutu veriyoruz: "Panik yapma, log oluşturma, bozuk objeyi çizemiyorsan es geç ama sakın kapanma!"



Gerekenler
* x32dbg (Başka bir şeye gerek yok!)



[REHBER] Adım Adım x32dbg ile Inline ASM Yaması

İntihar İptali: x32dbg ile client'ı açın. CTRL + G ile 00830DDA adresine gidin. Bu satıra sağ tıklayıp Binary -> Fill with NOPs yapın.

Hata Kutularını Susturmak:0049E490 adresine gidin, boşluk tuşuna basın ve mov al, 1 yazıp onaylayın, alt satıra ret ekleyin. Aynı işlemi 0049D640 adresi için de uygulayın.

Derleyicinin bıraktığı çöp kodları (padding) silip kendi "Null Korumamızı" yazıyoruz:

Çimen ve Çevre Objeleri (BMS):00BECBA7 adresine gidin ve sırayla şu kodları girin:
Kod:
test ebp, ebp
je 00BECCA5
mov esi, ebp
lea eax, dword ptr [ebp+4]
mov edx, dword ptr [eax]
cmp byte ptr [edx+2C], 0
jne 00BECCA5

Karakter, Silah ve Zırh (BSR):00C1FAC5 adresine gidin ve şunları girin:
Kod:
test esi, esi
je 00C1FADA
movzx eax, word ptr [esi+10]
mov edi, ecx
test ax, ax
je 00C1FAE1
cmp ax, 5
je 00C1FAE1
or eax, -1
jmp 00C1FB5B
(Artan ufak boşlukları NOP ile doldurmayı unutmayın.)

Sonuç

Artık client en ufak bir hata kodunda "Ben oynamıyorum!" demeyecek. DLL yüklemediğimiz için Anti-Cheat sistemlerine de yakalanmayacaksınız. Bozuk zırhlı karakter mi var? Çıplak gözükecek ama oyun kapanmayacak!

Final: Üst menüden Dosya > Yamala (Patch File) diyerek yeni sro_client.exe dosyanızı kaydedin.

İyi oyunlar, bol sunlar dilerim!


Etiketler: sro client, client crash fix, sro client error, ????????? hatası, dmp error, vsro development, x32dbg, inline asm, assembly, sro patch, anti crash, silkroad online, server stability, client optimization, access violation fix, null pointer fix, silkroad tools, sro private server, sro coding
 
Üst
Reklam Ver
R10dev.net'i ana ekrana ekle!

Access Restricted

Browser developer tools or unauthorized inspection detected.
Access to this site is limited to standard browser sessions for security reasons.

Protection by r10dev.net