То, что создатели утаили...
#1
В данной теме предлагаю обсудить то, что утаили создатели игры...
К примеру, Вы знали, что в игре помимо тех магий, что есть, существует ещё 8 штук, которых просто не найти... Их я вытащил с помощью ArtMoney (v7.07 Pro). Но эти магии неработоспособны - они не работают, но есть картинки и Зак даже что-то пытается делать при их исполнении. Попозже (максимум через 2 дня) я покажу рисунки с этими магиями (просто тогда, когда их добыл не додумался сфоткать), а ещё и руны скрытые заодно покажу - говорю сразу - они тоже не рабочие...
А смысл в том, что ведь по сути вещей их можно заставить работать... вот этому и посвещена тема!
Ответ
#2
Теперь взгляд на то же, но только с низу - прямо в оперативную память на низком уровне:

Продолжаю тему... Чисто механические способы получения вещей... Путём изменения кода памяти...
Устройство вещей в оперативной памяти у ПЗ не сверх-мудрёное, но со своими приколами... Чертежи оружий, доспехов, жезлов и магий имеют схожую структуру, а также к ним можно и руны прилепить, а вот материалы чуть отличаются... Получал я вещи путём взлома инвентаря на количество предмета (ArtMoney 7.07 Pro). Таким образом структуру я изучал тоже отталкиваясь от количества, и вот что получил: в оперативной памяти структура предмета такова -

YYYYYYYY+00 - Адрес, содержаций количество предмета (4 Байта)
YYYYYYYY+04 - Раздел классов (Материал/Чертёж/Руна) (4 Байта)
YYYYYYYY+08 - Классовая пренадлежность (4 Байта)
YYYYYYYY+0C - Модель/Вид предмета (4 Байта)

1) С количеством всё ясно, его может быть очень-очень много...
2) Раздел классов - Подразделён на побочные (неизвестные) разделы и общие: 1 - Материал; 2 - Чертёж/Руна...
3) Классовая пренадлежность - для материала не активна и равна 7FFFFFFFh; а вот для других так: 0 - Чертёж оружия; 1 - Чертёж доспеха; 2 - Чертёж жезла; 3 - Чертёж заклинания; 4 - Руна...
4) Модель:
Для материала:
00 - Тонкая кожа;
01 - Крепкая кожа;
02 - Толстая кожа;
03 - Шкура зелёного тролля;
04 - Шкура синего тролля;
05 - Шкура чёрного тролля;
06 - Шкура красного дракона;
07 - Шкура зелёного дракона;
08 - Шкура синего дракона;
09 - Тигринный меж (обычный);
10 - Тонкая кость;
11 - Крепкая кость;
12 - Толстая кость;
13 - Панцирная кость;
14 - Кость красного дракона;
15 - Кость зелёного дракона;
16 - Кость синего дракона;
17 - Камень;
18 - Гранит;
19 - Кремень;
20 - Обсидиан;
21 - Бронза;
22 - Железо;
23 - Сталь;
24 - Мифрил;
25 - Адамантин;
26 - Метеорит;
27 - Алмаз;
28 - Грубая ткань;
29 - Хлопок;
30 - Шерсть;
31 - Шёлк;
32 - Мех снежного тигра;
33 - Тут игра даёт сбой...
Для доспеха: (Тут показаны только значения, кратные числу 8, т.к. меж ними идут сами вещи, причём вразброс, а значения, кратные числу 8 показывают их классовую принадлежность) - английские названия не придуманы - оно так и написано...
000 - Gipat_Low_Prototype
008 - Gipat_Medium_Prototype
016 - Gipat_Brigand_Prototype
024 - Gipat_High_Prototype
032 - Gipat_Highest_Prototype
040 - Kania_Low_Prototype
048 - Kania_Medium_Prototype
056 - Kania_Brigand_Prototype
064 - Kania_High_Prototype
072 - Kania_Highest_Prototype
080 - Kania_High2_Prototype
088 - Kania_Highest2_Prototype
096 - Hadagan_Low_Prototype
104 - Hadagan_Medium_Prototype
112 - Hadagan_Brigand_Prototype
120 - Hadagan_High_Prototype
128 - Hadagan_Highest_Prototype
136 - Hadagan_High2_Prototype
144 - Hadagan_Highest2_Prototype
152 - Jun_High_Prototype
160 - Тут начинается мусор...
Для оружия:
00 - Каменный топор
01 - Каменный боевой топор
02 - Металлический топор
03 - Металлический боевой топор
04 - Кристаллический топор
05 - Каменный меч
06 - Длинный меч (Металл)
07 - Палаш (Меч, Металл)
08 - Кристаллический меч
09 - Ритуальный нож (Металл)
10 - Каменный кинжал
11 - Кинжал (Металл)
12 - Крис (Кинжал, Металл)
13 - Кристаллический кинжал
14 - Каменной копьё
15 - Костяное копьё
16 - Копьё (Металл)
17 - Длинное копьё (Металл)
18 - Кристаллическое копьё
19 - Костяная дубина
20 - Каменный молот
21 - Каменный утяжелённый молот
22 - Боевой молот (Металл)
23 - Булава (Металл)
24 - Шиповая булава (Металл)
25 - Тяжёлая шиповая булава (Металл)
26 - Кристаллическая булава
27 - Каменный лук
28 - Короткий костяной лук
29 - Длинный костяной лук
30 - Короткий лук (Металл)
31 - Длинный лук (Металл)
32 - Арбалет (Металл)
33 - Тяжёлый арбалет (Металл)
34 - Кристаллический арбалет
Для заклинаний:
00 - Огненная стрела
01 - Молния
02 - Сгусток кислоты
03 - Огненный шар
04 - Небесная молния
05 - Фонтан кислоты
06 - Огненная стена
07 - Преграда из молнии
08 - Кислотный туман
09 - Защита от огня
10 - Защита от молний
11 - Защита от кислоты
12 - Орлинный взор
13 - Ночное зрение
14 - <?> - Нарисована девушка
15 - Невидимость
16 - Неслышный шаг
17 - <?> - Нарисован череп
18 - Фейерверк
19 - <?> - Нарисован нос
20 - Ясновидение
21 - <?> - Нарисован шар с блёсками
22 - <?> - Нарисован шар с дымом
23 - Поле зрения
24 - Лечение
25 - Парализация
26 - Защита от магии
27 - <?> - Нарисовано раздвоение что ли
28 - Телепортация
29 - Увеличение силы
30 - Ослабление
31 - Регенерация
32 - Слабоумие
33 - Ускорение
34 - Замедление
35 - <?> - Зомби что ли нарисован
36 - <?> - Вроде нарисована собака
37 - Увеличение
38 - Уменьшение
39 - Либо мусор, либо выкинет из игры
Для рун:
00 - <?> Подобие дальнего действия
01 - Дальнее действие
02 - Сверхдальнее действие
03 - Дополнительная цель
04 - Две дополнительные цели
05 - <?> Подобие расширённой области действия
06 - Расширённая область действия
07 - Максимальная область действия
08 - <?> Подобие усиления
09 - Усиление
10 - Максимальное усиление
11 - <?> Подобие долговременного действия
12 - Долговлременное действие
13 - Сверхдолгое действие
14 - Малый расход сил
15 - Минимальный расход сил
16 - Выбрать друзей
17 - Выбрать врагов
18 - Выбрать людей
19 - Выбрать гоблинов
20 - Выбрать орков
21 - Выбрать ящеров
22 - Разовое действие
23 - Постоянное действие
24 - Малый расход энергии предмета
25 - Минимальный расход энергии предмета
26 - Ускоренное восстановление энергии предмета
27 - Сверхбыстрое восстановление энергии предмета
28 - Мусор или выкинет
Для жезлов:
00-15 - Мусор
16 - Каменный жезл
17 - Костяной жезл
18 - Металлический жезл
19 - Фигурный металлический жезл
20 - Ракушка-жезл (Сила-123;Сложность-36)
21 - Кукла-жезл (Сила-97;Сложность-49)

МИНУС НАМ - ПЛЮС АВТОРАМ:
Все адреса в игре "Буйно плавают" и никогда не стоят на месте. Как таковой целый инвентарь отсутсвует - существуют лишь отдельно предметы как юниты и уже в их свойствах прописано, где они расположены (у Зака, у торговца или вообще где-то неизвестно где)... Конечно на адреса существуют указатели, а там и сама структура подскажет, но чую, что на указатели тоже поставлены указатели (!), чтоб нас сильней запутать... Эта система хорошо конечно против нас работает, и я сейчас работаю именно над тем, чтобы "раскусить" её...

НА СЧ¨Т ОСТАЛЬНОГО:
Как видно в структуре предмета на класс, раздел и модель отводятся по 4 байта - это огромный потенциал для количества различных предметов, я разглядел только самое начало (минимальные значения)... остальное ещё в поиске...
Ответ
#3
Цитата:..."Буйно плавают"...

Это было сделано не против нас, а для экономии памяти и повышения быстродействия Wink
SURREAL
Ответ
#4
А указатели на указатели тоже не делают. Ты просто не знаешь что это такое Smile
И числа у тебя в каком формате? В десятичном или шестнадцатеричном?
Что есть то есть, того что было не вернуть, не изменить ни дня.
Черный Обелиск "Дом желтого сна (часть 2)"
Ответ
#5
Очень интересная информация, можно проследить некоторую зависимость от баз из DB Toolkit:
Цитата:4) Модель:
Для материала:
00 - Тонкая кожа
Файл Materials.txt.
Номер - порядковый номер строки, начиная с 0.
(в распакованной нами базе, это последнее поле - Unknown)
thin
thick
tanned thin
....
Цитата:Для доспеха: (Тут показаны только значения, кратные числу 8, т.к. меж ними идут сами вещи, причём вразброс, а значения, кратные числу 8 показывают их классовую принадлежность) - английские названия не придуманы - оно так и написано...
000 - Gipat_Low_Prototype
Файл Armors.txt:
gipat low prototype
gipat low shirt
gipat low pants
gipat low boots
gipat low gloves
gipat low helm
gipat low plate
gipat low leggins
gipat medium prototype
....
Цитата:Для оружия:
00 - Каменный топор
01 - Каменный боевой топор
Файл: Weapons.txt
stone axe
stone battle axe
....
Цитата:Для заклинаний:
00 - Огненная стрела
01 - Молния
SpellPrototypes.txt
Fire Arrow
Lightning Arc
....
Цитата:Для рун:
00 - <?> Подобие дальнего действия
01 - Дальнее действие
SpellModifiers.txt
Cut Range
Extra Range
Ultra Range
....

Всё это - классы предметов, они наследуют базовый класс предмета CItem и обладают его свойствами (это общие поля в таблицах базы items.idb), вот списко этих классов
CItemWeapon
CItemArmor
CItemQuick
CItemLoot
CItemSpell
CItemQuest

А плавают адреса потому, что игра написана на C++ с использованием классов MFC.
И при создании экземпляра класса:
Код:
CObject* pObject = new CObject();
Память для этого объекта выделяется из кучи, т.е. нет привязки к адресам.
А вот указатели, которые указывают на этот участок, конечно же, можно найти Tongue, но это очень трудоемкий процесс. Huh

p.s. Мда... тема плавно перетекает в программисткую. :unsure:
Ответ
#6
Я вот думаю что в памяти предметы имеют тот же формат что и в базе, просто записи из базы напрямую туда подгружаются. И должен сохраняться порядок следования всех параметров.
ELF как следующий раз будешь артманей память смотреть, то проверь это.
Описание всех форматов предметов лежит тут:
Распаковка *.*db
Все числа там шестнадцатиричные.
Что есть то есть, того что было не вернуть, не изменить ни дня.
Черный Обелиск "Дом желтого сна (часть 2)"
Ответ
#7
Цитата:Я вот думаю что в памяти предметы имеют тот же формат что и в базе, просто записи из базы напрямую туда подгружаются. И должен сохраняться порядок следования всех параметров.

Нельзя так просто сказать, что всё из таблиц просто уходит в память - уже потому, что в таблицах значения одно за другим - а в памяти только пара (а именно принадлежность), причём до него и после него жуткая неопределённость - все значения меняются (я так и не нашёл зависимости). Sad

Т.к. чертежи делятся на оружейные, доспехов и магии, а материалы "официально" не делятся (их пренадлежность прописана только в одном параметре), то по адресу YYYYYYYY+08 - стоит число "отсутствие", равное 7FFFFFFFh (максимум знакового 4-х байтного) или 2147483647 в десятичном виде... :angry:

Цитата:А указатели на указатели тоже не делают. Ты просто не знаешь что это такое Smile

Что такое указатели я знаю, а подумал так плохо о них, потому что ArtMoney, которую "ВЕЧНОТЬ" воротят для поиска и "обезвреживания" указателей просто не в состоянии найти их - т.е. она находит указатели, НО ОНИ ТОЖЕ УПЛЫВАЮТ СО СВОИХ МЕСТ - ну и как ты ЭТО объяснишь? :dry: ... Тут скорее все-таки, как сказал Jet, классовое устройство, потому и неопределённость... :unsure:

Цитата:И числа у тебя в каком формате? В десятичном или шестнадцатеричном?

Ну я думаю, что разобраться не составит и труда - писал я в различных системах счисления для наглядности зависимостей чисел. :dry:
Ответ
#8
Утаенное создателями ПЗ иногда может не вовремя аукнуться. Вот например оказывается там есть такой материал - дерево. Кто пробовал сделать его сам мог столкнуться с проблемами... как я.
Ответ
#9
Да кстати в интервью ниваловцев про то как они делают игры они ни скрывают что используют язык scriptов LUA может его поюзать, а то я слышал demiurgi с помощью него спрограммированы. Demiurgi насколько я читал доки переработанный движок ПЗ.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Поклонник Baldurs gate, Neverwinter Nights, Проклятые земли.
Ответ
#10
Да, это действительно имеется, Демиурги сделаны на движдке ПЗ. А насчёт языка, можно предположить, что само название языка - LUA, говорит о том, что язык был специально написан для ПЗ, а потому информации по нему будет мало (эт я так предполагаю).

А вообще есть сайт тут один:
Сайт Нуна 2003
Там вроде всё очень подробно изложено про скрипты. Wink

Но только как это всё относится к низкоуровнему подходу к ПЗ?
(Эту тему я пока не продолжаю, т.к. время нет, а его сюда нужно много).
Ответ
#11
Я тут попробовал найти в демиургах хоть что-то ПЗешное. Чего-то не нашлось :-(
Ответ
#12
А я тут подумал, еще не пробовал, но вот чего, если в датабазе разрешить эффект усилению, что бы руну вставлять можно было, то там чуть ли не другое заклинание, то может попробывать с выключенными чего-нибудь нахимичить, а всоь и включатся
Ответ
#13
У этой темы есть очень родственная тема "Раскопки GAME.exe" - там идёт изучение кода ПЗ. Здесь идёт изучение поведения ПЗ в Оперативной памяти, а также в файловой системе ВО ВРЕМЯ РАБОТЫ! Конечно, здесь затрагиваются и скрытые моменты, но это только потому, что такие моменты появляются при открытии неизведанных мест.

На счёт руны: этот необычный эффект поддаётся логике, а потому не очень так и сложно представить, как поведут себя другие заклинания. - Руны действуют на их параметры - можно конечно проанализировать, как поведёт себя заклинание, но это уже совсем другая темя (например, "Поведение заклинаний", которую ты, Paladin, вполне можешь создать в MODном форуме Wink ).

Теперь по этой теме: если хотите продолжить работы по этому делу, то берите прогу для наблюдения за ПЗ из Оперативной памяти в работающем режиме (мне тут подошла ArtMoney 7) и юзайте. Любые раскопки из оперативки будут мне (а то и другим) очень интерестны...
Ответ
#14
А вы пиратскую морду видели ?
- Пап, а пап, а люди есть?
- Нет сынок - это фантастика!
Ответ
#15
Нет, а её таким же путём (номерком) выцепить можно? Просто я пока остановился в плане поиска в ОП...
Ответ
#16
Это - морда хадора. Должна была быть. Поставили другую.А на скриншотах она такая и текстура гипата другая. Wink
Мальчик за сливами в садик полез,
Сторож Евсей достает свой обрез.
Выстрел раздался и сторож упал,
Мальчика сзади отец прикрывал.
Ответ
#17
А вы знали что в игре есть амулет который нигде не используеться. По его виду можно сказать что этот амулет принадлежал Джунам.
- Пап, а пап, а люди есть?
- Нет сынок - это фантастика!
Ответ
#18
Знали. Я как-то захотел заиметь все предметы, что в ПЗ есть, и набрал целую кучу. И этот амулетик там был. Как я понял, он является целой версией того, который Зак показывает Тка-Рику перед битвой с Проклятьем.
Say it once, say it twice,
Take a chance and roll the dice...
Ответ
#19
А у меня этот самый амулетик работал как драконий амулет в моде Taurusa
Мальчик за сливами в садик полез,
Сторож Евсей достает свой обрез.
Выстрел раздался и сторож упал,
Мальчика сзади отец прикрывал.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)