V3ct0r 2,117 Report post Posted April 18, 2016 Как известно, полную карту имеют только основные регионы (Аскарон, Магический океан и Великий синий океан). В данной статье я расскажу и покажу как можно сделать полную карту для любого региона и местности: Когда игрок нажимает кнопку "Карта" под миникартой, чтобы открыть полную карту местности, клиент отправляет серверу пакет с запросом. Сервер читает этот пакет, решает, имеет ли регион, в котором в данный момент находится клиент, полную карту, и отправляет ответ клиенту. Если ответ "положительный", то клиент открывает игроку большую карту. Если "отрицательный", то игрок получает в систему сообщение "Эта местность не имеет полной карты": Наша задача заключается в том, чтобы добавить в 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 = 2200100000070816 = 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 и убедиться, что все работает как надо. 4 Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
pirate 2 Report post Posted September 4, 2016 Вектор, вы вдоль и поперёк изучили при помощи ольки game.exe? Пожалуйста всё что знаете/сделали напишите мне в лс. Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted September 5, 2016 21 час назад, pirate сказал: Вектор, вы вдоль и поперёк изучили при помощи ольки game.exe? Пожалуйста всё что знаете/сделали напишите мне в лс. Все, что я знаю и сделал, я выкладываю здесь и выкладывал на МД Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
pirate 2 Report post Posted September 5, 2016 1 час назад, V3ct0r сказал: Все, что я знаю и сделал, я выкладываю здесь и выкладывал на МД В нехороших целях умете использовать game.exe? Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted September 6, 2016 13 часа назад, pirate сказал: В нехороших целях умете использовать game.exe? В "нехороших" целях это в каких? В любом случае, я не собираюсь рассказывать про уязвимости. Иначе нехорошие люди начнут портить жизнь администраторам игровых серверов и обычным игрокам. У нас есть идея создать раздел для проверенных пользователей и администраторов серверов, в котором будут выкладываться и обсуждаться уязвимости и критические баги. Когда уязвимость будет исправлена мы выкладываем ее решение в открытый доступ. Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
WVWMK 121 Report post Posted September 6, 2016 2 минуты назад, V3ct0r сказал: В "нехороших" целях это в каких? В любом случае, я не собираюсь рассказывать про уязвимости. Иначе нехорошие люди начнут портить жизнь администраторам игровых серверов и обычным игрокам. У нас есть идея создать раздел для проверенных пользователей и администраторов серверов, в котором будут выкладываться и обсуждаться уязвимости и критические баги. Когда уязвимость будет исправлена мы выкладываем ее решение в открытый доступ. Хорошая идея. Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
pirate 2 Report post Posted September 6, 2016 12 часа назад, V3ct0r сказал: В "нехороших" целях это в каких? В любом случае, я не собираюсь рассказывать про уязвимости. Иначе нехорошие люди начнут портить жизнь администраторам игровых серверов и обычным игрокам. У нас есть идея создать раздел для проверенных пользователей и администраторов серверов, в котором будут выкладываться и обсуждаться уязвимости и критические баги. Когда уязвимость будет исправлена мы выкладываем ее решение в открытый доступ. К этому я и клоню, ведь дело в том что через game.exe можно что угодно рисовать... а мне брать и изучать game.exe в ольке или ида слишком уж много времени уйдёт, здесь как выход получается брать исходники и создавать своё, но если и будет релиз, то будет mmorpg схожая на пиратию Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted September 6, 2016 @pirate не беспокойтесь, через Game.exe ничего нельзя рисовать. Если что и изучать в плане безопасности, так это сервер. Например, есть пара SQL-инъекций: одна в AccountServer.exe, вторая в GroupServer.exe, но мы знаем как их исправить. Мы отходим от темы топика. Все вопросы связанные с безопасностью в соответствующий топик, пожалуйста. 1 Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
Mesut 28 Report post Posted November 6, 2021 how about the game.exe 1.36 pls i need offset line Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted November 10, 2021 On 11/6/2021 at 1:43 PM, Mesut said: how about the game.exe 1.36 pls i need offset line What specific offset are you interested in? (Какое смещение Вас интересует?) Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites