Jump to content

V3ct0r

Administrators
  • Content Count

    2,889
  • Joined

  • Last visited

  • Days Won

    519

Everything posted by V3ct0r

  1. Вот гайд по рейтам сервера. Он на английском, но, думаю, все будет понятно. Позже переведу на русский язык.
  2. V3ct0r

    IP Changer

    @Rinor Here you are Rinor ServerSet.zip
  3. V3ct0r

    WIP Website

    I don't have, sorry. You should start to learn HTML and CSS (and maybe JavaScript). It is easy. If you don't do anything you'll end up with nothing
  4. V3ct0r

    WIP Website

    @Anthoni do you mean design (appearance)? It looks like Bootstrap You have to make up HTML template by yourself using that framework.
  5. Если ввести некорректный пароль (не в МД5 и верхнем регистре), то сервер примет пароль 123456
  6. Речь про авторизацию в игре (вход на аккаунт)? Тогда прошу прощения, я невнимательно прочитал вопрос.
  7. Пароль надо шифровать с помощью Этой программы GroupServer.exe, GateServer.exe и AccountServer.exe судя по скриншоту запустились нормально
  8. V3ct0r

    IP Changer

    @Rinor It is only for x64 system. Tell server name, region and address
  9. V3ct0r

    Mob x Mob

    For example, let's make each Forest Spirit (id: 103) fight with other. First of all, we have to write custom AI for Forest Spirits: ai.lua: function ai_forest_spirit(cha, target) if (target == nil) then -- Searching targets local m = {} local r = GetChaChaseRange(cha) m[0], m[1], m[2], m[3] = GetChaSetByRange(cha, 0, 0, r, 0) -- Select target for id, monster in m do if (monster ~= nil) then local hp = Hp(monster) local id = GetChaTypeID(monster) if (hp > 0 and id == 103) then -- Found Forest spirit. Attack it! SetChaTarget(cha, monster) end end end else -- Attack target if (Hp(target) > 0) then local skill_id = select_skill(cha) ChaUseSkill(cha, target, skill_id) else SetChaTarget(cha, 0) end end end ID of our custom AI will be 32 function ai_loop(c) local t = GetChaTarget(c) local ai_type = GetChaAIType(c) if (ai_type == 32) then ai_forest_spirit(c, t) return end -- Original part of function ... end then go to functions.lua and edit function is_friend(cha1, cha2) function is_friend(cha1, cha2) if (GetChaAIType(cha1) == 32 or GetChaAIType(cha2) == 32) then return 0 end -- Original part of function ... end Now we have to set AI type of Forest Spirits as 32 (in characterinfo.txt) Result:
  10. Как известно, полную карту имеют только основные регионы (Аскарон, Магический океан и Великий синий океан). В данной статье я расскажу и покажу как можно сделать полную карту для любого региона и местности: Когда игрок нажимает кнопку "Карта" под миникартой, чтобы открыть полную карту местности, клиент отправляет серверу пакет с запросом. Сервер читает этот пакет, решает, имеет ли регион, в котором в данный момент находится клиент, полную карту, и отправляет ответ клиенту. Если ответ "положительный", то клиент открывает игроку большую карту. Если "отрицательный", то игрок получает в систему сообщение "Эта местность не имеет полной карты": Наша задача заключается в том, чтобы добавить в GameServer.exe карты, которые должны иметь полную карту местности. Нам понадобится: Отладчик OllyDbg v1.10; GameServer.exe (Я буду работать с GameServer из сборки PKO 1.38); Внимательность и терпение Редактируем GameServer.exe: 1) Запустите GameServer.exe. Затем запустите OllyDbg. В OllyDbg выполните команду File => Attach. В окошке "Select process to attach" выберите процесс Вашего GameServer.exe. Откроется окно "CPU" отладчика: 2) В панели инструментов нажмите кнопку "E" () или сочетание клавиш Alt + E. Появится окно "Executable modules". В нем выберите модуль "GameServ": Откроется окно "CPU" для модуля "GameServ". Правым кликом вызовите контекстное меню и выберите команду Analysis => Analyse code (сочетание клавиш ALT + A) 3) Перейдите по адресу 0x005B25A4. Для этого выполните команду Go to => Expression из контекстного меню: В появившемся окне "Enter expression to follow" введите значение "0x005B25A4" и нажмите кнопку "ОК" В результате Вы должны оказаться на адресе 0x005B25A4: 4) Теперь Вам нужно ввести названия карт для которых требуется сделать полную карту местности. Список стандартных карт: garner — Аскарон magicsea — Магический Океан darkblue — Великий Синий Океан lonetower — Одинокая башня eastgoaf — Серебрянные шахты, заброшенные шахты, логово черного дракона, логово черного дракона 2 secretgarden — Сад Эдель darkswamp — Темная топь abandonedcity — Забытый Город abandonedcity2 — Забытый Город 2 abandonedcity3 — Забытый Город 3 puzzleworld — Мир Демонов puzzleworld2 — Мир Демонов 2 teampk — Арена jialebi — Небеса, база флота, остров сокровищ, остров скелетов garner2 — Серебряный Хаос hell* — абаддоны guildwar — Священная война guildwar2 — Маленькая священная война leiting2 — Мираж Громограда shalan2 — Мираж Шайтана binglang2 — Мираж Ледыни yschurch — Церковь 07xmas — 2007 Новогодняя деревня sdBoss — Остров Боссов 07xmas2 — Снежная война prisonisland — Тюрьма winterland — Остров Зимы mjing1 — 1-ый край Аврор mjing2 — 2-ой край Аврор mjing3 — 1-ый край Тьмы mjing4 — 2-ой край Тьмы starena* — Арены heilong — Сундук черного дракона darkhouse — Дом тьмы mingyun — Комната судьбы PKmap — Новая арена Для примера, я сделаю полные карты местности для Острова Зимы (winterland), Темной топи (darkswamp) и Забытого Города 1 (abandonedcity) Выделите достаточное количество байт. Например, для того, чтобы закодировать "winterland" нужно 11 байт (10 байт символы; 1 байт - нулевой, конец строки). Затем в контекстном меню выберите команду Binary => Edit (CTRL + E) Появится окошко "Edit code at 005B25A4". В нем введите "winterland" и нажмите кнопку "ОК" В результате получится что-то вроде этого: Проанализируйте код (Analysis => Analyse code или сочетание клавиш ALT + A): Выполните данное действие для всех требуемых карт: 5) Итак, мы записали 3 строки: winterland по адресу 0x005B25A4 darkswamp по адресу 0x005B25AF abandonedcity по адресу 0x005B25B9 Запомните эти адреса. У Вас они могут отличаться. 6) Теперь Вам для каждой карты надо написать код, который добавит ее в список карт, имеющих полную карту местности: PUSH Ширина карты (x) PUSH Длина карты (y) PUSH Адрес строки, в которой находится название карты MOV ECX,DWORD PTR SS:[EBP-14] ADD ECX,10A4 CALL 0x005551A0 (!) Ширина и длина карты в шестнадцатеричной (HEX) системе счисления. Например, для Острова Зимы код будет выглядеть так: PUSH 898 PUSH 708 PUSH 0x005B25A4 MOV ECX,DWORD PTR SS:[EBP-14] ADD ECX,10A4 CALL 0x005551A0 Для Темной топи: PUSH 220 PUSH 5D8 PUSH 0x5B25AF MOV ECX,DWORD PTR SS:[EBP-14] ADD ECX,10A4 CALL 0x005551A0 Для Забытого города: PUSH 180 PUSH 180 PUSH 0x005B25B9 MOV ECX,DWORD PTR SS:[EBP-14] ADD ECX,10A4 CALL 0x005551A0 Q: Как узнать размер карты? A: Открываем клиентский .map файл в HEX-редакторе: 4 байта, начиная с 4-го, отвечают за ширину, а 4 байта, начиная с 8-го, - за длину. 0000089816 = 220010 0000070816 = 180010 Получается, что карта "Остров Зимы" (winterland) имеет размеры 2200 x 1800 Итак, записываем код. Я буду записывать его с адреса 0x005B25CA. Этот адрес так же надо запомнить. Щелкаем двойным кликом по строке, которая соответствует данному адресу. Появляется окошко "Assemble at 5B25CA". В него забиваем первую инструкцию: PUSH 898 и нажимаем кнопку "ОК" Получаем: затем PUSH 708 и так далее: Выполняем данное действие для всех требуемых карт: 7) Затем нужно задействовать наш код. Идем по адресу 0x004ED656 и заменяем PUSH 1000 на JMP 0x005B25CA Помните я просил запомнить адрес 0x005B25CA? У Вас он может отличаться. Было: Стало: 8) Далее нужно вернуться к нашему коду в конце и дописать PUSH 1000 JMP 0x004ED65B На этом редактирование GameServer.exe закончено 9) Теперь Вам нужно сохранить изменения. Для этого вызовите команду контекстного меню Copy to executable => All modifications: Появится окошко "Copy selection to executable file". В нем нажимаем кнопку "Copy all". После этого появится окно "File <Путь до Вашего GameServer.exe>". Закрываем его. В окне "File changed" нажимаем кнопку "Yes" и указываем название файла, в который нужно сохранить. 10) После этого нужно протестировать модифицированный GameServer.exe и убедиться, что все работает как надо.
  11. @Lucky 1) Open GameServer.exe in OllyDbg; 2) Select module GameServer (Alt + M); 3) Right click on form with asm code -> Analysis -> Analyse code (Ctrl + A); 4) Then go to address 0x00568CA7 (Ctrl + G); 5) Select code from address 0x00568CA7 to 0x00568CB5. Right click on selection -> Binary edit -> Fill with NOPs: 6) Right click on form with asm code -> Copy to executable -> All modifications. Done. We have deleted code that calls captcha on client.
  12. @Lucky Sure, I will explain it to you tomorrow
  13. @Lucky I use OllyDbg to patch .exe's and IDA Pro to explore them. Also you need knowledge in assebmler language. @qdaxfa ok, let me know if any issues with captcha.
  14. @qdaxfa Do you can upload your GameServer.exe?
  15. @NMS3RR BOSSAYSJ[ID босса] = Кол-во использований умения за жизнь босса. Можешь экспериментально это проверить.
  16. Need patch GameServer.exe to disable it.
  17. @Rinor Do your files have any modifications?
  18. @NMS3RR Без сложных модификаций GameServer.exe не получится.
  19. На serverdev в последнее время часто создают темы о взломе серверов. Доходит до получения контроля над машиной через RDP и слива сборок. В итоге оказывается что проблема была в веб-обвязке, в которую кто-то любезно положил backdoor.
  20. Лучше ничего не брать
  21. But other people don't have any problems with that GameServer
  22. V3ct0r

    Zero Files

    Try use Chinese characters for name
×
×
  • Create New...