HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Öncelikle Merhabalar EgeÖzdemirden Alıntıdır EgeÖzdemirin Paylaştığı İle Bire Bir Kod Ve Eksiklik Yoktur Diğer Konularda Eksik Olan Kodlarda Vardır Bende Toparlayıp Paylaşmak İstedim Yanlış Anlamayın Benim Konum Değil Sadece İnsanların Yararına Paylaşıyorum Yöneticiler Her Hangi Bir Sorunda Kapatabilir Neyse Konuya Geçelim.
Şimdi 3 Tür Farklı Ch Kapanma Nedenleri Olabilir.
1= Game Taraflı
2= Sunucu Taraflı
3= ServerSide
Tabi bu 4-5 diye'de çıkabilir öncelikle ilk ch düştüğü zaman ne yapmamız gerek?
MySQL bootlog tablosunu açalım ch'nin düştüğü saat'e bakalım,baktıktan sonra
Syserr ve syslog'u açayım bunların içine girip en son yapılan işlem ne? eğer game taraflı ch düştüyse <shutdown> tarzında bir yazı olacaktır.
Game kaynak dosyasını yazan kişiler (YMİR) zaten güvenlik amacıyla "thecore_shutdown();" böyle bir fonksiyon oluşturmuş, yani siz mesela item_proto.sql'den bir itemi sildiniz ama bu ayritten mob_drop_item.txt'de var güvenlik amacıyla serverin çökmeme amacıyla "thecore_shutdown();" komudunu verdiriyor ve CH hiç açılmadan otomatik kapatıyor sistem.
Örnek fonksiyon ;
PHP:
if (decode_2bytes(data) != sizeof(TItemTable)) {
sys_err("item table size error");
thecore_shutdown();
return;
}
Bu tür taraflı ch kapanmalarında veya açılmadığı zaman hangi ch açılmıyorsa hemen oranın syserr ve syslog dosyalarına girin orada ne olduğu yazar.
CH ayritten saldırılardan dolayıda kapanabilir botnet saldırısı ddos attack gibi sürekli CH portuna paket gönderir ve o port iptal olur vefaf haline gelir Güzel yazılımsal bir firewall yazın CH portlarına 15 limit koyun ve 15 paket gönderdikten sonra karşı taraf bir daha paket gönderemesin.
Ve en büyük sorunumuz "game.core"
Game.core problemi birden bire ch'nin düşmesi ve bazen syserr-syslog hatta bootlog'a bile chnin düştüğünü yazmama problemidir.Aslında bu bir ch düşme sorunu değil direk o CH'nin çökmesi anlamına gelir, bu sorun herşeyden olabilir Game taraflı , quest taraflı , item_proto taraflı hatta hatırlarmısınız bilmem eski fileslerde Kafasız Savaşçı adlı bir boss mu slot mu artık neyse o vardı onu kesincede game.core veriyordu tabi o zaman syserr'e büyük ihtimal yazıyordur KILL:NPC kod vs diye ama 40K'ya geçmemle birlikte game.core veriyor ve hiçbir şekilde ne syserr ne syslog tutuyordu.
Ben kendi kendi game dosyamı (kendi dediğim mainline editlediğim dosyamı olacaktı ) FreeBSD 9.2'de compile ediyordum ama oyun sunucusu için yani serverimde FREEBSD 10.1 kullanıyordum ve game.core vermeye başladı bende syserr syslog göremeyince GDB ile game.core'yi debugger etmeye çalıştım.
Ama malesef FreeBSD 9.2'de compile ettiğim ve 10.1 kullandığım için debugger edemedim şu hatayı aldım;
PHP:
"/usr/game/cores/channel1/egegame.core" is not a core dump: File format is ambiguous
Farkettim ki hangi BSD versiyonunda compile ettiyseniz sadece onla debugger edebilirsiniz yani ben 9.2'ye geçiş yaptım.
Ve bundan sonrada ch düşmesi yaşamadım büyük ihtimal sunucu taraflıydı bir lib herhangibi bir versiyon bilmiyorum bu olay çok kapsamlı birşey ama eğer ki siz aynı Versiyonda compile edp çalıştırdığınız halde ch düşüyorsa yani game.core alıyorsanız.
FreeBSD'ye GDB yükleyin kurulum ;
PHP:
cd /usr/ports/devel/gdb/ && make install clean
Yükleme işlemi bittikten sonra eğer game.core verirse şu kodlarla açaçağız;
PHP:
gdb
cd /usr/game/cores/channel1 (Ben burada channel1 yaptım sizin hangi ch'niz düştüyse onu yazın.)
game game.core
core game.core
bt
quit
Makale daha önce zannetmiyorum ki kimse tarafından paylaşıldı ilk olsun dedim Türk forumları her anlamda gelişmeli.
CH Düşmesine sebeb olacak belirli nedenler; (Önerim : FreeBSD 9.2 Kullanın.)
PHP:
HACK_DETECD
CHECK POINT
/WAR -777777777
/DICE -777777777
KAFASIZ SAVAŞÇI
TİMER TRİGGER
QUEST TİMER İLE SÜREKLİ MYSQL_QUERY FONKSİYONU
Debugger edilmiş bazı game.core dosyaları ;
1 =
PHP:
#0 0x08156079 in CItem::GetValue (this=0x3adb0f00, idx=0) at item.cpp:957
957 long CItem::GetValue(DWORD idx)
[New Thread 29005500 (LWP 100508/game)]
[New Thread 29005200 (LWP 100503/game)]
[New Thread 29004f00 (LWP 100502/game)]
[New Thread 29004300 (LWP 100883/game)]
(gdb) bt
#0 0x08156079 in CItem::GetValue (this=0x3adb0f00, idx=0) at item.cpp:957
#1 0x081b123c in quest::item_has_flag (L=0x3af9bdc0) at questlua_item.cpp:155
#2 0x08363cba in luaD_precall (L=0x3af9bdc0, func=0x3b1cedd8) at ldo.c:249
#3 0x0836ba86 in luaV_execute (L=0x3af9bdc0) at lvm.c:637
#4 0x08363fad in resume (L=0x3af9bdc0, ud=0xffffa164) at ldo.c:337
#5 0x0836393b in luaD_protectedparser (L=0x3af9bdc0, z=0x8363f80, bin=-24220)
at ldo.c:462
#6 0x08363adb in lua_resume (L=0x0, nargs=1) at ldo.c:378
#7 0x08198952 in quest::CQuestManager::RunState (this=0xffffd940,
qs=@0x3a3982a4) at questlua.cpp:846
#8 0x081cebdf in quest::CQuestManager::Input (this=0xffffd940, pc=99118,
msg=0xffffa1fb "1") at questmanager.cpp:220
#9 0x08148f0f in CInputMain::QuestInputString (this=0x3a19d89c,
ch=0x309fb800, c_pData=0x3a753006) at input_main.cpp:1963
#10 0x0814f778 in CInputMain::Analyze (this=0x3a19d89c, d=0x3a19d800,
bHeader=<value optimized out>, c_pData=0x3a753006 "\0361")
at input_main.cpp:3166
#11 0x0813844b in CInputProcessor::Process (this=0x3a19d89c,
lpDesc=0x3a19d800, c_pvOrig=0x3a753000, iBytes=90,
r_iBytesProceed=@0xffffa734) at input.cpp:103
#12 0x08101933 in DESC::ProcessInput (this=0x3a19d800) at desc.cpp:313
#13 0x0825b3f4 in io_loop (fdw=0x29bd4840) at main.cpp:1012
#14 0x0825be51 in idle () at main.cpp:946
#15 0x0825d4ac in main (argc=1, argv=0xffffde08) at main.cpp:610
2 =
PHP:
#0 CHARACTER::GetName (this=0x30303631) at char.cpp:571
571 return m_stName.empty() ? (m_pkMobData ? m_pkMobData->m_table.sz
LocaleName : "") : m_stName.c_str();
[New Thread 29005500 (LWP 100892/game)]
[New Thread 29005200 (LWP 100885/game)]
[New Thread 29004f00 (LWP 100884/game)]
[New Thread 29004300 (LWP 100205/game)]
(gdb) bt
#0 CHARACTER::GetName (this=0x30303631) at char.cpp:571
#1 0x0815c31d in ITEM_MANAGER::SaveSingleItem (this=0xffffa844,
item=0x3cb85c00) at item_manager.cpp:453
#2 0x0815e3f4 in ITEM_MANAGER::Update (this=0xffffa844)
at item_manager.cpp:484
#3 0x0825aec3 in heartbeat (ht=0x297d0bb0, pulse=863981) at main.cpp:330
#4 0x0825b04f in idle () at main.cpp:929
#5 0x0825c70c in main (argc=1, argv=0xffffde08) at main.cpp:602
Not: EgeÖzdemirden Alıntıdır.
Bir Teşekkürü Çok Görmeyin
İyi Forumlar
Son düzenleme:
Öncelikle Merhabalar EgeÖzdemirden Alıntıdır EgeÖzdemirin Paylaştığı İle Bire Bir Kod Ve Eksiklik Yoktur Diğer Konularda Eksik Olan Kodlarda Vardır Bende Toparlayıp Paylaşmak İstedim Yanlış Anlamayın Benim Konum Değil Sadece İnsanların Yararına Paylaşıyorum Yöneticiler Her Hangi Bir Sorunda Kapatabilir Neyse Konuya Geçelim.
Şimdi 3 Tür Farklı Ch Kapanma Nedenleri Olabilir.
1= Game Taraflı
2= Sunucu Taraflı
3= ServerSide
Tabi bu 4-5 diye'de çıkabilir öncelikle ilk ch düştüğü zaman ne yapmamız gerek?
MySQL bootlog tablosunu açalım ch'nin düştüğü saat'e bakalım,baktıktan sonra
Syserr ve syslog'u açayım bunların içine girip en son yapılan işlem ne? eğer game taraflı ch düştüyse <shutdown> tarzında bir yazı olacaktır.
Game kaynak dosyasını yazan kişiler (YMİR) zaten güvenlik amacıyla "thecore_shutdown();" böyle bir fonksiyon oluşturmuş, yani siz mesela item_proto.sql'den bir itemi sildiniz ama bu ayritten mob_drop_item.txt'de var güvenlik amacıyla serverin çökmeme amacıyla "thecore_shutdown();" komudunu verdiriyor ve CH hiç açılmadan otomatik kapatıyor sistem.
Örnek fonksiyon ;
PHP:if (decode_2bytes(data) != sizeof(TItemTable)) { sys_err("item table size error"); thecore_shutdown(); return; }
Bu tür taraflı ch kapanmalarında veya açılmadığı zaman hangi ch açılmıyorsa hemen oranın syserr ve syslog dosyalarına girin orada ne olduğu yazar.
CH ayritten saldırılardan dolayıda kapanabilir botnet saldırısı ddos attack gibi sürekli CH portuna paket gönderir ve o port iptal olur vefaf haline gelir Güzel yazılımsal bir firewall yazın CH portlarına 15 limit koyun ve 15 paket gönderdikten sonra karşı taraf bir daha paket gönderemesin.
Ve en büyük sorunumuz "game.core"
Game.core problemi birden bire ch'nin düşmesi ve bazen syserr-syslog hatta bootlog'a bile chnin düştüğünü yazmama problemidir.Aslında bu bir ch düşme sorunu değil direk o CH'nin çökmesi anlamına gelir, bu sorun herşeyden olabilir Game taraflı , quest taraflı , item_proto taraflı hatta hatırlarmısınız bilmem eski fileslerde Kafasız Savaşçı adlı bir boss mu slot mu artık neyse o vardı onu kesincede game.core veriyordu tabi o zaman syserr'e büyük ihtimal yazıyordur KILL:NPC kod vs diye ama 40K'ya geçmemle birlikte game.core veriyor ve hiçbir şekilde ne syserr ne syslog tutuyordu.
Ben kendi kendi game dosyamı (kendi dediğim mainline editlediğim dosyamı olacaktı ) FreeBSD 9.2'de compile ediyordum ama oyun sunucusu için yani serverimde FREEBSD 10.1 kullanıyordum ve game.core vermeye başladı bende syserr syslog göremeyince GDB ile game.core'yi debugger etmeye çalıştım.
Ama malesef FreeBSD 9.2'de compile ettiğim ve 10.1 kullandığım için debugger edemedim şu hatayı aldım;
PHP:"/usr/game/cores/channel1/egegame.core" is not a core dump: File format is ambiguous
Farkettim ki hangi BSD versiyonunda compile ettiyseniz sadece onla debugger edebilirsiniz yani ben 9.2'ye geçiş yaptım.
Ve bundan sonrada ch düşmesi yaşamadım büyük ihtimal sunucu taraflıydı bir lib herhangibi bir versiyon bilmiyorum bu olay çok kapsamlı birşey ama eğer ki siz aynı Versiyonda compile edp çalıştırdığınız halde ch düşüyorsa yani game.core alıyorsanız.
FreeBSD'ye GDB yükleyin kurulum ;
PHP:cd /usr/ports/devel/gdb/ && make install clean
Yükleme işlemi bittikten sonra eğer game.core verirse şu kodlarla açaçağız;
PHP:gdb cd /usr/game/cores/channel1 (Ben burada channel1 yaptım sizin hangi ch'niz düştüyse onu yazın.) game game.core core game.core bt quit
Makale daha önce zannetmiyorum ki kimse tarafından paylaşıldı ilk olsun dedim Türk forumları her anlamda gelişmeli.
CH Düşmesine sebeb olacak belirli nedenler; (Önerim : FreeBSD 9.2 Kullanın.)
PHP:HACK_DETECD CHECK POINT /WAR -777777777 /DICE -777777777 KAFASIZ SAVAŞÇI TİMER TRİGGER QUEST TİMER İLE SÜREKLİ MYSQL_QUERY FONKSİYONU
Debugger edilmiş bazı game.core dosyaları ;
1 =
PHP:#0 0x08156079 in CItem::GetValue (this=0x3adb0f00, idx=0) at item.cpp:957 957 long CItem::GetValue(DWORD idx) [New Thread 29005500 (LWP 100508/game)] [New Thread 29005200 (LWP 100503/game)] [New Thread 29004f00 (LWP 100502/game)] [New Thread 29004300 (LWP 100883/game)] (gdb) bt #0 0x08156079 in CItem::GetValue (this=0x3adb0f00, idx=0) at item.cpp:957 #1 0x081b123c in quest::item_has_flag (L=0x3af9bdc0) at questlua_item.cpp:155 #2 0x08363cba in luaD_precall (L=0x3af9bdc0, func=0x3b1cedd8) at ldo.c:249 #3 0x0836ba86 in luaV_execute (L=0x3af9bdc0) at lvm.c:637 #4 0x08363fad in resume (L=0x3af9bdc0, ud=0xffffa164) at ldo.c:337 #5 0x0836393b in luaD_protectedparser (L=0x3af9bdc0, z=0x8363f80, bin=-24220) at ldo.c:462 #6 0x08363adb in lua_resume (L=0x0, nargs=1) at ldo.c:378 #7 0x08198952 in quest::CQuestManager::RunState (this=0xffffd940, qs=@0x3a3982a4) at questlua.cpp:846 #8 0x081cebdf in quest::CQuestManager::Input (this=0xffffd940, pc=99118, msg=0xffffa1fb "1") at questmanager.cpp:220 #9 0x08148f0f in CInputMain::QuestInputString (this=0x3a19d89c, ch=0x309fb800, c_pData=0x3a753006) at input_main.cpp:1963 #10 0x0814f778 in CInputMain::Analyze (this=0x3a19d89c, d=0x3a19d800, bHeader=<value optimized out>, c_pData=0x3a753006 "\0361") at input_main.cpp:3166 #11 0x0813844b in CInputProcessor::Process (this=0x3a19d89c, lpDesc=0x3a19d800, c_pvOrig=0x3a753000, iBytes=90, r_iBytesProceed=@0xffffa734) at input.cpp:103 #12 0x08101933 in DESC::ProcessInput (this=0x3a19d800) at desc.cpp:313 #13 0x0825b3f4 in io_loop (fdw=0x29bd4840) at main.cpp:1012 #14 0x0825be51 in idle () at main.cpp:946 #15 0x0825d4ac in main (argc=1, argv=0xffffde08) at main.cpp:610
2 =
PHP:#0 CHARACTER::GetName (this=0x30303631) at char.cpp:571 571 return m_stName.empty() ? (m_pkMobData ? m_pkMobData->m_table.sz LocaleName : "") : m_stName.c_str(); [New Thread 29005500 (LWP 100892/game)] [New Thread 29005200 (LWP 100885/game)] [New Thread 29004f00 (LWP 100884/game)] [New Thread 29004300 (LWP 100205/game)] (gdb) bt #0 CHARACTER::GetName (this=0x30303631) at char.cpp:571 #1 0x0815c31d in ITEM_MANAGER::SaveSingleItem (this=0xffffa844, item=0x3cb85c00) at item_manager.cpp:453 #2 0x0815e3f4 in ITEM_MANAGER::Update (this=0xffffa844) at item_manager.cpp:484 #3 0x0825aec3 in heartbeat (ht=0x297d0bb0, pulse=863981) at main.cpp:330 #4 0x0825b04f in idle () at main.cpp:929 #5 0x0825c70c in main (argc=1, argv=0xffffde08) at main.cpp:602
Not: EgeÖzdemirden Alıntıdır.
Bir Teşekkürü Çok Görmeyin
İyi Forumlar
Teşekkürler Ellerine Sağlık
Teşekkürler Ellerine Sağlık
İşinize Yaradıysa Ne Mutlu Hocam

Kod:
ACMD(do_chkapat)
{
thecore_shutdown();
}
thecore_shutdown'un başka bir kullanım şekli

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
Altın Konu
[C++] Prevent Ride in War (PvP) Maps
- Cevaplar
- 7
- Görüntüleme
- 2K
- Cevaplar
- 2
- Görüntüleme
- 262
Altın Konu
gül gibi exploit şeysi
- Cevaplar
- 59
- Görüntüleme
- 10K
- Cevaplar
- 65
- Görüntüleme
- 12K
