Neler yeni

TARTIŞMA Client paket dinleme, Unpack yapma, gelen verileri Asm ile Hook yapma nasıl oluyor ?

swatxx

KY Saygın Üye
KY YardımSever
Katılım
21 Mar 2024
Mesajlar
405
Konu Çözümleri
6
Tepki puanı
43
Puanları
28
Yaş
33
Merhaba, benim gibi bu işlere heves eden, kendisini geliştirmek isteyen arkadaşlar için böyle bir konu açmak istedim.
Bu konular üzerinde çalışan, ilgilenen vb. arkadaşlar varsa bu ve benzer işler nasıl oluyor ?
Yapmak isteyenler olursa nerelerden bu işlere başlamalı ?
Videolu anlatım yada resimli gösteri yapabilecek arkadaşlar var mıdır ?
Yardımcı olursanız seviniriz , iyi forumlar dilerim <3
 

cyber00

KY Saygın Üye
Coder
KY YardımSever
Server Sahibi
Katılım
12 May 2021
Mesajlar
201
Konu Çözümleri
7
Tepki puanı
186
Puanları
103
Yaş
30
Bu olay çok ileri seviye dostum, burada bu olayı sana anlatacak birileri yok diye düşünüyorum.
 

swatxx

KY Saygın Üye
KY YardımSever
Katılım
21 Mar 2024
Mesajlar
405
Konu Çözümleri
6
Tepki puanı
43
Puanları
28
Yaş
33
Bu olay çok ileri seviye dostum, burada bu olayı sana anlatacak birileri yok diye düşünüyorum.
Eminim ileri seviyededir sözüm yoktur. Herkes öğrenerek dünyaya gelmedi ama demi illa bir yerden başlamışlardır :D
 

Hagen

PHP Developer
S.Moderatör
Coder
Server Sahibi
Katılım
21 Eki 2023
Mesajlar
639
Konu Çözümleri
83
Tepki puanı
1,246
Puanları
93
Merhaba, benim gibi bu işlere heves eden, kendisini geliştirmek isteyen arkadaşlar için böyle bir konu açmak istedim.
Bu konular üzerinde çalışan, ilgilenen vb. arkadaşlar varsa bu ve benzer işler nasıl oluyor ?
Yapmak isteyenler olursa nerelerden bu işlere başlamalı ?
Videolu anlatım yada resimli gösteri yapabilecek arkadaşlar var mıdır ?
Yardımcı olursanız seviniriz , iyi forumlar dilerim <3
Paket dinlemek için githubta bir program vardı galiba adı packet sniffer olmalı. onunla dinleyebilirsiniz. open source olmalı biraz düzenleme şart.
Unpack işlemleri için Original Entry Point Offseti bulmalısınız. yani başlangıç ve sonunu. sonrasında Scryla mı neydi o program ile dumpluyacaksınız. (KO 'da TLS Gibi dertler de var. Herkes Koreko'ya kaçıyor TLS mi yok acaba diye düşünüyorum ama patch attıramadım :D mevcut client bozuk iniyor.)
Asm hookda x32dbg veya IDA gibi araçlar kullanarak tespit etmeye yarıyor. sonrasında mevcut bir offseti belirli kurallar dahilinde çağırmak asm yamasıyla veya işlevini değiştirmek anlamına geliyor.
 
Son düzenleme:

swatxx

KY Saygın Üye
KY YardımSever
Katılım
21 Mar 2024
Mesajlar
405
Konu Çözümleri
6
Tepki puanı
43
Puanları
28
Yaş
33
Paket dinlemek için githubta bir program vardı galiba adı packet sniffer olmalı. onunla dinleyebilirsiniz. open source olmalı biraz düzenleme şart.
Unpack işlemleri için Original Entry Point Offseti bulmalısınız. yani başlangıç ve sonunu. sonrasında Scryla mı neydi o program ile dumpluyacaksınız. (KO 'da TLS Gibi dertler de var. Herkes Koreko'ya kaçıyor TLS mi yok acaba diye düşünüyorum ama patch attıramadım :D mevcut client bozuk iniyor.)
Asm hookda x32dbg veya IDA gibi araçlar kullanarak mevcut bir offseti belirli kurallar dahilinde çağırmak asm yamasıyla veya işlevini değiştirmek anlamına geliyor.
Bilmiyorum yanlış mı anladım ama o zaman ilk aşama olarak client tarafından mı yürümeyi öneriyorsunuz TLS muhabbetinden dolayı Client kırılınca ilgili bir src ayarlayıp bir şekilde oyuna girince sonradan oyun içi paket dinleyip ardından çalışmayan veriler dinlenerek hook bölümüne yazılıyor doğru mudur. ?
 

Hagen

PHP Developer
S.Moderatör
Coder
Server Sahibi
Katılım
21 Eki 2023
Mesajlar
639
Konu Çözümleri
83
Tepki puanı
1,246
Puanları
93
Bilmiyorum yanlış mı anladım ama o zaman ilk aşama olarak client tarafından mı yürümeyi öneriyorsunuz TLS muhabbetinden dolayı Client kırılınca ilgili bir src ayarlayıp bir şekilde oyuna girince sonradan oyun içi paket dinleyip ardından hook bölümüne yazılıyor doğru mudur. ?
Biraz sorduğunuz soru karmaşık. ben kısaca üstünden geçerek size anlatmaya çalışayım.

İlk önce Game Sever'in çalışma yapısını anlamalısınız. neyi nerden okuyor nerden paketi yakalıyor ve işleme alıyor cevabı ne gibi gönderiyor?
Bu işlemlerden sonra başlıyorsunuz mantıksal olarak hex decimal parse işlemlerine.

Örnek paket:
Kod:
[Gelen Paket::Recv] Opcode : [1] : PacketToGameString : PKT_KO_LOGIN

    123456123456123456123456

mesela yukarda hex decimal bir paket verisi aldınız.

Client'in gönderdiği paket verisinin ilk 2 hanesi uint8 mi yoksa ilk 5 hanesi uint16 mı?
varsaydım ilk 2 hanesi önceki projede uint8 belkide yanlış yaptım ama deniyecem?
ilk 2 hex decimal karakteri es geçtim sonraki paket verisi ne olabilir? acaba önceki sürümlerdeki gibi uint8 mi uint16 mı? yoksa buda mı uint32 oldu? düşünceleri. vs. vs. karmaşık işler paket işleride. bu manuel dinleme ve ayrıştırmaya çalışma işlemi.

eğer profesyonel IDA veya x32dbg kullanabilirsanız ve asm okuyabilirseniz mevcut paket yapısını asm'den okuyup paketi direkt olarak ayarlar geçersiniz.

En Can alıcı şey. Unpackciler için; TLS Callback (TLS geri çağırma), Bu geri çağırmalar, bir uygulamanın her yeni iş parçacığı oluşturulduğunda veya bir iş parçacığı sonlandırıldığında yürütülen işlevlerdir. Reverse engineering(debugger işleri) bağlamında, TLS geri çağırmaları, zararlı yazılımlar veya koruma mekanizmaları tarafından kullanılarak analiz veya hata ayıklama işlemlerini zorlaştırabilir. (Alıntı)

Exe Kırmayı araştırıyorsunuz Örnek Olarak github'a girdiniz Mesela birisi Xign Jumper diye birşey paylaşmış olabilir ve projeyi indirdiniz.
orjinal usko exe ile oyuna giriş yaptınız. (Mevcut GameServeri JvCryption version vs. vs. ayarlayarak ve önceki versiyondan kalan gereksizleri temizleyerek)

Hook bölümü de aslında Oyunu korumak amaçlı. ama amacı dışına çıkıyor. extra özellik vs getiriyorlar. belirli paketleri client zaten gönderiyor. insanlar mevcut paketlerin yerlerini değiştirerek farklı offsetler üzerinden vs işleme tabi tutuyor. örneğin Skill Base PTR bunun offsetini değiştiriyorlar.

baya uzun oldu fakat üstünden geçerek bir şekilde basite indirgemeye çalıştım en basiti bu şekilde anlatılır diye düşünüyorum.
 
Son düzenleme:

swatxx

KY Saygın Üye
KY YardımSever
Katılım
21 Mar 2024
Mesajlar
405
Konu Çözümleri
6
Tepki puanı
43
Puanları
28
Yaş
33
Biraz sorduğunuz soru karmaşık. ben kısaca üstünden geçerek size anlatmaya çalışayım.

İlk önce Game Sever'in çalışma yapısını anlamalısınız. neyi nerden okuyor nerden paketi yakalıyor ve işleme alıyor cevabı ne gibi gönderiyor?
Bu işlemlerden sonra başlıyorsunuz mantıksal olarak hex decimal parse işlemlerine.

Örnek paket:
Kod:
[Gelen Paket::Recv] Opcode : [1] : PacketToGameString : PKT_GKSOFT_LOGIN

    436170756c637520476f6b68616e

mesela yukarda hex decimal bir paket verisi aldınız.

Client'in gönderdiği paket verisinin ilk 2 hanesi uint8 mi yoksa ilk 4 hanesi uint16 mı?
varsaydım ilk 2 hanesi önceki projede uint8 belkide yanlış yaptım ama deniyecem?
ilk 2 hex decimal karakteri es geçtim sonraki paket verisi ne olabilir? acaba önceki sürümlerdeki gibi uint8 mi uint16 mı? yoksa buda mı uint32 oldu? düşünceleri. vs. vs. karmaşık işler paket işleride. bu manuel dinleme ve ayrıştırmaya çalışma işlemi.

eğer profesyonel IDA veya x32dbg kullanabilirsanız ve asm okuyabilirseniz mevcut paket yapısını asm'den okuyup paketi direkt olarak ayarlar geçersiniz.

En Can alıcı şey. Unpackciler için; TLS Callback (TLS geri çağırma), Bu geri çağırmalar, bir uygulamanın her yeni iş parçacığı oluşturulduğunda veya bir iş parçacığı sonlandırıldığında yürütülen işlevlerdir. Reverse engineering(debugger işleri) bağlamında, TLS geri çağırmaları, zararlı yazılımlar veya koruma mekanizmaları tarafından kullanılarak analiz veya hata ayıklama işlemlerini zorlaştırabilir. (Alıntı)

Exe Kırmayı araştırıyorsunuz Örnek Olarak github'a girdiniz Mesela birisi Xign Jumper diye birşey paylaşmış olabilir ve projeyi indirdiniz.
orjinal usko exe ile oyuna giriş yaptınız. (Mevcut GameServeri JvCryption version vs. vs. ayarlayarak ve önceki versiyondan kalan gereksizleri temizleyerek)

Hook bölümü de aslında Oyunu korumak amaçlı. ama amacı dışına çıkıyor. extra özellik vs getiriyorlar. belirli paketleri client zaten gönderiyor. insanlar mevcut paketlerin yerlerini değiştirerek farklı offsetler üzerinden vs işleme tabi tutuyor. örneğin Skill Base PTR bunun offsetini değiştiriyorlar.

baya uzun oldu fakat üstünden geçerek bir şekilde basite indirgemeye çalıştım en basiti bu şekilde anlatılır diye düşünüyorum.

Bun bunların çoğunu @YNG 'den görerek onu çalışırken yayından izleyerek öğrendim. araştırarak hatta bazen Volkan reis'e yardımlarım da oldu bir yandan da araştırdığım için diğer şeyleri.

Sonuç yapıyoz bişeyler.
Değerli bilgiler için teşekkür ederim, ben ve merak eden bir çok arkadaş için güzel bir bilgilendirme olmuş emeğine sağlık <3
 

kadircan45

KY Uzman Üye
Coder
Katılım
1 Eki 2023
Mesajlar
34
Tepki puanı
23
Puanları
8
eğer illegal şekilde dinlemek istersende KnightOnline.exe nin send fonksiyonuna hook atıyorsun ve servere gitmeden önce kendi değişkenlerine kopyalayıp sonra servere gönderiyorsun atacağım projedeki örnek zamanında ko4fun da dahil olmak üzere x86 tabanlı tüm exelerde çalışıyordu birkaç değişiklilik ile tüm x86 tabanlı exelerde çalıştırabilirsin tek yapman gereken KO_PTR_PKT ve KO_SND_FNC pointerlerini güncellemek. Bunun en kolay yoluda ıstırap srcsinin içersindeki pointerlar çoğu acs de çalışıyor çünkü birçok kişi aynı altyapıyı kullanıyor eğer ben güncel serverde denemekistiyorum dersen birazcık senin pointer bulma becerine kalıyor. oldschoolko nun kullandığı exenin pointerlerinide bırakıyorum gerisi senin yaratıcılığına kalmış :)
#define KO_PTR_CHR 0x10E1654
#define KO_PTR_PKT 0x010E1748
#define KO_SND_FNC 0x006032F0

 

kadircan45

KY Uzman Üye
Coder
Katılım
1 Eki 2023
Mesajlar
34
Tepki puanı
23
Puanları
8
eğer illegal şekilde dinlemek istersende KnightOnline.exe nin send fonksiyonuna hook atıyorsun ve servere gitmeden önce kendi değişkenlerine kopyalayıp sonra servere gönderiyorsun atacağım projedeki örnek zamanında ko4fun da dahil olmak üzere x86 tabanlı tüm exelerde çalışıyordu birkaç değişiklilik ile tüm x86 tabanlı exelerde çalıştırabilirsin tek yapman gereken KO_PTR_PKT ve KO_SND_FNC pointerlerini güncellemek. Bunun en kolay yoluda ıstırap srcsinin içersindeki pointerlar çoğu acs de çalışıyor çünkü birçok kişi aynı altyapıyı kullanıyor eğer ben güncel serverde denemekistiyorum dersen birazcık senin pointer bulma becerine kalıyor. oldschoolko nun kullandığı exenin pointerlerinide bırakıyorum gerisi senin yaratıcılığına kalmış :)
#define KO_PTR_CHR 0x10E1654
#define KO_PTR_PKT 0x010E1748
#define KO_SND_FNC 0x006032F0

tek yapman gereken pointer güncellemek derken biraz yanlış olmuş attığın patch de yakalanabilir serverden servere değişiklilik gösterebilir bunuda göz önünde bulundur ben atlamışım :)
 

swatxx

KY Saygın Üye
KY YardımSever
Katılım
21 Mar 2024
Mesajlar
405
Konu Çözümleri
6
Tepki puanı
43
Puanları
28
Yaş
33
tek yapman gereken pointer güncellemek derken biraz yanlış olmuş attığın patch de yakalanabilir serverden servere değişiklilik gösterebilir bunuda göz önünde bulundur ben atlamışım :)
Bunlarla ilgili aslında örnek bir video olsa yada resimli bir görsel teoride değil de canlı yapılmış hali daha iyi kavrayacağımızı düşünüyorum.
Müsait bir zamanınız belki olursa ufak bir pointer yakalamakla alakalı video ve ya resimli bir kaç görsel paylaşmanız mümkün olur mu acaba ?
Sizden rica etme amacım madem ortada bir projede var hatalı ve sorunlu da olsa benim gibi düzenleme yapmak isteyenler olabilir neden daha fazla geliştirmeyelim eski versiyonda oynamaktan sıkıldı herkes bunun kanısındayım ^^
 

lulu0147

KY Kıdemli Üye
Katılım
4 Ağu 2023
Mesajlar
290
Tepki puanı
22
Puanları
18
Bunlarla ilgili aslında örnek bir video olsa yada resimli bir görsel teoride değil de canlı yapılmış hali daha iyi kavrayacağımızı düşünüyorum.
Müsait bir zamanınız belki olursa ufak bir pointer yakalamakla alakalı video ve ya resimli bir kaç görsel paylaşmanız mümkün olur mu acaba ?
Sizden rica etme amacım madem ortada bir projede var hatalı ve sorunlu da olsa benim gibi düzenleme yapmak isteyenler olabilir neden daha fazla geliştirmeyelim eski versiyonda oynamaktan sıkıldı herkes bunun kanısındayım ^^
Knk sana şunu sorayım ama dürüstçe cevap ver sen bu işleri bilsen veya öğrendikten sonra video cekermiydin
 

swatxx

KY Saygın Üye
KY YardımSever
Katılım
21 Mar 2024
Mesajlar
405
Konu Çözümleri
6
Tepki puanı
43
Puanları
28
Yaş
33
Knk sana şunu sorayım ama dürüstçe cevap ver sen bu işleri bilsen veya öğrendikten sonra video cekermiydin
Beni forumda az çok görmüşsündür, forumda yardım isteyenler oluyor özelden yazanlar, DC'den yazanlar oluyor. Ben gelen soruların cevabını ve çözümünü biliyorsam çekinmeden detayına kadar bilgisini veriyorum para filanda talep etmiyorum. Bilmediğim zamanda ilgili kişiye işi bilen kişinin ismini yazıp yönlendiriyorum işi çözülsün maksat benim için sakıncası yok. Bunun yanı sıra ben kendim çözümünü bulamadığım bir şeyin parasını da ödüyorum çözdürüp maksat benim işim görülsün sıkıntı yok ancak, bu forumun amacı paylaşmak değil mi ?
 
Son düzenleme:

lulu0147

KY Kıdemli Üye
Katılım
4 Ağu 2023
Mesajlar
290
Tepki puanı
22
Puanları
18
Beni forumda az çok görmüşsündür, forumda yardım isteyenler oluyor özelden yazanlar, DC'den yazanlar oluyor. Ben gelen soruların cevabını ve çözümünü biliyorsam çekinmeden detayına kadar bilgisini veriyorum para filanda talep etmiyorum. Bilmediğim zamanda ilgili kişiye işi bilen kişinin ismini yazıp yönlendiriyorum işi çözülsün maksat benim için sakıncası yok. Bunun yanı sıra ben kendim çözümünü bulamadığım bir şeyin parasını da ödüyorum çözdürüp maksat benim işim görülsün sıkıntı yok ancak, bu forumun amacı paylaşmak değil mi ?
Kanka amacım seni kötülemek değildi Hani dediğin gibi biri olabilirsin Ben sadece hani öğrenirsen böyle bir şey yapar mısın gibisinden söylemek istedim yani hani diğer insanlara da saygı duyma amacında öyle söyledim hani onlar belki göstermek istemiyor olabilir yani bizim için bir problem yok Anlatabildim mi derdimi ben tekrardan yanlış anlaşıldıysam özür dilerim senden Hani Amacım seni kırmak ya da bir şey yapmak değildi
 

swatxx

KY Saygın Üye
KY YardımSever
Katılım
21 Mar 2024
Mesajlar
405
Konu Çözümleri
6
Tepki puanı
43
Puanları
28
Yaş
33
Kanka amacım seni kötülemek değildi Hani dediğin gibi biri olabilirsin Ben sadece hani öğrenirsen böyle bir şey yapar mısın gibisinden söylemek istedim yani hani diğer insanlara da saygı duyma amacında öyle söyledim hani onlar belki göstermek istemiyor olabilir yani bizim için bir problem yok Anlatabildim mi derdimi ben tekrardan yanlış anlaşıldıysam özür dilerim senden Hani Amacım seni kırmak ya da bir şey yapmak değildi
Est. ben kendi görüşümü söyledim sadece alınmadım elbet :) Tabi ki benim de herkesin fikirlerine ve görüşlerine saygım sonsuz. Amacım bir tık daha ileri gitmek yani başka bir derdim yok :)
 

kadircan45

KY Uzman Üye
Coder
Katılım
1 Eki 2023
Mesajlar
34
Tepki puanı
23
Puanları
8
Bunlarla ilgili aslında örnek bir video olsa yada resimli bir görsel teoride değil de canlı yapılmış hali daha iyi kavrayacağımızı düşünüyorum.
Müsait bir zamanınız belki olursa ufak bir pointer yakalamakla alakalı video ve ya resimli bir kaç görsel paylaşmanız mümkün olur mu acaba ?
Sizden rica etme amacım madem ortada bir projede var hatalı ve sorunlu da olsa benim gibi düzenleme yapmak isteyenler olabilir neden daha fazla geliştirmeyelim eski versiyonda oynamaktan sıkıldı herkes bunun kanısındayım ^^
aslında manuel olarak pointer bulmak birazcık tarih oldu ve korumalar öyle bir hal aldıki string taramadan ileri gidemiyorlar yani pointer bulduktan sonra at koşturabiliyorsun çoğu serverde bu yüzden pek paylaşım yapılmıyor benimde projeyi paylaşma amacım buydu zaten ve ben projeyi paylaştığımda avcısoft ıstırap ko4fun artyguard vs. gibi çoğu serverde çalışıyordu ve ufacık bir değişiklilik ile tekrardan çalıştırabilirsiniz tek yapmanız gereken hook u direkt olarak send e atmak yerine antinin attığı hook un içersinde gerçek send e dönüş var paketleri kontrol ettikten sonra asıl send e gönderiyor geri sizde kontrolden geçtikten sonrasına hook atıp işlemlerden sonrada antinin return adresine geri döndürürseniz tüm x86 larda paket dinleyip paket atabilirsiniz çünkü ufak bir inceleme yaptığımda farkettim patch kontrolünü sadece KO_SND_FNC adresine koymuşlar :) Örnek bir video veya görsel işine gelirsek böyle şeyler için gerçekten vaktim yok ve bu işlerin video ile öğrenileceğini sanmıyorum.Ama bildiğim bir konuda takılan arkadaşlar olursa vakit oldukça elimden geldiğince sorularını yanıtlamaya çalışırım
 

swatxx

KY Saygın Üye
KY YardımSever
Katılım
21 Mar 2024
Mesajlar
405
Konu Çözümleri
6
Tepki puanı
43
Puanları
28
Yaş
33
aslında manuel olarak pointer bulmak birazcık tarih oldu ve korumalar öyle bir hal aldıki string taramadan ileri gidemiyorlar yani pointer bulduktan sonra at koşturabiliyorsun çoğu serverde bu yüzden pek paylaşım yapılmıyor benimde projeyi paylaşma amacım buydu zaten ve ben projeyi paylaştığımda avcısoft ıstırap ko4fun artyguard vs. gibi çoğu serverde çalışıyordu ve ufacık bir değişiklilik ile tekrardan çalıştırabilirsiniz tek yapmanız gereken hook u direkt olarak send e atmak yerine antinin attığı hook un içersinde gerçek send e dönüş var paketleri kontrol ettikten sonra asıl send e gönderiyor geri sizde kontrolden geçtikten sonrasına hook atıp işlemlerden sonrada antinin return adresine geri döndürürseniz tüm x86 larda paket dinleyip paket atabilirsiniz çünkü ufak bir inceleme yaptığımda farkettim patch kontrolünü sadece KO_SND_FNC adresine koymuşlar :) Örnek bir video veya görsel işine gelirsek böyle şeyler için gerçekten vaktim yok ve bu işlerin video ile öğrenileceğini sanmıyorum.Ama bildiğim bir konuda takılan arkadaşlar olursa vakit oldukça elimden geldiğince sorularını yanıtlamaya çalışırım
Tekrardan teşekkürler incelicem bende bakalım bir şeyler yakalarım belki :)
 
Reklam
Üst Alt