- Kayıt
- 22 Aralık 2010
- Mesajlar
- 7.623
- Beğeniler
- 343
Merhaba arkadaşlar, bu konuda sizlere detaylı olarak gameserver editlemeyi anlatacağım.
Öncelikle ihtiyacımız olan programlar;
OllyDbg
Desimal Heksadesimal Dönüştüren Herhangi bir site
OllyDbg programını indirip çalıştırın. Ardından F3e basarak veya File>Open yaparak "SR_Gameserver.exe" yi seçin.
NOT:Herhangi bir olumsuzlukla karşılaşmamak için gameserver.exe'nin yedeğini almayı unutmayın.
Açılması biraz zaman alabilir. Açıldıktan sonra karşınıza şöyle bir ekran gelecektir;
Adress Bulma;
Adressler komutların sol taraflarında yazan heksadesimal (16lık sayı sistemi) sayılardır. Şimdi örnek olarak Capture The Flag ödüllerini değiştirmeyi anlatacağım.
CTFde oyuncu birisini kestiği zaman otomatik olarak çantasına ICE TROPHY gelir. Bunu değiştirmek için bu kodun gerçekleştiği adresi bulacağız;
1. Bunun için ollydbg programında açtığımız gameserverin sol üst kutucuğunda herhangi bir yere sağ tıklayıp Searc For > All Reference String seçeneğini seçiyoruz.
Karşımıza çıkan pencereden en üst satıra tıklatıp klavyeden CTRL + F kombinasyonuyla arama menüsünü açıyoruz. Büyük harflerle TROPHY yazıp aratıyoruz.
Karşımıza ilk sonuç çıkacaktır. Çıkan sonuca sağ tıklayıp Copy To Clipboard > Adress seçeneğini seçip adresi kopyalıyoruz. Burada not defteri açıp kopyaladığımız ilk adresi oraya yapıştırın. Ve tekrar ollydbg programına geçip CTRL + L kombinasyonuyla sonraki sonuçları bulup onlarında adreslerini açtığınız not defterine kaydedin. Son sonucunda adresini kopyaladıktan sonra açtığımız Referance String penceresini kapatıyoruz ve ilk pencereye dönüyoruz.
Bu adresler;
00876070 ; Her kesilen kişi için verilecek ödülün adresi,
00876935 ; Her kazanan takıma verilecek ödülün adresi.
Son sonucunda adresini kopyaladıktan sonra açtığımız Referance String penceresini kapatıyoruz ve ilk pencereye dönüyoruz.
2. Öncelikle yeni bir ödül girişi yapmamız gerekiyor. Bunun için Sol üst kutucukta aşağılara inip komutların bittiği yerden itibaren herhangi boş bir adresi seçip CTRL + E tuşlarına basıyoruz. Örneğin global chat eklemek istiyorsak keep Size tikini kaldırıp ASCII satırına ITEM_MALL_GLOBAL_CHATTING yazıyoruz ve OK'a basıyoruz.
OK dedikten sonra boş adreslerin karşılarında şöyle kodlar çıkacaktır. Bu kodların en üstündekinin adresini (kırmızı dikdörtgen içerisinde) not defterimize yazıyoruz.
3. Verilecek ödülü oluşturmuş olduk. Şimdi sıra bu ödülü ICE_TROPHY ile değiştirmeye geldi. Yine sol üst pencerede CTRL + G tuşlarına basarak Searc For > All Reference String yaparak bulduğumuz adresslerden ilkini yapıştırıp OK Diyoruz.
Karşımıza ilk komutumuz geliyor.
Bulduğumuz satıra tıklayıp SPACE tuşuna basarak karşımıza çıkan komutu silip PUSH yazıp bir boşluk bıraktıktan sonra ödülü eklediğimiz adresi yazıyoruz. Ben PUSH 00AD8EF0 yazıyorum sizinki muhtemelen farklı olacaktır.
Değiştirdikten sonra Assemble tıklıyoruz. Program otomatik olarak bir sonraki satıra geçebilir, ona dokunmadan Close tıklıyoruz.
Sonuç şu şekilde gözükecektir;
Eğer maçı kazanan takıma da aynı ödülü vermek istiyorsak bu işlemi Searc For > All Reference String ile bulduğumuz ikinci adrese de uyguluyoruz. Farklı bir ödül vermek istiyorsak 2. adımdaki gibi yeni bir ödül oluşturup 3. adımı uyguluyoruz.
Edit işlemlerimiz bittikten sonra sağ tıklayıp Edit > Select All seçeneğini seçiyoruz.
Daha sonra tekrar sağ tıklayıp Edit > Copy To Excutable seçeneğini seçiyoruz.
Karşımıza çıkan pencerede yine sağ tıklayıp Edit > Select All yapıyoruz ve ardından yine sağ tıklayıp Save File seçeceği ile editlemiş olduğumuz Gameserver'i kaydediyoruz.
Battle Arena Adressleri;
00669158 ; Guild ve Job Battle Arena kazanan takımın ödülü
0066915F ; Random ve Party Battle Arena kazanan takımın ödülü
00669173 ; Guild ve Job Battle Arena kaybeden takımın ödülü
0066917A ; Random ve Party Battle Arena kaybeden takımın ödülü
Mesela arena coin miktarını arttırıp 30 yapmak istiyorsak;
Bu adreste SPACE tuşuna bastığımızda komutunun sonundaki 7 sayısını 30a karşılık gelen heksadesimal sayı ile yani 1E ile değiştirmemiz gerekiyor
Aynı şekilde sro_client.exe dosyasınıda editleyebilirsiniz.
İşinize yarayabilecek diğer Adressler;
Öncelikle ihtiyacımız olan programlar;
OllyDbg
Desimal Heksadesimal Dönüştüren Herhangi bir site
OllyDbg programını indirip çalıştırın. Ardından F3e basarak veya File>Open yaparak "SR_Gameserver.exe" yi seçin.
NOT:Herhangi bir olumsuzlukla karşılaşmamak için gameserver.exe'nin yedeğini almayı unutmayın.
Açılması biraz zaman alabilir. Açıldıktan sonra karşınıza şöyle bir ekran gelecektir;
Adress Bulma;
Adressler komutların sol taraflarında yazan heksadesimal (16lık sayı sistemi) sayılardır. Şimdi örnek olarak Capture The Flag ödüllerini değiştirmeyi anlatacağım.
CTFde oyuncu birisini kestiği zaman otomatik olarak çantasına ICE TROPHY gelir. Bunu değiştirmek için bu kodun gerçekleştiği adresi bulacağız;
1. Bunun için ollydbg programında açtığımız gameserverin sol üst kutucuğunda herhangi bir yere sağ tıklayıp Searc For > All Reference String seçeneğini seçiyoruz.
Karşımıza çıkan pencereden en üst satıra tıklatıp klavyeden CTRL + F kombinasyonuyla arama menüsünü açıyoruz. Büyük harflerle TROPHY yazıp aratıyoruz.
Karşımıza ilk sonuç çıkacaktır. Çıkan sonuca sağ tıklayıp Copy To Clipboard > Adress seçeneğini seçip adresi kopyalıyoruz. Burada not defteri açıp kopyaladığımız ilk adresi oraya yapıştırın. Ve tekrar ollydbg programına geçip CTRL + L kombinasyonuyla sonraki sonuçları bulup onlarında adreslerini açtığınız not defterine kaydedin. Son sonucunda adresini kopyaladıktan sonra açtığımız Referance String penceresini kapatıyoruz ve ilk pencereye dönüyoruz.
Bu adresler;
00876070 ; Her kesilen kişi için verilecek ödülün adresi,
00876935 ; Her kazanan takıma verilecek ödülün adresi.
Son sonucunda adresini kopyaladıktan sonra açtığımız Referance String penceresini kapatıyoruz ve ilk pencereye dönüyoruz.
2. Öncelikle yeni bir ödül girişi yapmamız gerekiyor. Bunun için Sol üst kutucukta aşağılara inip komutların bittiği yerden itibaren herhangi boş bir adresi seçip CTRL + E tuşlarına basıyoruz. Örneğin global chat eklemek istiyorsak keep Size tikini kaldırıp ASCII satırına ITEM_MALL_GLOBAL_CHATTING yazıyoruz ve OK'a basıyoruz.
OK dedikten sonra boş adreslerin karşılarında şöyle kodlar çıkacaktır. Bu kodların en üstündekinin adresini (kırmızı dikdörtgen içerisinde) not defterimize yazıyoruz.
3. Verilecek ödülü oluşturmuş olduk. Şimdi sıra bu ödülü ICE_TROPHY ile değiştirmeye geldi. Yine sol üst pencerede CTRL + G tuşlarına basarak Searc For > All Reference String yaparak bulduğumuz adresslerden ilkini yapıştırıp OK Diyoruz.
Karşımıza ilk komutumuz geliyor.
Bulduğumuz satıra tıklayıp SPACE tuşuna basarak karşımıza çıkan komutu silip PUSH yazıp bir boşluk bıraktıktan sonra ödülü eklediğimiz adresi yazıyoruz. Ben PUSH 00AD8EF0 yazıyorum sizinki muhtemelen farklı olacaktır.
Değiştirdikten sonra Assemble tıklıyoruz. Program otomatik olarak bir sonraki satıra geçebilir, ona dokunmadan Close tıklıyoruz.
Sonuç şu şekilde gözükecektir;
Eğer maçı kazanan takıma da aynı ödülü vermek istiyorsak bu işlemi Searc For > All Reference String ile bulduğumuz ikinci adrese de uyguluyoruz. Farklı bir ödül vermek istiyorsak 2. adımdaki gibi yeni bir ödül oluşturup 3. adımı uyguluyoruz.
Edit işlemlerimiz bittikten sonra sağ tıklayıp Edit > Select All seçeneğini seçiyoruz.
Daha sonra tekrar sağ tıklayıp Edit > Copy To Excutable seçeneğini seçiyoruz.
Karşımıza çıkan pencerede yine sağ tıklayıp Edit > Select All yapıyoruz ve ardından yine sağ tıklayıp Save File seçeceği ile editlemiş olduğumuz Gameserver'i kaydediyoruz.
Battle Arena Adressleri;
00669158 ; Guild ve Job Battle Arena kazanan takımın ödülü
0066915F ; Random ve Party Battle Arena kazanan takımın ödülü
00669173 ; Guild ve Job Battle Arena kaybeden takımın ödülü
0066917A ; Random ve Party Battle Arena kaybeden takımın ödülü
Mesela arena coin miktarını arttırıp 30 yapmak istiyorsak;
Kod:
00669158 C64424 16 07 MOV BYTE PTR SS:[ESP+16],7
Kod:
00669158 C64424 16 07 MOV BYTE PTR SS:[ESP+16],1E
İşinize yarayabilecek diğer Adressler;
Kod:
Guild Union Chat Limit
SR_GameServer
005E81D2 837C24300C CMP DWORD PTR SS:[ESP+30],0C--193
005C4B42 837C24300C CMP DWORD PTR SS:[ESP+30],0C--188
SRO_Client
005AA0F8 3C0C CMP AL,0C--193
005AC538 3C0C CMP AL,0C--188
Cap level (SR_Gameserver)
004E52C7 80F97D CMP CL,7D--188
120 Mastery limit (SRO_Client)
006B5BF8 3C8C CMP AL,78--193
0069C7C8 3C78 CMP AL,78--188
120 level up limit (SRO_Client)
008C1162 80FB8C CMP BL,78--193
008A99A2 80FB6E CMP BL,6E--188
Max Mastery Limit (SRO_Client)
006C3A73 BE 68010000 MOV ESI,168--193
006A51BC BF 77010000 MOV EDI,177--188
240 EU Mastery Limit (SRO_Client)
--193
006C3A48 3D FA000000 CMP EAX,0F0
006C3A53 BE FA000000 MOV ESI,0F0
006BE747 3D FA000000 CMP EAX,0F0
006BE752 BF FA000000 MOV EDI,0F0
--188
006A5197 3D F0000000 CMP EAX,0F0
006A51A2 BF F0000000 MOV EDI,0F0
006AA498 3D F0000000 CMP EAX,0F0
006AA4A3 BE F0000000 MOV ESI,0F0
240 EU Mastery Limit (SR_Gameserver)
--193
005C0569 - E9 15FDE3FF JMP SR_GameS.00400283
00400283 E8 18251C00 CALL SR_GameS.005C27A0
00400288 8BC8 MOV ECX,EAX
0040028A 0FB6450C MOVZX EAX,BYTE PTR SS:[EBP+C]
0040028E 03C8 ADD ECX,EAX
00400290 894C240C MOV DWORD PTR SS:[ESP+C],ECX
00400294 DB4424 0C FILD DWORD PTR SS:[ESP+C]
00400298 DC1D 78A7BC00 FCOMP QWORD PTR DS:[BCA778]
0040029E DFE0 FSTSW AX
004002A0 81F9 FA000000 CMP ECX,0FA;mastery limit offset
004002A6 -0F8F20031C00 JG SR_GameS.005C05CC
004002AC - E9 DA021C00 JMP SR_GameS.005C058B
--188
0059c57A
0059c57B
0059c57C
0059c57D
0059c57E
0059c57F
0059c580
0059c581
0059c582
0059c583
0059c584
0059c585
0059c586
0059c587
0059c588
0059c589
0059c58A
Pet Level (SR_Gameserver)
004E27FB 807E5878 CMP BYTE PTR DS:[ESI+58],78--193
004D641B 807E586E CMP BYTE PTR DS:[ESI+58],6E--188
Party matching cap (SRO_Client)
--188
0073940E6A6E PUSH 6E(automatch)
007394536A6E PUSH 6E(automatch)
0073AFAE6A6E PUSH 6E(party match search min level write-able)
0073B0136A6E PUSH 6E(party match search max level write-able)
0073B0306A6E PUSH 6E(party match search default max level)
0073FA4C6A6E PUSH 6E(form party min level write-able)
0073FAAF6A6E PUSH 6E(form party max level write-able)
0073FACC6A6E PUSH 6E(form party default max level)
Levelup bugfix (SR_Gameserver)
004F19F2 7C24 JL SHORT SR_GameS.004F1A18--193
004E5471 817C2420 E00100>|CMP DWORD PTR SS:[ESP+20],1E0--188
-Not:004F19F5(10e=120/4)
Bir hesaptan maksimum kaç char açılacağı (SRO_Client)
0085DE67 80BE2C01000008 CMP BYTE PTR DS:[ESI+12C],4--188
Bir hesaptan maksimum kaç char açılacağı ( Sql prosedürlerinide değiştirmek gerekli)
--193
0040F5AC 83F81E CMP EAX,1E
0042AAA3 83F81E CMP EAX,1E
--188
0040F47C 83F804 CMP EAX,4
00429B83 83F804 CMP EAX,4
Görev Cap
00955134 8078207D CMP BYTE PTR DS:[EAX+20],6E--188
Job Level
0060DE69->JobCapCheck(default7)
Job Cezası (Saniye olarak)
004E816C 68803A0900 PUSH 93A80
Guild Cezası( Saniye olarak)
005C3F94 6880F40300 PUSH 3F480
009DF194 3D80F40300 CMP EAX,3F480
005C8B3D 6880F40300 PUSH 3F480
Son düzenleme: