Обращаю внимание

Всем привет.

Обращаю ваше внимание, что все материалы касательно новостей PWI публикуются теперь на смежном ресурсе Новости PWI. Добро пожаловать.

Данный сайт предназначен исключительно адресам и смещениям для PWI. Поэтому информация, выходящая за рамки означенной темы, отныне публикуется на вышеуказанном сайте.

Спасибо!

Актуальные оффсеты и адреса для PWI: War Front

11 ноября 2015 года на PWI был установлен новый аддон: War Front.

Предлагаю вашему вниманию список актуальных смещений и постоянных адресов для последней на данный момент версии клиента Perfect World International.

base_address = 0xDA433C;
game_adress = 0xDA4AE4;
packet_address = 0x7B8970;
gui_address = 0x9DD9F0;

skill_address = 0x491470;
AutoAttack = 0x7EF0D0;

Autopath = 0x457E00;
walk1 = 0x4A3860;
walk2 = 0x4A9DD0;
walk3 = 0x4A3E70;

IDYES = 0xD48780;
IDCANCEL = 0xD24DDC;
IDOK = 0xD2F4E4;

name = 0x6f4;
class_id = 0x6F8;
hp = 0x4CC;
max = 0x520;
mp = 0x4D0;
max_mp = 0x524;
lvl = 0x4C4;
RunSpeed = 0x534;
Coins = 0x5A8;
Catshop_status = 0x688;
Meditationflag = 0x780;
Inventory_str = 0x1060;
Action_str = 0x14C0;
Quest_str = 0x14C8;
Skill_str = 0x14EC;

target_wid = 0x5A4;
id_offset = 0x4B8;
Clan_ID = 0x694;

Buffs_array = 0x390;
Buffs_Count = 0x398;

PWI Arc-код: Sparkling Treasure Trove

Код для получения пака Sparkling Treasure Trove: GWv9yyGa. Истекает 7 октября.

Данный пак связан с эвентом Smoke Over Archosaur. Обменивайте Sparkling Crystals с эвента на награду из этого пака.

Sparkling Treasure Trove

Код можно активировать 4 раза на один аккаунт. Связано это с тем, что каждую награду из пака можно вытянуть только определенное количество раз. И если вы исчерпали лимит, то можете активировать код на другом персе этого же аккаунта.

Двойной общий банк

Если на вашем аккаунте ПВИ были персы с объединяемых серверов, и на каждом из серверов был открыт общий банк, то на новом сервере вы получили увеличенный двое общий банк.

Сделано это было, как не трудно догадаться, для того, чтобы при объединении вещи в общих банках не потерялись и всем им хватило места.

Смекнув про это, люди кинулись на второй из объединяемых серверов, создали перса и сделали ему общий банк, чтобы в будущем иметь более ёмкий.

Однако, в итоге произошла оказия, и положить вещи в новый расширенный общий банк стало проблематично. Забрать — пожалуйста, а положить — хренушки.

В итоге ПВИ проблему так и не смогли побороть (а может просто не стали заморачиваться) и на форуме всплыла переписка между пользователем и службой поддержки, где со стороны последней была предложения форма для заполнения для решения проблемы общего банка.

Когда я это дело увидел, то подумал, что данная проблема будет решена индивидуально, и теперь двойной общий банк будет работать как надо, однако всё оказалось несколько иначе.

Заполнив форму, вас выловит в игре ГМ и вернет стоимость камня общего банка по актуальному курсу голда.

Да-да. Такое решение.

А про двойной общий банк придется забыть. Хотя… Всплывала информация, что кто-то умудрялся его расширить «своими силами».

Ну и собственно, сам ответ службы поддержки:

«Hello,

Thank you for your report. Unfortunately, there had been some issues with the account stash for users that had purchased a stash stone to have it expanded from the server merge. If you had one purchased for this issue, please provide us with some organized information listed below, so can investigate further for any needed recoveries to help for this situation.

Account/email that made the purchase:
Character/server that received the stash stone:
Estimated time/date of stash stone purchase:

Regards,
Sailor Mu
Game Master
Perfect World Entertainment»

Актуальные оффсеты и адреса для PWI: Riptide

19 августа 2015 года на PWI вышел новый аддон — Riptide. В связи с его выходом, слетели адреса и многие оффсеты.

Ниже в списке некоторые из актуальных на данный момент:

base_address = 0xd56b8c;
game_adress = 0xd5732c;
packet_address = 0x79D330;
gui_address = 0x9A1490;

skill_address = 0x490120;
AutoAttack = 0x7D33B0;

Autopath = 0x457030;
walk1 = 0x4A25B0;
walk2 = 0x4A8970;
walk3 = 0x4A2BC0;

IDYES = 0xCFC73C;
IDCANCEL = 0xCDA02C;
IDOK = 0xCE46FC;

ingame = 0xD56F48;
online = 0xD6B7A0;

name = 0x6e8;
class_id = 0x6EC;
hp = 0x4CC;
max = 0x520;
mp = 0x4D0;
max_mp = 0x524;
lvl = 0x4C4;
RunSpeed = 0x534;
Coins = 0x5A8;
Catshop_status = 0x688;
Meditationflag = 0x774;
Inventory_str = 0xFA0;
Action_str = 0x1400;
Quest_str = 0x1408;
Skill_str = 0x142C;

target_wid = 0x5A4;
id_offset = 0x4B8;
Clan_ID = 0x694;

Buffs_array = 0x390;
Buffs_Count = 0x398;

Два новых кода для PWI: Explorer’s Kit и Scout’s Kit

ПВИ анонсировали два кода на неделю:

wm1eTeDk — Scout’s Kit
g3HyAlzr — Explorer’s Kit

Хорошее подспорье для новичков и твинков в виде хирок, гиперов, камней расширения инвентаря и банка.

Активируем через клиент Arc’а либо по ссылке — https://www.arcgames.com/ru/redeem

Присылают привязанные тикеты, но после обмена у НПС Assistant Wang Tsai (рядом с банкиром крупного города) получаем:

explorer kit

scout kit

Открываем или продаем. Особо ушлые, не теряясь, активируют коды на всех твинках и новых акках.

По мимо прочего, на адрес электронной почты, на который зарегистрирован аккаунт, приходит индивидуальный код.

PW holy

Пак неплох, но не более того, ибо всё временное: хирки, колокол телепорта, Advanced Auto Recovery Stone и т.п.

Только персональный код не у всех работает, потому как ПВИшники тупанули и прислали некоторым код от Невервинтера (одна из игр PWE) вместо PWI.

Поиск адреса для инжекта автоатаки в PW

Приветствую всех.

В этой небольшой статье мы разберем с вами способ нахождения адреса, по которому мы и будем производить инжект автоатаки.

Кто-то использует автоатаку через пакеты. Но и инжектный способ имеет право на существование. Его и рассмотрим.

Для начала сам инжект. На момент публикации данной статьи он полностью рабочий и выглядит так:

pushad
mov edx, address
call edx
popad

где вместо address — шестнадцатеричный адрес вашего клиента игры, который мы и будем искать ниже.

Для поиска нам вновь понадобится ollydbg (http://www.ollydbg.de/). Если вы не знаете как прицепить к нему клиент игры и войти в модуль elementc, то перейдите к статье Как найти walk-адреса для инжекта движения PW и прочтите первые шаги.

Прицепили клиент, перешли в нужный модуль. Получили такой результат:
Olly elementc module

Нажимаем правой кнопкой мыши в главном окне ollydbg, переходим в меню Search for — Sequence of commands (или сочетание Ctrl + S).

В окне для поиска вводим команды:
NOP
NOP
NOP
NOP
NOP
NOP
PUSH ESI
PUSH 1

sequence

Жмем Find.
firstscan

Ищем блок искомых команд, после которых идет вызов подпрограммы (Call).

Жмем Ctrl + L (искать далее с теми же параметрами поиска).

secondscan

Теплее. Call следует за нашим блоком команд, которые мы указали в поиске. Но это не то. Куча заNOPленных строк. В искомом участке кода их меньше.

Ctrl + L. Нашли новый участок кода.

third scan

Адрес команды PUSH ESI — и есть искомый адрес для инжекта функции автоатаки. То есть 0x7C5470.

Как проверить еще до момента инжекта, что это действительно он?

Брейкпоинтом. То есть мы говорим отладчику: «Друг, меня вот эта команда интересует. Если вдруг программа (игра) решит выполнить её, то ты скажи мне об этом!». Если эта команда начнет выполняться, то отладчик укажет нам на это, а игру поставит на паузу (заморозит).

Поставим брейкпоинт на команду PUSH ESI и посмотрим, начнет ли игра её выполнение, если мы попробуем пнуть кого-нибудь автоатакой.

Выделяем в Olly строку PUSH ESI и нажимаем клавишу F2. Вы увидите, что адрес 7C5470 подсветился красным. При срабатывании мы установили на него точку останова программы.

breakpoint

Переходим в игру и дважды кликнем на каком-нибудь мобе/персе, чтобы перс побежал его атаковать автоатакой.

После попытки удара Олли вылезет на первый план, а справа снизу увидим надпись Paused на желтом фоне. Сработал брейкпоинт, окно с игрой заморожено.

brealpointenabled

Таким образом мы видим, что данный адрес имеет непосредственное отношение к автоатаке, и мы не ошиблись. Нажмем F9, чтобы разморозить окно ПВ, иначе нас дисконнектнет. Нажмем F2 еще раз на строке с командой PUSH ESI, чтобы снять брейкпоинт.

Plugins — Detachme — Detachme, чтобы отцепить Олли от игры без закрытия процесса последней.

Таким образом, наш инжект автоатаки примет окончательный вид:

pushad
mov edx, 7C5470
call edx
popad

Находим адрес для GUI-функции PW

Всем привет.

В данной статье рассмотрим поиск адреса функции для работы с GUI игры. С помощью этой функции вы можете программно взаимодействовать с элементами игры: нажимать на различные кнопки, вводить текст в соответствующие поля и т.п.

Для поиска нам понадобится Ollydbg (http://www.ollydbg.de/).

Запускаем ПВ, заходим на персонажа, запускаем Олли.

Далее нам надо прицепить процесс PW к отладчику, а затем перейти в нужный нам модуль игры. Если это вызывает у вас затруднения, то из статьи Как найти walk-адреса для инжекта движения PW вы узнаете как это проделать. Позвольте не описывать под копирку все тоже самое, поэтому просто следуйте тамошним инструкциям.

Вот то, что должно у нас получиться:
Olly elementc module

Отлично, можем двигаться дальше.

Нажимаем правой кнопкой мыши в главном окне программы, переходим в меню Search for — Sequence of commands (или нажимаем Ctrl + S).

В окошке вводим последовательность команд, чтобы найти нужный нам участок кода из которого мы узнаем адрес.
Вводим:
NOP
NOP
NOP
PUSH EBX
PUSH ESI
MOV ESI,DWORD PTR SS:[ESP+C]
MOV EBX,ECX
PUSH EDI

sequence

Нажимаем «Find», а затем (при необходимости) Ctrl+L (продолжить поиск) пока не найдем следующий участок кода:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
PUSH EBX
PUSH ESI
MOV ESI,DWORD PTR SS:[ESP+C]
MOV EBX,ECX
PUSH EDI
MOV EDI,ESI
OR ECX,FFFFFFFF
XOR EAX,EAX
REPNE SCAS BYTE PTR ES:[EDI]

Участок кода бросается в глаза большим количеством NOP’ов и строкой OR ECX,FFFFFFFF.

Участок кода в Olly:
GUI Address

А теперь самое интересное:
адрес строки с командой «PUSH EBX» — и есть адрес GUI функции. Выделил на скрине эту строку.

В данном случае: GUI_Address = 0x98BC30

Всё просто.

Как проследить цепочку оффсетов в CheatEngine

Краткая памятка новичку.

Как легко и быстро найти изменившийся оффсет после обновления в PW?

Возьмем условный оффсет количества ХП. Допустим, в прошлой версии он у нас был равен XP = 0x4c4. В PW прошла обнова, и он у нас поменялся. Как я уже писал ранее, скорее всего он «уплыл» вперед на кратное 4-м число байт.

Открываем CheatEngine. Цепляем процесс PW.
Open PW Process
Далее нажимаем Add address manually. В появившемся окне напротив Pointer ставим галочку.
Add Address
Здесь мы будем задавать цепочку оффсетов. В данном случае — до смещения количества хп персонажа.

С чего начинается цепочка оффсетов? Правильно, с постоянного адреса, от которого смещения и пляшут. В данном конкретном примере мы можем начинать как с базового адреса, так и с гейм адреса.

Цепочка от базового адреса: BaseAddress + GameStruct + PersStruct + HP
Цепочка от гейм адреса: GameAddress + PersStruct + HP

Возьмем за начало базовый адрес.

В первое поле вводим актуальный базовый адрес.
Base Address
В поле выше вводим смещение к структуре игры — 1C.
Game Struct
Далее жмем Add Offset, чтобы добавить новое поле для нашей цепочки оффсетов.
Add Offset
Вводим смещение к структуре персонажа — 28.
Pers Struct
Вновь жмем Add Offset и вводим смещение к кол-ву здоровья — 4c4.
HP

Все. Мы построили цепочку. Сверху окна мы видим какое значение лежит в данной ячейке динамической памяти. У меня это «100» и это явно не количество ХП (ниже увидите реальное хп).
4c4

Помня, что оффсет наверняка сместился вперед, я прибавляю 4 к 4c4, просто нажав на кнопку «>» и получаю 4c8. Смотрю, что тут лежит: 20.
4c8
Это тоже не то. Опять жму «>» напротив поля со смещением ХП. Получаю смещение 4cc, которое указывает на ячейку в памяти, в которой лежит значение 5898.
4cc

Да, это искомое количество жизней персонажа.
Actual HP
То есть в нашем гипотетическом случае оффсет сместился на 8 байт вперед.

Нажимаем ОК. В рабочей области видим адрес ячейки, ее тип и содержимое.
Work Place

Чтобы в следующий раз все это не проделывать сначала, можете нажать Ctrl + Alt + S и сохранить.
Save

Новый оффсет в ПВ: таргет цели

Всем привет.

На ПВИ в обновлении v855 от 2 июня 2015 нам добавили интересную фишку: теперь мы можем видеть кого выделенный нами перс взял в таргет.

target selected

Говорить о полезности данной функции думаю не стОит. Да это и не входит в цель данной статьи.

Нам же интересно как найти данный оффсет.

Для этого есть несколько способов. Рассмотрим самый быстрый.

Начнем с того, что нам необходимо два персонажа. Либо вы заходите в два окна, либо просите кого-нибудь помочь.

Далее вам надо узнать ID этих двух персонажей. Через них мы будем искать смещение. Можете найти targetID (0X59C для текущей версии) и выделить себя, а затем второго перса, узнав тем самым необходимые нам ID этих персов. Если вам известен текущий для данной версии оффсет ID персов — это, конечно, будет отлично, но если вы не в два окна, а кто-то пришел вам помогать, то получится геморрой.

Итак, у нас есть два перса, есть их ID. ID первого = 2448783, ID второго = 3980927. У вас они будут свои!

Теперь перемещаемся персами в глухое место, где в округе не будет никого. Если такое место в мире найти затруднительно — зайдите в данж, например. Делать это необязательно. Можно всё проделать и в густонаселенной местности, но если наших персов кто-то выделит, то это слегка подпортит поиск.

Выделяем первым персом второго. Будем искать через второго перса. Кого он выделил.

Мы его выделяем, чтобы сервер передал нам информацию о персонаже в таргете. В том числе и кого он выделил.
Не выделив персонажа/моба — не узнаем кто у него в таргете!

Теперь выделяем вторым персонажем первого. Мы знаем, что у первого персонажа ID = 2448783. То есть можно с уверенностью сказать, что в таргете второго персонажа находится ID 2448783. Ищем его в Cheat Engine.

Смотрим, что у нас нашлось
First Scan

Пусть два зеленых (постоянных) адреса вас не смущают — это не то, что нам нужно. Отсеиваем адреса. Для этого меняем таргет второго игрока на известный нам ID. Второй известный нам ID — 3980927 — ID второго игрока. То есть выделяем им самого себя! У первого персонажа по-прежнему выделен второй персонаж.

В поле Value вводим ID второго игрока (3980927) и жмем Next Scan. Получаем:
Next Scan

У меня осталось два адреса. Я вижу, что их значением является ID второго игрока (3980927).

Теперь просто выделю вторым игроком первого (сменю таргет).
Third Step

Смотрим на столбец Value (актуальное значение). Значение второго адреса изменилось, а первого — нет. Так как таргет я сменил, а значение не поменялось — выкидываем его. Таким образом остается единственный адрес, который реагирует на изменение таргета второго игрока. То, что нужно! Кликаем по нему два раза, чтобы переместить адрес в рабочую область снизу.

Находясь в рабочем поле, нажимаем правой кнопкой по добавленном ранее адресу, выбираем Find out what accesses this address.
Find Out

Появился запрос дебаггера — соглашаемся.

Видим пустое окно, готовое отловить инструкции, обращающиеся к нашему адресу. Отлично. Переходим в игру и меняем таргет второму игроку. Смотрим на окно Cheat Engine.

Видим команду
final Step

… в которой до боли знакомое смещение 0x59C. Да, да, не что иное, как смещение для targetID.

Отсюда мы можем сделать вывод, что китайцы просто разлочили нам это смещение в структуре ближайших игроков.

К targetID первого персонажа в одноименной структуре, таким образом, можно обратиться примерно так (PWI): D3A8EC + 1c + 14 + 1c + 98 + 0 + 59c

Powered by WordPress