Merhaba, Hoşgeldin!

VSRO.org, Silkroad Online, Knight Online, Metin2 ve diğer çevrimiçi oyunlar için öncü bir yardım ve geliştirme platformudur. Misyonumuz, bilgi ve deneyim sahibi bireyleri, bilgiye ihtiyaç duyanlarla bir araya getirerek, zengin bir etkileşim ortamı yaratmak ve farklı bakış açılarını birleştirmektir. Topluluğumuzda güçlü bir işbirliği ve öğrenme kültürü oluşturarak, herkesin değerli katkılarda bulunmasını sağlıyoruz.

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

  • Konuyu Başlatan Konuyu Başlatan RİME
  • Başlangıç tarihi Başlangıç tarihi

RİME

.
Katılım
24 Ağu 2019
Mesajlar
180
Tepkime puanı
188
Puanları
43
Yaş
31
Konum
İstanbul
Web sitesi
kalitebilisim.com
Türk Lirası
0.00₺
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ı.

Ziyaretçiler için gizlenmiş link,görmek için Giriş yap veya üye ol.
 
Son düzenleme:
tekrardan teşekkür ederim sayende yapabildim böyle anlattığın için :D
 
Oyla 0
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
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
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
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 Giriş yap ya da üye ol.

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 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
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 Giriş yap ya da üye ol.

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 Giriş yap ya da üye ol.

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
Geri
Üst Alt