# LihonT

**LihonT** — ультра-чистый, легковесный и производительный модификатор (патчер) для Android-клиента TikTok (`com.zhiliaoapp.musically`).

> Полностью открытый исходный код под лицензией **MIT**. Без рекламы, без лишних настроек, без бейджей, сторонних серверов и тяжелых фреймворков.

---

## Возможности LihonT

Мод сфокусирован исключительно на ключевом функционале:

* **Чистое скачивание без водяных знаков (No Watermark):**
  * Видео сохраняются в максимальном исходном качестве без логотипа TikTok и никнейма автора.
  * Фото-слайды (слайд-шоу) сохраняются чистыми без наложенных водяных знаков.
* **Обход запретов на скачивание (Always Allow Download):**
  * Кнопка скачивания активна всегда, даже если автор видео отключил возможность сохранения («Запрещено скачивать автором»).
* **Фоновый обход региональных ограничений (Region Spoofing):**
  * Бесшовный доступ к ленте рекомендаций и свежим видео в регионах с ограничениями (автоматическая фиксация на `BY` / Беларусь без необходимости настраивать вручную).
* **Никакого лишнего оверхеда:**
  * Никаких добавленных меню в настройках приложения, никаких перегруженных фоновых служб — патч применяется прямо к целевым вызовам Dalvik/ART.

---

## Архитектура

LihonT не требует Root-прав или сред вроде Xposed/Magisk:

1. **Dalvik/ART Bytecode Patching:** Анализирует DEX-файлы APK и подменяет целевые методы (`Video.getDownloadAddr`, `ACLCommonShare.getCode`, `Aweme.isPreventDownload`, `Canvas.drawBitmap`) на легковесные статические методы LihonT.
2. **Injected Dex:** Скомпилированные классы (`Download.java`, `Watermark.java`, `Region.java`) упаковываются в дополнительный `classesN.dex`.
3. **Multidex Spillover:** Автоматически обрабатывает ситуации переполнения лимита методов 64k.
4. **Sign & Align:** Автоматическая цифровая подпись готового APK с помощью `uber-apk-signer`.

---

## Сборка мода

### Требования:
* **Python** 3.10 или новее
* **Java JDK** 17 или новее

### Инструкция:
1. Скачайте оригинальный универсальный APK TikTok (arm64-v8a / universal, тип APK, не split bundle).
2. Запустите сборку:
   * **Windows:**
     ```cmd
     build.bat path\to\tiktok.apk
     ```
   * **Linux / macOS:**
     ```bash
     ./build.sh path/to/tiktok.apk
     ```
3. Готовый подписанный файл появится в `build/lihont.apk`.

---

## Запуск тестов

```bash
python -m unittest discover -s tests -p "test_*.py" -v
```

---

## Лицензия

Проект распространяется под свободной лицензией [MIT](LICENSE).
