Re: Jade Dynasty Offsets, Base Address
Файл обновлен. Потихоньку буду добавлять остальные структуры.
Quote:
как ищутся массивы в памяти
трудно дать четкие рекомендации, - просто берем необходимый участок памяти, смотрим где и какие значения (интуитивно определяем :), постепенно идентифицируя
[thumb]http://img52.imageshack.us/img52/6774/36871747.png[/thumb]-- 2010-07-22, 05:14 --
Dinmaite
По поводу бота и в целом по JD: тема с оффсетами, адресами функций для инжекта и т.п. интересна? работать над данным материалом или нет? Насколько востребован бот к Jade Dynasty?
Re: Jade Dynasty Offsets, Base Address
Лично я пишу сейчас бота для ЖД, пишу что называется для себя (а мне особо многого не нужно, по крайней мере пока).
С функциями инжекта у меня проблем обычно нет, все что надо нахожу.
В поиске смещений массивов тоже продвинулся, решил искать не тупым способом через СЕ, а просматривая порядок получения того или иного значения выше по коду.
Работать в этом направлении или нет личное дело для каждого, хотя облегчило бы написание ботов для многих людей.
По поводу востребованности бота особо ничего не скажу, мне он нужен потому что нет желания тратиться на энергию для эспера (какоевое желание вероятно есть у большей части играющих).
Re: Jade Dynasty Offsets, Base Address
Dinmaite,
С JD не разбирался, но по аналогии с PW могу подсказать, что указатель на скилы лежит в структуре игрока вот тут: [BA] + $1C + $28 + ?? + $SkillNumber + $14 - это смещение для ID скила.
Могу предложить не профессиональный, но часто спасающий меня и самый по моему быстрый метод поиска смещений такой:
Т.к. мы знаем примерно где лежит скилл, то можем перебором ( for i = 0 to 0xFFFF step 0x04) найти недостающее нам смещение.
В PW при SkillNumber = 0 - лежит телепорт в город, это самый первый скилл в игре. В JD тоже что должно быть, возможно тот же телепорт. Узнай его ID и сравнивай каждое значение прочитанное в памяти с нужным тебе. Функа вроде MemoryPointer, как мне кажется, у тебя должна быть.
А в общем случае - анализ структуры игрока - это способ более долгий, но дающий более полную картину о структуре игрока, т.к. пока ты ищешь указатель на скилы - найдешь еще кучу всего. Cheat Engine тебе в помощь.
Dwar в шапке начал изучение структуры игрока, что то нашел уже. Дополняй. Посматривай в сторону PerfectWorld. Ее клиент давно уже по винтикам разобран. Принципиально у этих игр структура очень похожа.
Re: Jade Dynasty Offsets, Base Address
[BA] + $1C + $28 + $1244 + i + :: Skills array
$08: Id (dword, 4b)
$0C: Cool down (dword, 4b)
$10: Max cooldown (dword, 4b)
$14: Is available? (bool, 1b)
Re: Jade Dynasty Offsets, Base Address
Quote:
Originally Posted by Dinmaite
В поиске смещений массивов тоже продвинулся, решил искать не тупым способом через СЕ, а просматривая порядок получения того или иного значения выше по коду.
А можете по-подробнее объяснить?-- 2010-07-22, 15:42 --
Quote:
Originally Posted by Dwar
[BA] + $1C + $28 + $1244 + i + :: Skills array
$08: Id (dword, 4b)
$0C: Cool down (dword, 4b)
$10: Max cooldown (dword, 4b)
$14: Is available? (bool, 1b)
Значит все таки порядок "лежки" информации отличается. + $14 не ID :)
Но все равно, даже если делать 2 вложенных друг в друга перебора - можно найти быстро и удобно нужное значение. Общая структура в общем та же.:)
З.Ы. Ну должен же я как то отстоять свой способ %)
Re: Jade Dynasty Offsets, Base Address
так и в Perfect World'е по данному смещению не Id лежит, а максимальное время отката
Re: Jade Dynasty Offsets, Base Address
Перегрелся видимо... Все верно:
+$08 - ID
+$C - Уровень скила
+$10 - текущий кулдаун
+$14- максимальный кулдаун
дальше идет не понятная мне информация и видимо не особо нужная, т.к. название скила я так и не нашел как вытянуть... Только в распакованном elementdata видел названия скилов.
Ну в общем я понял - отличается структура. Не пойдет мой метод. Информация о количестве смещений только может пригодится для анализа на сколько глубоко нужно копать какой то адрес. Хотя и так видно указатель перед тобой или значение.
Re: Jade Dynasty Offsets, Base Address
Quote:
Originally Posted by krukovis
А можете по-подробнее объяснить?
хм, попробую.
Для начала я нашел функцию использования итемов из инвентаря (для инжекта).
Далее заметил что она требует 2 параметра собственно WID итема и номер ячейки в которой лежит итем. Тоесть для успешной работы мне нужно было знать в какой ячейке лежит итем.
Так как искать массивы я не умею, решил пойти иным путем. Меня заинтерисовала строка:
MOV EAX,DWORD PTR DS:[EDI+8],
в которой собственно в регистр EAX ложится значение WID. Естественно берется оно из массива данных инвентаря.
Далее прошелся вверх по коду найдя такие строки.
MOV EAX,DWORD PTR DS:[ECX]
LEA ECX,DWORD PTR DS:[ECX+EAX*4]
MOV ECX,DWORD PTR DS:[ECX+C]
MOV EAX,DWORD PTR DS:[ECX+114C]
MOV EAX,DWORD PTR DS:[ECX+28]
MOV ECX,DWORD PTR DS:[EAX+1C]
MOV EAX,DWORD PTR DS:[B03064]
(строки приведены в обратном порядке, с конца в начало, так как я "разматываю клубок" с конца.)
Тоесть собственно говоря путь к базовому адресу.
Фактически путь к массиву итемов в инвентаре
[ba]+1c+28+114c+c+i*4+
8 - WID;
Кроме WID меня ничего не интерисовало, поэтому не заморачивался.
Re: Jade Dynasty Offsets, Base Address
Да, так я и подумал.
Не знаю обращали внимание или нет. Что если посмотреть на память в СЕ [ba]+1c+28+114c+c+i*4+ 0 в DEC представлении (так глазу понятнее), то через каждые 4 байта лежат очень интересные цифири. Если в ПВ, то
+0х08 - (вы уже знаете) ID
+ 0х0С - указатель на название предмета,
+ 0х10 - кол-во в данной ячейке,
+0х14 - макс.кол-во
Очень полезная инфа, чтобы понимать когда бутылочки заканчиваются уже и нужно бежать за новыми. И сколько нужно покупать.
Re: Jade Dynasty Offsets, Base Address
Dinmaite, на самом деле отличить бота от эспера просто. Это ПК. Если какой-то креньдель уже третий день качается на одних и тех же мобах и при ПК не начинает тебе срать гневными коментами в личку значит это бот. Тем более что бот сам ресается и всегда направлено бежит в точку в которой ему фармить надо.
Вот собственно и все.