1. Reklam


    1. joysro
      ledas
      jungler
      keasro
      zeus
      karantina

Vsro SR_Gamerserver Assembly Edit [OllyDbg]


  1. Collapse

    Collapse   asistan rank8

    Kayıt:
    22 Aralık 2010
    Mesajlar:
    7.287
    Beğenilen Mesajlar:
    165
    Ödül Puanları:
    73
    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;

    Screenshot_1.png

    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.

    Screenshot_2.png

    Screenshot_3.png

    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.

    Screenshot_4.png

    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.

    Screenshot_5.png

    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.

    Screenshot_6.png

    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.

    Screenshot_7.png

    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.

    Screenshot_8.png

    Karşımıza ilk komutumuz geliyor.

    Screenshot_9.png

    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.

    Screenshot_11.png

    Değiştirdikten sonra Assemble tıklıyoruz. Program otomatik olarak bir sonraki satıra geçebilir, ona dokunmadan Close tıklıyoruz.

    Screenshot_10.png

    Sonuç şu şekilde gözükecektir;

    Screenshot_12.png

    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.

    Screenshot_13.png

    Daha sonra tekrar sağ tıklayıp Edit > Copy To Excutable seçeneğini seçiyoruz.

    Screenshot_14.png

    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.


    Screenshot_15.png
    Screenshot_16.png

    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
    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

    Screenshot_17.png

    Kod:
    00669158     C64424 16 07              MOV BYTE PTR SS:[ESP+16],1E
    Aynı şekilde sro_client.exe dosyasınıda editleyebilirsiniz.

    İş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: 20 Nisan 2016
  2. Collapse

    Collapse   asistan rank8

    Kayıt:
    22 Aralık 2010
    Mesajlar:
    7.287
    Beğenilen Mesajlar:
    165
    Ödül Puanları:
    73
  3. BurakSerit

    BurakSerit www.burakserit.com rank8

    Kayıt:
    22 Ağustos 2010
    Mesajlar:
    356
    Beğenilen Mesajlar:
    38
    Ödül Puanları:
    38
    Meslek:
    Producer&DJ
    Hocam tane tane miss gibi anlatmışsın eline koluna emeğine sağlık. Sakin bir kafayla okuyup uygulamak gerekli. Anlamadığım tek şey şu oldu ICE TROPHY ödülü demişsin. Bu CTF 'de bulunan sabit ödül oluyor demi? Yani biz o ödül 'ün yerine farklı bir ödül editliyoruz bu şekilde.
     
  4. Collapse

    Collapse   asistan rank8

    Kayıt:
    22 Aralık 2010
    Mesajlar:
    7.287
    Beğenilen Mesajlar:
    165
    Ödül Puanları:
    73
    CTF de birini kestiğin zaman çantana gelen Ticket. Event So-Ok'a 10 tane götürürsen elixir, pot, alchemy stone vs veriyor.
    [​IMG]
     
    BurakSerit bunu beğendi.
  5. BurakSerit

    BurakSerit www.burakserit.com rank8

    Kayıt:
    22 Ağustos 2010
    Mesajlar:
    356
    Beğenilen Mesajlar:
    38
    Ödül Puanları:
    38
    Meslek:
    Producer&DJ
    Anladım hocam, tahmin ettiğim gibi.
    Uzun bir edit süresi gerekecek, bakalım nasıl olacak :)