Перейти к содержанию

Как кастомизировать Android, не устанавливая патчи


Spid3r

Рекомендуемые сообщения

Основанный на ядре Linux и полностью открытый Android как будто создан для разных хаков и модификаций. За все время существования ОС на ее основе были созданы сотни кастомных прошивок, найдены десятки способов изменения ее внешнего вида и поведения, появилась функциональность, не предусмотренная Google. Однако получить нужные функции до недавнего времени можно было, лишь перепрошив устройство, что неудобно и в ряде случаев опасно.

 

Введение, или как они это делают

 

Хакерам, модерам и прочим энтузиастам известно несколько способов изменения внешнего вида, поведения и других параметров Android. Три наиболее популярных:

  1. Правка файлов /system/framework/framework.jar, /system/framework/framework-res.jar и /system/app/SystemUI.apk, которые содержат описание интерфейса и ресурсы, нужные для его отображения. Редактируя эти файлы, можно изменить внешний вид практически любого компонента интерфейса, начиная от размера кнопок и заканчивая цветом надписей.
  2. Правка исходных текстов компонентов системы. С помощью этого способа можно изменить что угодно — от реакции на нажатие кнопок громкости до полного изменения поведения системы. Другими словами, можно переделать ОС под себя.
  3. Декомпиляция и правка системных приложений, не имеющих исходных текстов. Таким образом можно изменить фирменные приложения Google, такие как Google Play и Gmail, исходники которых поисковый гигант не выкладывает.

Проблема всех этих способов в том, что они не позволяют менять Android «на живую». Нельзя взять со смартфона файл /system/framework/framework-res.jar, исправить его и скопировать обратно в систему. Технически в этом нет ничего сложного, достаточно получить root, перемонтировать /system в режиме чтения-записи и выполнить необходимые действия, однако изменения не вступят в силу до перезагрузки, да и загрузится ли система с новым файлом — большой вопрос.

 

Кроме того, изменив системный компонент, нельзя быть уверенным, что модификация заработает на другом смартфоне, даже если на нем установлена та же версия системы. А если версии различаются, то надежды нет совсем. В некоторых случаях модификацию вообще не удастся установить, так как загрузчик может быть залочен, а системный раздел защищен от записи (привет Motorola).

 

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

 

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

 

Перехват управления

 

Суть способа в следующем. Практически любая современная операционная система состоит из ядра и большого количества взаимосвязанных компонентов, в Linux это /boot/vmlinuz и библиотеки из каталогов /lib и /usr/lib, в Windows это ядро kernel32.dll и большое количество DLL-библиотек из системного каталога, в Android это опять же ядро Linux в выделенном разделе и большое количество Java-классов, упакованных в тот самый файл /system/framework/framework.jar.

 

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

 

Однако, как мы уже выяснили, у такого способа куча проблем, и поэтому лучше использовать другой путь, а именно: вклиниться в процесс загрузки файла (а в случае Android это Java-класс), затем перехватить вызовы его методов и направить по другому адресу. Так мы убьем сразу двух зайцев: не сломаем систему, поскольку не будем изменять системные компоненты вообще, и решим проблему с неудобством установки модификаций, так как сможем направить перехваченные вызовы (методы) Java-класса кому угодно, например обычному непривилегированному приложению. Именно так работает Xposed.

 

Xposed Framework

 

Любой класс в Android загружается с помощью небольшого нативного приложения /system/bin/app_process. Его задача — запустить виртуальную машину Dalvik, загрузить необходимые для работы системные классы (окружение исполнения) и передать управление классу (на самом деле происходит обращение к сервису Zygote, который форкает уже готовую ВМ и окружение в режиме copy-on-write, но в нашем случае это неважно).

 

Xposed представляет собой модифицированную версию app_process, которая при запуске первым делом загружает в память специальный Java-класс-перехватчик, а лишь после него — оригинальный Java-класс. Перехватчик выступает в качестве посредника для любых вызовов Java-методов, инициированных оригинальным классом и, в случае необходимости, перенаправляет их классу-обработчику.

 

Последний как раз и занимается тем, что изменяет поведение системы. Например, для определения цвета текста приложения используют метод GetColor класса android.content.res.Resources. Если класс-обработчик перехватит этот метод и вернет вместо кода серого цвета код зеленого, все надписи в интерфейсе станут зелеными. Модификации могут быть и более сложными, например когда они связаны с альтернативной реализацией сразу нескольких методов и целых классов.

 

В комплекте Xposed готовых классов-обработчиков нет, но он позволяет любому разработчику распространять их в виде обычных APK-пакетов, а пользователю просто установить и активировать с помощью специального интерфейса. Другими словами, с помощью Xposed можно устанавливать и удалять модификации Android как обычные приложения, без необходимости в прошивке, копировании в системный каталог и без какого-либо риска.

 

Модули

 

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

 

Xposed невозможно найти в маркете, с точки зрения Google это вредоносное приложение, которое может навредить системе. Это, конечно же, не так, но мы не будем спорить с Google, а просто скачаем приложение из интернета (файл XposedInstaller_2.1.4.apk). После установки приложение запросит права root, а затем выведет на экран интерфейс с несколькими кнопками. Нажимаем Install/Update и перезагружаем смартфон.

 

Все установленные пакеты, содержащие модули Xposed, будут автоматически появляться на вкладке Modules приложения. Включить их можно, просто поставив галочку напротив, а затем перезагрузив смартфон. К сожалению, искать и скачивать модули придется самостоятельно, так как в Google Play большинства из них нет, а работа по созданию родного репозитория Xposed еще не завершена.

 

http://armarium.org/u/2014/02/01/X0VKju4.jpg

Для установки Xposed достаточно нажать одну кнопку

 

http://armarium.org/u/2014/02/01/bnB6U.jpg

После активации новых модулей устройство придется перезагружать

 

Модификации интерфейса

 

Наибольшего внимания заслуживают модули, которые каким-либо образом изменяют внешний вид операционной системы. Таких модулей на просторах инета довольно много, и среди них есть бриллианты из разряда must have. В этом разделе мы поговорим о них.

 

Maximize widgets on lockscreen. Простой модуль, который автоматически разворачивает виджеты на экране блокировки при включении смартфона. Очень удобен при использовании больших информационных виджетов наподобие DashClock. В CyanogenMod, кстати, есть аналогичная функциональность (Настройки -> Экран блокировки -> Развернутые виджеты).

 

AOSP Lockscreen. Модуль заменяет экран блокировки на стандартный из поставки Android, без модификаций производителя смартфона. Будет полезен тем, кто хочет получить look and feel обычного Android, не устанавливая стороннюю прошивку.

 

AppSettings. Добавляет в любую прошивку функциональность, аналогичную настройкам приложений в прошивке ParanoidAndroid. С его помощью можно изменять значение DPI для отдельно взятых приложений, отключить показ строки состояния во время их работы, отключить гашение экрана или изменить язык. С помощью изменения DPI можно сделать так, чтобы приложение работало в планшетном режиме на телефоне (DPI = 160) или в телефонном на планшете (DPI > 240).

 

Battery Themeing. Модуль с большим количеством различных стилей отображения заряда батареи, от круговых до различных символов и изображений.

 

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

 

Icon Themer. Еще один движок тем, в этот раз для замены иконок. Позволяет использовать комплекты иконок, созданные для Nova Launcher, Apex Launcher и ADW Launcher, в любых ланчерах. Сотни различных айконпаков можно найти в Google Play.

 

WisdomSky Xploit. Модуль для глубокой кастомизации строки состояния. Позволяет изменять цвета, стиль отображения часов и батареи и многое другое.

 

http://armarium.org/u/2014/02/01/F30LvlcVr.jpg

App Settings позволяет изменить внешний вид и поведение любого приложения

 

http://armarium.org/u/2014/02/01/mlW5.jpg

Достаточно изменить значение DPI на 160, и интерфейс приложения изменится на планшетный

 

Коллекции твиков

 

Кроме модулей узконаправленной функциональности, есть и целые коллекции твиков в стиле «все в одном». Они позволяют делать множество вещей — от изменения цвета часов в строке состояния до включения различных скрытых функций, вроде переворота локскрина в зависимости от положения экрана или эффекта выключения экрана в стиле старого телевизора (его можно найти в прошивках устройств серии Nexus и CyanogenMod).

 

GravityBox — одна из таких коллекций твиков и доработок с акцентом на рядовых пользователей. Наиболее интересные возможности:

  • Всплывающие наэкранные клавиши навигации в стиле PIE из ParanoidAndroid. После активации наэкранные клавиши управления внизу экрана исчезают, а вместо них появляются всплывающие с одной из сторон экрана кнопки. Очень удобная must have функциональность (также доступна в приложении LMT Launcher).
  • Возможность изменения расположения и удаления кнопок (тайлов) быстрого управления питанием в шторке. Также доступно несколько дополнительных кнопок, включая фонарик и быстрое включение точки доступа.
  • Возможность изменения строки состояния, ее цвета, цвета текста и стиля отображения батареи и часов, изменения фонового изображения и прозрачности шторки.
  • Расширенное меню выключения с возможностью перезагрузки в recovery.
  • Переключение композиций в стандартном плеере с помощью долгого нажатия на кнопки громкости.
  • Исправление самого известного небага Android — отображение фото звонящего не на весь экран (есть в виде отдельного модуля).
  • Эффект выключения экрана в стиле старого телевизора.
  • Авторазворот виджетов на локскрине.
  • Включение режима вибро при перевороте смартфона экраном вниз.
  • Патч для уязвимости Master Key (возможность внедрения любых файлов в системный APK-пакет и его установки без предупреждений) (есть в виде отдельного модуля).
  • Гибкое управление подсветкой кнопок и светодиодом.
  • Исправление множества багов, присутствующих в прошивках для MTK6589-устройств (китайские смартфоны 2013 года выпуска).

Еще одна популярная коллекция — это MoDaCo Toolkit, сборник довольно специфичных и узконаправленных твиков и хаков с акцентом на смартфоны HTC от известного комьюнити MoDaCo. Возможности:

  • Совместимость с рабочим столом Facebook Home.
  • Маскировка смартфона под устройство с разрешением экрана 720p. Полезно владельцам 1080p-смартфонов и планшетов, которым недоступны некоторые приложения в Google Play.
  • Неограниченный угол поворота экрана при наклоне устройства.
  • Различные твики строки состояния.
  • Возможность изменения настроек build.prop на лету (BOARD, BRAND, DEVICE, MODEL, PRODUCT). Можно использовать для получения доступа к приложениям в Google Play.
  • Работа чипа NFC даже во время сна устройства. Для тех, кто часто пользуется NFC-метками (есть как отдельный модуль.
  • Множество твиков для HTC One: отключение предупреждения о завышенном уровне громкости (одним модулем), дополнительные опции выключения (перезагрузка, recovery), включение смартфона кнопкой громкости, отключение бесполезной опции Kid Mode в Power Menu (долгое нажатие кнопки включения), иконка Blinkfeed на рабочем столе.

На самом деле в составе тулкита гораздо больше модификаций и твиков, но они настолько специфичные и нужны столь малому количеству пользователей, что смысла описывать их все на страницах журнала я не вижу и вместо этого отправляю читателя на страницу приложения на xda-developers.

 

Tweakbox — один из первых модулей и коллекций твиков для Xposed. Интересен тем, что обладает небольшой, но действительно необходимой функциональностью. В комплекте: разные стили отображения батареи и уровня сигнала, регулировка уровней критического заряда батареи (по дефолту 5 и 15%), запись разговоров, отключение функции включения экрана при отключении от зарядника (есть в CyanogenMod), переключение между композициями с помощью качельки громкости, изменение поведения при долгом нажатии на кнопку «Домой», ТВ-эффект выключения экрана.

 

http://armarium.org/u/2014/02/01/F8xd1a.jpg

Длинные списки твиков модуля GravityBox

 

http://armarium.org/u/2014/02/01/GMHrv5CQwJ.jpg

GravityBox — тюнинг авторегулировки яркости и кнопок управления питанием

 

Безопасность

 

Кроме упомянутого в предыдущем разделе модуля, закрывающего баг Master Key, для Xposed доступно еще несколько интересных секьюрити-модулей. Один из них — это XPrivacy, система принудительного ограничения приложений в полномочиях. Второй — PeerBlock, аналог одноименного приложения для ПК, предназначенного для блокировки разных рекламных, небезопасных и фишинговых сайтов. Далее мы подробно рассмотрим функциональность каждого из них.

 

Начнем с XPrivacy, модуля для ограничения приложений в полномочиях, который работает в связке с системой безопасности Android. Его задача — дать пользователю контроль над тем, какие именно полномочия (например, доступ к интернету, возможность отправки SMS или запись данных на карту памяти) будут разрешены приложению, а какие — нет. По умолчанию Android дает приложению доступ ко всем запрошенным им полномочиям, но с помощью XPrivacy некоторые из них можно отозвать.

 

XPrivacy распространяется в виде обычного APK-пакета, который, помимо модуля, также включает в себя графический менеджер полномочий. Кроме установки APK-пакета, придется прошить через кастомный recovery фикс для Xposed, необходимый для корректного ограничения некоторых полномочий (впрочем, модуль работает и без него). Фикс можно получить на сайте goo.im (goo.im/devs/M66B/xprivacy), выбрав подходящий для своей версии Android: Xposed_fix_4.0_v2.zip, Xposed_fix_4.1.zip, Xposed_fix_4.2.zip или Xposed_fix_4.3.zip. Работу других модулей он не нарушит.

 

После установки и активации модуля в Xposed в меню приложений появится иконка XPrivacy, которая открывает приложение для управления полномочиями. Главный экран приложения — это список всего софта, установленного в системе. По отношению к любому из них можно активировать систему ограничения, просто поставив галочку напротив и выбрав в открывшемся окне разрешенные привилегии. При этом система сама даст подсказки на счет безопасности тех или иных полномочий, выделив небезопасные жирным шрифтом, а наиболее опасные — розовым фоном. К первым, кстати, относятся доступ к учетным записям и ID устройства, а ко вторым — интернет и хранилище данных. Приложения, запрашивающие небезопасные полномочия и доступ в интернет, также будут выделены в основном списке приложений с помощью соответствующих иконок.

 

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

 

Второй модуль, PeerBlock, — это альтернативная реализация одноименного приложения для Windows. Вся его работа заключается в том, чтобы блокировать доступ операционной системы и приложений к определенным интернет-адресам на основе правил и списков. По сути, это аналог Adblock+, но с возможностью гибкого управления, а самое главное, работающий на более низком уровне ОС (а не в виде прокси, который сам общается с сервером и затем отдает данные системе).

 

В настоящее время PeerBlock использует два метода определения блокируемых хостов: по наличию Ad в адресе хоста и на основе списков адресов, находящихся в каталоге /sdcard/PeerBlockLists/ в обычных текстовых файлах. Первый активирован по умолчанию; чтобы активировать второй, придется скачать список хостов с какого-либо ресурса, например www.iblocklist.com. Далее файл достаточно положить в указанный каталог, запустить приложение PeerBlock for Android и на вкладке Block Lists нажать кнопку Rebuild cache blocklist.

 

http://armarium.org/u/2014/02/01/3IcHrt.jpg

Приложения, помеченные глобусом, имеют доступ в интернет, восклицательный знак — небезопасные полномочия

 

http://armarium.org/u/2014/02/01/a8efw.jpg

Однопользовательской игре доступ в интернет не нужен!

 

http://armarium.org/u/2014/02/01/cwJ6Kv3.jpg

Лаконичный PeerBlock

 

Cydia Substrate

 

По своей сути Xposed — это Android-аналог популярного приложения Cydia Substrate для iOS, созданного небезызвестным Saurik, автором репозитория Cydia. Substrate используется в джейлбрейкнутых i-устройствах повсеместно для создания разного рода модификаций. Часто фреймворк устанавливается в процессе взлома устройства вместе с одноименным репозиторием.

 

Совсем недавно Saurik выпустил версию Cydia Substrate для Android. Фреймворк получился куда более продвинутым, чем Xposed, он создает меньший оверхед на систему, позволяет модифицировать как Java-код, так и нативный, с более продвинутым методом перехвата управления, основанным на внедрении кода и функцией защиты от глючных модификаций (достаточно загрузить смартфон с зажатой кнопкой уменьшения громкости для отключения всех модулей).

 

Тем не менее, за полгода существования Cydia Substrate для Android так и не получила распространения. Встроенный маркет содержит всего две модификации: движок тем WinterBoard и Cydia Backport с секьюрити-патчами. Оба написаны самим Saurik.

 

Greenify

 

Еще один очень интересный Xposed-модуль — это Greenify, система, которая превращает смартфон в выборочное однозадачное устройство. Это означает, что после его установки у тебя появится возможность «заморозить» любое приложение, так что ты сможешь продолжать им пользоваться, но оно не будет работать в фоне. К примеру, у тебя установлен твиттер-клиент, который каждый час просыпается и начинает обновлять ленту, просыпается днем, ночью, в любое время года. И каждый раз, когда он просыпается, процессор переводится в менее энергоэффективный режим, а драйвер Wi-Fi выходит из спячки, из-за чего драгоценный заряд батареи постепенно утекает в никуда.

 

Greenify позволяет полностью отключить любую фоновую активность любого приложения, при этом оставив его полностью работоспособным, так что ленту можно будет обновить самостоятельно, когда нужно. По сути, это мягкий аналог таск-киллера, за тем исключением, что он не убивает приложение (с точки зрения энергопотребления это еще хуже, чем фоновая работа), а просто запрещает ему выполнять фоновые операции.

 

Greenify почти полностью автоматизирован, поэтому все, что нужно сделать, — это запустить его, нажать кнопку + и выбрать из списка наиболее активные приложения. Система сама рассортирует приложения по количеству просыпаний, укажет, для чего они просыпаются и когда запланировано следующее бодрствование. Все это на русском, так что разобраться будет просто. Единственное, я бы не рекомендовал замораживать системные приложения и виджеты.

 

http://armarium.org/u/2014/02/01/bhFtqDso.jpg

Greenify и список бодрствующих приложений

 

Перехват управления не новая идея, она реализована в UNIX-подобных ОС средствами предварительно загрузки библиотек (LD_PRELOAD) и перехвата системных вызовов с помощью ptrace. В Windows существуют техники под названием сплайсинг и сабклассинг, кстати, их используют многие бэкдоры и трояны.

 

Выводы

 

Xposed — невероятно удобная и эффективная система модификации Android, которую можно смело вносить в список must have приложений для всех root-юзеров. Описанные в статье модули лишь малая часть из того огромного количества модификаций, которые можно найти в интернете.

 

 

INFO

 

На странице Xposed есть файл Xposed-Disabler-CWM.zip, который следует использовать для прошивки через recovery в том случае, если фреймворк установился криво и теперь смартфон не загружается.

 

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • cuperxs
    • BrokenParts
      Лордас, день 18-ый Месяц Второго Зерна      Темная ночь. Отблески костра играют причудливый спектакль на твоем лице. В этой глуши Чернолесья ты торчишь уже третий день, дожидаясь встречи с представителем Сообщества. Первые две ночи ты подавал условные знаки, но никто так и не пришел. Сегодня последний день. Если никто не явится - пусть катятся в Обливион со своими заданиями, есть дела и поважнее. Хотя что можеет быть важнее спасения мира? Ответ простой - кувшинчик горячего каве и пляжи Саммерсета! а не эти болота...      - Да, я тоже думаю что место тут не располагает к хорошему отдыху, - с другой стороны костра, из тени деревьев, к тебе выходит Мили-Ин и садиться у огня. - Не смотри на меня так, просто у тебя на лице все написано. мало кто считает эти места красивыми и привлекательными...      Ты помнишь этого аргонианина, именно он сообщил тебе что твой предыдущий куратор погиб. Должна быть замена, но раз Мили-Ин здесь, значит теперь он будет твоим куратором. Надолго ли?      - Четыре месяца. - глядя в огонь заговорил он, - четыре месяца назад началась вся эта история. Смерть сноходца в пещерах Гратвуда, появления алтарей по всему Тамриэлю, массовые смерти магов, ритуалы, сводящие людей с ума, прямые столкновения с Культом, даэдра. Знаешь, живое существо ко всему привыкает, рано или поздно. Наша война с Культом уже не вызывает дрожи в сердце. Уже не страшно, что наш мир может в любую секунду исчезнуть и мы ничего не успеем сделать. Мы уже привыкли. уже не страшно. Поэтому теперь, особенно когда Вермина дала о себе знать, мы можем перейти в наступление. Начать сражаться на их территории. Найди Разум-Дара. Глаз Королевы очень хочет тебя видеть. Они с Симгой, оказывается, давние знакомые, да и... хм, не важно. В общем, они придумали какой-то план, в котором тебе отведена самая важная роль. Не думаю что это тебя удивляет.      Аргонианин усмехнулся и пошевелил дрова в костре длинной палкой.      Ты смотришь на искры и думаешь о предстоящем деле. Найти Глаз Королевы. В общем-то, нетрудно, не так ли? Как два пальца об хиста. Особенно по сравнению с тем, что ты делал раньше... Задача: найдите Разум-Дара и поговорите с ним. Скриншот с диалоговым окном отправляйте мне в личные сообщения или в эту тему. Если скриншот отправляете сюда, убедитесь что на нем нет подсказок для остальных участников приключения. При встрече каджит передаст вам 50 000 в качестве награды. Или в качестве платы за то, что вы хотя бы выслушаете очередной безумный план, который родился в голове у этого хвостатого. Крайний срок, 28.05.2024 23:00 Мск. 
    • Lame
    • Lame
    • Mayron
    • Mayron
    • Mayron
    • Mayron
      Человек мигрируя из Африки, достиг Австралии за 30 000 лет. Это приблизительно 10 км на поколение. По всей видимости, это не любопытство толкало нас вперед, а желание отдалиться от родителей, но ровно настолько, чтобы иметь возможность подбросить им детей на выходные.
    • Mayron
      Ассортимент на 18-19 мая 2024 года: Предложение действительно до 15:00 (МСК) 20 мая 2024 года.
    • Mayron
      Ассортимент на 18-19 мая 2024 года:   • Ancient Orcish Counterweight / Древний орочий противовес  :  20 000 g. • Orcish Seal, Anvil / Орочья печать (наковальня)  :  3 000 g. • Orcish Seal, Battle-Axe / Орочья печать (Боевой топор)  :  3 000 g. • Orcish Seal, Malacath / Орочья печать (Малакат)  :  3 000 g. • Orcish Seal, Mountains / Орочья печать (Горы)  :  3 000 g. • Redguard Seal, Spider / Редгардская печать (паук)  :  8 000 g.   *New* • Seal of Clan Morkul, Metal / Печать клана Моркул (металлическая)  :  4 000 g. • Seal of Clan Morkul, Stone / Печать клана Моркул (каменная)  :  4 000 g. • Seal of Clan Shatul, Metal / Печать клана Шатул (металлическая)  :  4 000 g. • Seal of Clan Shatul, Stone / Печать клана Шатул (каменная)  :  4 000 g. • Seal of Clan Tumnosh, Metal / Печать клана Тамнош (металлическая)  :  4 000 g. • Seal of Clan Tumnosh, Stone / Печать клана Тамнош (каменная)  :  4 000 g. • Wrothgar Puzzle Cube, Hunter / Куб-головоломка из Ротгара (охотник)  :  20 000 g. Предложение действительно до 15:00 (МСК) 20 мая 2024 года.
×
×
  • Создать...