"""Изменяет имя пакета в apk, удаляет вход по google и vk "package_name": { "enabled": true, "new_package_name": "com.wowlikon.anixart" } """ __author__ = "wowlikon " __version__ = "1.0.0" import os from typing import Any, Dict from lxml import etree from pydantic import Field from utils.config import PatchTemplate class Patch(PatchTemplate): priority: int = Field(frozen=True, exclude=True, default=-1) package_name: str = Field("com.wowlikon.anixart", description="Название пакета") def rename_dir(self, src, dst): os.makedirs(os.path.dirname(dst), exist_ok=True) os.rename(src, dst) def apply(self, base: Dict[str, Any]) -> bool: for root, dirs, files in os.walk("./decompiled"): for filename in files: file_path = os.path.join(root, filename) if os.path.isfile(file_path): try: # Изменяем имя пакета в файлах with open(file_path, "r", encoding="utf-8") as file: file_contents = file.read() new_contents = file_contents.replace( "com.swiftsoft.anixartd", self.package_name ) new_contents = new_contents.replace( "com/swiftsoft/anixartd", self.package_name.replace(".", "/"), ).replace( "com/swiftsoft", "/".join(self.package_name.split(".")[:2]), ) with open(file_path, "w", encoding="utf-8") as file: file.write(new_contents) except: pass # Изменяем названия папок if os.path.exists("./decompiled/smali/com/swiftsoft/anixartd"): self.rename_dir( "./decompiled/smali/com/swiftsoft/anixartd", os.path.join( "./decompiled", "smali", self.package_name.replace(".", "/") ), ) if os.path.exists("./decompiled/smali_classes2/com/swiftsoft/anixartd"): self.rename_dir( "./decompiled/smali_classes2/com/swiftsoft/anixartd", os.path.join( "./decompiled", "smali_classes2", self.package_name.replace(".", "/"), ), ) if os.path.exists("./decompiled/smali_classes4/com/swiftsoft"): self.rename_dir( "./decompiled/smali_classes4/com/swiftsoft", os.path.join( "./decompiled", "smali_classes4", "/".join(self.package_name.split(".")[:2]), ), ) # rename_dir( # "./decompiled/smali_classes3/com/swiftsoft/anixartd", # os.path.join( # "./decompiled", # "smali_classes3", # config["new_package_name"].replace(".", "/"), # ), # ) # Замена названия пакета для smali_classes4 for root, dirs, files in os.walk("./decompiled/smali_classes4/"): for filename in files: file_path = os.path.join(root, filename) if os.path.isfile(file_path): try: with open(file_path, "r", encoding="utf-8") as file: file_contents = file.read() new_contents = file_contents.replace( "com/swiftsoft", "/".join(self.package_name.split(".")[:-1]), ) with open(file_path, "w", encoding="utf-8") as file: file.write(new_contents) except: pass # Скрытие входа по Google и VK (НЕ РАБОТАЮТ В МОДАХ) file_path = "./decompiled/res/layout/fragment_sign_in.xml" parser = etree.XMLParser(remove_blank_text=True) tree = etree.parse(file_path, parser) root = tree.getroot() last_linear = root.xpath("//LinearLayout/LinearLayout[4]")[0] last_linear.set(f"{{{base['xml_ns']['android']}}}visibility", "gone") tree.write(file_path, pretty_print=True, xml_declaration=True, encoding="utf-8") return True