Hoş Geldin, Ziyaretçi!

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

dsgn kguard
ROLLET
vsupload kguardedgeakademi
cleopatra legacy
ecr-online rebels reklam

vSRO Çözüldü Sro_Client Edit Crash Sorunu.

RİME

.
Katılım
24 Ağu 2019
Mesajlar
179
Alınan Beğeni
187
Ödül Puanları
43
Konum
İstanbul
Merhaba, arkadaşlar kolay gelsin.
Oyun hazırlıyorum fakat bi sorunum var sro_client party form kısmını 140'a göre uyarladığımda E'ye bastığım takdirde clientim crash oluyor. Ollydbg ile denemediğim yöntem kalmadı.
sro_clienti paylaşıyorum party form kısmını ayarlayacak biri olursa çok iyi olur.Şimdiden teşekkürler.
NOT : Sro_clientte mastery sorunu yoktur.Sadece PARTY FORM kısmı.

 
Son düzenleme:
Ü

Üye silindi 1104

tekrardan teşekkür ederim sayende yapabildim böyle anlattığın için :D
 
Oyla 0
Ü

Üye silindi 1104

fakat dediğin gibi o alttaki verdiğin koda gittim o yukardaki pt ayarı gibi bi jmp PUSH kodu yoktu bunu nasıl yapabiliriz ilk yapışta sıkıntı yok fakat sanki ışınlanınca atıyor gibi :(
 
Oyla 0

sarkolata

.
Developer
Katılım
2 Tem 2019
Mesajlar
491
Çözümler
7
Alınan Beğeni
793
Ödül Puanları
93
Konum
Los Angeles, CA
diğeri biraz daha sıkıntılı. 2 satır 5byte için yetmiyor. 3 satır alman lazım.
codecave'de

push 6e
mov ecx, edi
call addr

üçünü de yapman lazım. sonra 0073FAB8'a geri dönersin
 
Oyla 0
Ü

Üye silindi 1104

diğeri biraz daha sıkıntılı. 2 satır 5byte için yetmiyor. 3 satır alman lazım.
codecave'de

push 6e
mov ecx, edi
call addr

üçünü de yapman lazım. sonra 0073FAB8'a geri dönersin
teşekkür ederim bu yazdığının aynısını yazsam o verdiğin koda olcak mı yani

nasıl uyandıysan yazdıgın saniye uyanmışım aynı anda yazdık :D kalp kalbe karşıymış ?
 
Oyla 0

Mico

.
Katılım
10 Nis 2020
Mesajlar
1,414
Çözümler
25
Alınan Beğeni
2,497
Ödül Puanları
113
Konum
Mars
codecave "saçma" bir yöntem değil, lütfen cahil cahil konuşma... bir yerden kopyala yapıştır yapacağına biraz öğrenmeye çalışsan yararı yine kendine olacak...
ben tekniği gösteriyorum clientini kendin düzenlersin... dll kullanıyorsan ve kaynak kodu varsa yapman çok daha kolay olur ama olly ile manuel şekilde gösteriyorum...

şimdi "Form Party" e bastığın zaman pencere açıldığında yazacak max. kısmı olly'de burada: 0x0073FACC

9650492b7427220aee9f08f83df61ae5.png


6E yani 110, default sro_client'te burası böyle.

cap değiştirmek için yapman gereken burayı editlemek, 6E yi istediğin cap yaparsın olur biter.
Ama burası kodda signed byte olarak yazılmış yani burayı max 127 yapabilirsin. 127'den sonra yazdığın değerler negatife döner. çünkü signed byte -128'ten 127'ye kadar olabilir.

O yüzden codecave yapmamız gerekiyor. Kısaca kodun çalıştırılması buraya geldiğinde başka bir yere zıplayacağız, istediğimiz cap'i integer olarak yazacağız. Tabi bu işlemden sonra kodun çalışma işleyişini bozmamamız için ilk baştaki yere geri dönmemiz lazım. Codecave kısaca buna deniyor.

Bir diğer problem de codecave'i başlatabilmemiz için (başka bir yere zıplayabilmemiz için) en az 5 byte yere ihtiyacımız var, çünkü jmp opcode'u 1 byte (0xE9), yanına yazacağımız adres de 4 byte. O yüzden 5 byte yere ihtiyacımız var.

Bizim codecave yapmak istediğimiz yer ise sadece 2 byte.
PUSH 6E, byte karşılığı 6A 6E.

O sebeple alttaki push komutunu da alacağız ve gittiğimiz yerde yapacağız onu da.

Şimdi sro_clientta boş bir yer bul, oyuna girip attach yaptıktan sonra bulursan daha iyi olur. Boş yerden kastım şu:

cccde827cce4c43cce0a229d07f5afe2.png


ben bu örnekte codecave'imi 0x00D7F260'a yaptım.

Şimdi gittiğin yerde sağ tık, assemble yap, keep size'ı kaldır. Ve öncelikle istediğimiz cap'i yazacağız.
Yani 140 cap diyelim, PUSH 8C. Yazdık, olly bize şöyle bir satır yaptı:

Kod:
İçeriği görebilmek için Uye olmanız gerekiyor.

ardından 5 byte zorunluluğu yüzünden yalan ettiğimiz satırı alıp burada yapıyoruz. yani PUSH OFFSET 00E18B1C.

parti max level için yapılması gerekenler tamam, şimdi kodun işleyişine geri dönelim.
codecave'e girmek için PUSH 6E satırını seçmiştik. ve alttakini de almıştık. şimdi ondan sonraki ilk komuta geri dönmemiz gerekiyor, yani bu durumda 0x0073FAD3 adresindeki CALL 00653950.

codecaveimize geri dönüp, bir jmp komutu ekliyoruz buraya geri dönmek için. Yani codecave son olarak böyle gözüküyor:

ca8a51c0dbaa0929395c2fea0e19a06b.png


codecavein içi ve çıkışıyla işimiz bitti. Tek kalan codecave'e girişimiz.
orjinal kodun işlendiği yere gidiyoruz. Codecave'e girmek için 0073FACC'teki PUSH 6E yi seçmiştik. Şimdi buraya bir jmp yapacağız ve codecaveimize yönlendireceğiz.

benim codecave 0x00D7F260'ta başlıyordu, oraya zıplayacağız.
Codecave'e girebilmek için 5byte zorunluluğumuz vardı. Biz bu yüzden push komutunun altındaki push offseti de aldık. PUSH 6E, 2 byte idi, yani bize 3extra byte lazımdı. Ama alttaki komut 5byte idi. Yani 2 fazladan aldık, ama bu durum normal, yani 2 tane NOPumuz olacak. Şimdi codecave e gireceğimiz yerdeki 2 satırı seçiyoruz:

b25bb6f87c8fd3cbc84d08d8a1f4849c.png


sağ tık > assemble dedikten sonra (keep size işaretli olacak ki işleyişi noplar kendi gelsin, işleyiş bozulmasın) codecaveimiz için jump ekliyoruz: JMP 00D7F260.
sonuç bu oldu:
3b04e0f4a997e0a143b1274aad77eee1.png


kodun işleyişi bu noktaya geldiğinde, bizim yazdığımız koda zıplayacak, capi ve diğer offseti yazacak, ve geri dönecek, bu kadar basit.
Sonuç:

1a09408b5e5d2d1dd5377ddd9b68ec6c.gif


tabi bu sadece açtığında yazan değer. eğer manuel değiştirmek istersen elle yine 140 yazamazsın, onun offseti az üstte, 0x0073FAAF.
Party matching için başka offsetler de var hangisi tam neye denk geliyor bilmiyorum, bazıları auto match, bazıları anasayfadaki arama kısmı için vs... hepsi için yapılması gerekiyor tek tek.

Kolay gele...
@sarkolata usta bunu konu paylaşım olarak açsan daha güzel olur bu şekilde kimse göremez paylaşım olarak bunu alıp yayınlarsan herkes daha iyi görür ve yapmak isteyen yapar misal ben dediğin sekilde csro için yapmıştım olmuştu burdan alıp konu açarsan çok makbule geçer burda aramak zor olur herkes için :)
 
Oyla 0

sarkolata

.
Developer
Katılım
2 Tem 2019
Mesajlar
491
Çözümler
7
Alınan Beğeni
793
Ödül Puanları
93
Konum
Los Angeles, CA
@sarkolata usta bunu konu paylaşım olarak açsan daha güzel olur bu şekilde kimse göremez paylaşım olarak bunu alıp yayınlarsan herkes daha iyi görür ve yapmak isteyen yapar misal ben dediğin sekilde csro için yapmıştım olmuştu burdan alıp konu açarsan çok makbule geçer burda aramak zor olur herkes için :)
isteyen biri alıp konu haline getirebilir, bu forumda henüz konum yok açarsam bir gün özel bir şey olur belki :)
 
Oyla 0
Katılım
5 Mar 2021
Mesajlar
183
Alınan Beğeni
27
Ödül Puanları
28
Konum
ingiltere
codecave "saçma" bir yöntem değil, lütfen cahil cahil konuşma... bir yerden kopyala yapıştır yapacağına biraz öğrenmeye çalışsan yararı yine kendine olacak...
ben tekniği gösteriyorum clientini kendin düzenlersin... dll kullanıyorsan ve kaynak kodu varsa yapman çok daha kolay olur ama olly ile manuel şekilde gösteriyorum...

şimdi "Form Party" e bastığın zaman pencere açıldığında yazacak max. kısmı olly'de burada: 0x0073FACC

9650492b7427220aee9f08f83df61ae5.png


6E yani 110, default sro_client'te burası böyle.

cap değiştirmek için yapman gereken burayı editlemek, 6E yi istediğin cap yaparsın olur biter.
Ama burası kodda signed byte olarak yazılmış yani burayı max 127 yapabilirsin. 127'den sonra yazdığın değerler negatife döner. çünkü signed byte -128'ten 127'ye kadar olabilir.

O yüzden codecave yapmamız gerekiyor. Kısaca kodun çalıştırılması buraya geldiğinde başka bir yere zıplayacağız, istediğimiz cap'i integer olarak yazacağız. Tabi bu işlemden sonra kodun çalışma işleyişini bozmamamız için ilk baştaki yere geri dönmemiz lazım. Codecave kısaca buna deniyor.

Bir diğer problem de codecave'i başlatabilmemiz için (başka bir yere zıplayabilmemiz için) en az 5 byte yere ihtiyacımız var, çünkü jmp opcode'u 1 byte (0xE9), yanına yazacağımız adres de 4 byte. O yüzden 5 byte yere ihtiyacımız var.

Bizim codecave yapmak istediğimiz yer ise sadece 2 byte.
PUSH 6E, byte karşılığı 6A 6E.

O sebeple alttaki push komutunu da alacağız ve gittiğimiz yerde yapacağız onu da.

Şimdi sro_clientta boş bir yer bul, oyuna girip attach yaptıktan sonra bulursan daha iyi olur. Boş yerden kastım şu:

cccde827cce4c43cce0a229d07f5afe2.png


ben bu örnekte codecave'imi 0x00D7F260'a yaptım.

Şimdi gittiğin yerde sağ tık, assemble yap, keep size'ı kaldır. Ve öncelikle istediğimiz cap'i yazacağız.
Yani 140 cap diyelim, PUSH 8C. Yazdık, olly bize şöyle bir satır yaptı:

Kod:
İçeriği görebilmek için Uye olmanız gerekiyor.

ardından 5 byte zorunluluğu yüzünden yalan ettiğimiz satırı alıp burada yapıyoruz. yani PUSH OFFSET 00E18B1C.

parti max level için yapılması gerekenler tamam, şimdi kodun işleyişine geri dönelim.
codecave'e girmek için PUSH 6E satırını seçmiştik. ve alttakini de almıştık. şimdi ondan sonraki ilk komuta geri dönmemiz gerekiyor, yani bu durumda 0x0073FAD3 adresindeki CALL 00653950.

codecaveimize geri dönüp, bir jmp komutu ekliyoruz buraya geri dönmek için. Yani codecave son olarak böyle gözüküyor:

ca8a51c0dbaa0929395c2fea0e19a06b.png


codecavein içi ve çıkışıyla işimiz bitti. Tek kalan codecave'e girişimiz.
orjinal kodun işlendiği yere gidiyoruz. Codecave'e girmek için 0073FACC'teki PUSH 6E yi seçmiştik. Şimdi buraya bir jmp yapacağız ve codecaveimize yönlendireceğiz.

benim codecave 0x00D7F260'ta başlıyordu, oraya zıplayacağız.
Codecave'e girebilmek için 5byte zorunluluğumuz vardı. Biz bu yüzden push komutunun altındaki push offseti de aldık. PUSH 6E, 2 byte idi, yani bize 3extra byte lazımdı. Ama alttaki komut 5byte idi. Yani 2 fazladan aldık, ama bu durum normal, yani 2 tane NOPumuz olacak. Şimdi codecave e gireceğimiz yerdeki 2 satırı seçiyoruz:

b25bb6f87c8fd3cbc84d08d8a1f4849c.png


sağ tık > assemble dedikten sonra (keep size işaretli olacak ki işleyişi noplar kendi gelsin, işleyiş bozulmasın) codecaveimiz için jump ekliyoruz: JMP 00D7F260.
sonuç bu oldu:
3b04e0f4a997e0a143b1274aad77eee1.png


kodun işleyişi bu noktaya geldiğinde, bizim yazdığımız koda zıplayacak, capi ve diğer offseti yazacak, ve geri dönecek, bu kadar basit.
Sonuç:

1a09408b5e5d2d1dd5377ddd9b68ec6c.gif


tabi bu sadece açtığında yazan değer. eğer manuel değiştirmek istersen elle yine 140 yazamazsın, onun offseti az üstte, 0x0073FAAF.
Party matching için başka offsetler de var hangisi tam neye denk geliyor bilmiyorum, bazıları auto match, bazıları anasayfadaki arama kısmı için vs... hepsi için yapılması gerekiyor tek


denedim beceremedim

codecave "saçma" bir yöntem değil, lütfen cahil cahil konuşma... bir yerden kopyala yapıştır yapacağına biraz öğrenmeye çalışsan yararı yine kendine olacak...
ben tekniği gösteriyorum clientini kendin düzenlersin... dll kullanıyorsan ve kaynak kodu varsa yapman çok daha kolay olur ama olly ile manuel şekilde gösteriyorum...

şimdi "Form Party" e bastığın zaman pencere açıldığında yazacak max. kısmı olly'de burada: 0x0073FACC

9650492b7427220aee9f08f83df61ae5.png


6E yani 110, default sro_client'te burası böyle.

cap değiştirmek için yapman gereken burayı editlemek, 6E yi istediğin cap yaparsın olur biter.
Ama burası kodda signed byte olarak yazılmış yani burayı max 127 yapabilirsin. 127'den sonra yazdığın değerler negatife döner. çünkü signed byte -128'ten 127'ye kadar olabilir.

O yüzden codecave yapmamız gerekiyor. Kısaca kodun çalıştırılması buraya geldiğinde başka bir yere zıplayacağız, istediğimiz cap'i integer olarak yazacağız. Tabi bu işlemden sonra kodun çalışma işleyişini bozmamamız için ilk baştaki yere geri dönmemiz lazım. Codecave kısaca buna deniyor.

Bir diğer problem de codecave'i başlatabilmemiz için (başka bir yere zıplayabilmemiz için) en az 5 byte yere ihtiyacımız var, çünkü jmp opcode'u 1 byte (0xE9), yanına yazacağımız adres de 4 byte. O yüzden 5 byte yere ihtiyacımız var.

Bizim codecave yapmak istediğimiz yer ise sadece 2 byte.
PUSH 6E, byte karşılığı 6A 6E.

O sebeple alttaki push komutunu da alacağız ve gittiğimiz yerde yapacağız onu da.

Şimdi sro_clientta boş bir yer bul, oyuna girip attach yaptıktan sonra bulursan daha iyi olur. Boş yerden kastım şu:

cccde827cce4c43cce0a229d07f5afe2.png


ben bu örnekte codecave'imi 0x00D7F260'a yaptım.

Şimdi gittiğin yerde sağ tık, assemble yap, keep size'ı kaldır. Ve öncelikle istediğimiz cap'i yazacağız.
Yani 140 cap diyelim, PUSH 8C. Yazdık, olly bize şöyle bir satır yaptı:

Kod:
İçeriği görebilmek için Uye olmanız gerekiyor.

ardından 5 byte zorunluluğu yüzünden yalan ettiğimiz satırı alıp burada yapıyoruz. yani PUSH OFFSET 00E18B1C.

parti max level için yapılması gerekenler tamam, şimdi kodun işleyişine geri dönelim.
codecave'e girmek için PUSH 6E satırını seçmiştik. ve alttakini de almıştık. şimdi ondan sonraki ilk komuta geri dönmemiz gerekiyor, yani bu durumda 0x0073FAD3 adresindeki CALL 00653950.

codecaveimize geri dönüp, bir jmp komutu ekliyoruz buraya geri dönmek için. Yani codecave son olarak böyle gözüküyor:

ca8a51c0dbaa0929395c2fea0e19a06b.png


codecavein içi ve çıkışıyla işimiz bitti. Tek kalan codecave'e girişimiz.
orjinal kodun işlendiği yere gidiyoruz. Codecave'e girmek için 0073FACC'teki PUSH 6E yi seçmiştik. Şimdi buraya bir jmp yapacağız ve codecaveimize yönlendireceğiz.

benim codecave 0x00D7F260'ta başlıyordu, oraya zıplayacağız.
Codecave'e girebilmek için 5byte zorunluluğumuz vardı. Biz bu yüzden push komutunun altındaki push offseti de aldık. PUSH 6E, 2 byte idi, yani bize 3extra byte lazımdı. Ama alttaki komut 5byte idi. Yani 2 fazladan aldık, ama bu durum normal, yani 2 tane NOPumuz olacak. Şimdi codecave e gireceğimiz yerdeki 2 satırı seçiyoruz:

b25bb6f87c8fd3cbc84d08d8a1f4849c.png


sağ tık > assemble dedikten sonra (keep size işaretli olacak ki işleyişi noplar kendi gelsin, işleyiş bozulmasın) codecaveimiz için jump ekliyoruz: JMP 00D7F260.
sonuç bu oldu:
3b04e0f4a997e0a143b1274aad77eee1.png


kodun işleyişi bu noktaya geldiğinde, bizim yazdığımız koda zıplayacak, capi ve diğer offseti yazacak, ve geri dönecek, bu kadar basit.
Sonuç:

1a09408b5e5d2d1dd5377ddd9b68ec6c.gif


tabi bu sadece açtığında yazan değer. eğer manuel değiştirmek istersen elle yine 140 yazamazsın, onun offseti az üstte, 0x0073FAAF.
Party matching için başka offsetler de var hangisi tam neye denk geliyor bilmiyorum, bazıları auto match, bazıları anasayfadaki arama kısmı için vs... hepsi için yapılması gerekiyor tek tek.

Kolay gele...
cübbeli hocam denedim ama yapamadim bu dersinizi yardımcı olabilir misiniz rica etsem hocam 😇
 
Oyla 0
AdBlock Detected

Anlıyoruz, reklamlar can sıkıcı!

Elbette, reklam engelleme yazılımı reklamları engellemede harika bir iş çıkarır, ancak aynı zamanda web sitemizin faydalı özelliklerini de engeller. En iyi site deneyimi için lütfen AdBlocker'ınızı devre dışı bırakın.

AdBlock'u Devre Dışı Bıraktım.