diff --git a/.gitignore b/.gitignore
index f19ed73..753760c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
-decompiled/*
-modified/*
-original/*
-tools/*
+decompiled
+modified
+original
+tools
-__pycache__/
+__pycache__
+.venv
\ No newline at end of file
diff --git a/patches/disable_ad.py b/patches/disable_ad.py
new file mode 100644
index 0000000..30e8a95
--- /dev/null
+++ b/patches/disable_ad.py
@@ -0,0 +1,33 @@
+"""Disable ad banners"""
+
+priority = 0
+
+from utils.smali_parser import (
+ find_smali_method_end,
+ find_smali_method_start,
+ get_smali_lines,
+ replace_smali_method_body,
+)
+
+replace = """ .locals 0
+
+ const/4 p0, 0x1
+
+ return p0
+"""
+
+
+def apply(config) -> bool:
+ path = "./decompiled/smali_classes2/com/swiftsoft/anixartd/Prefs.smali"
+ lines = get_smali_lines(path)
+ for index, line in enumerate(lines):
+ if line.find("IS_SPONSOR") >= 0:
+ method_start = find_smali_method_start(lines, index)
+ method_end = find_smali_method_end(lines, index)
+ new_content = replace_smali_method_body(
+ lines, method_start, method_end, replace
+ )
+
+ with open(path, "w", encoding="utf-8") as file:
+ file.writelines(new_content)
+ return True
diff --git a/patches/disable_beta_banner.py b/patches/disable_beta_banner.py
new file mode 100644
index 0000000..2e2d417
--- /dev/null
+++ b/patches/disable_beta_banner.py
@@ -0,0 +1,39 @@
+"""Remove beta banner"""
+
+priority = 0
+import os
+from tqdm import tqdm
+from lxml import etree
+
+from typing import TypedDict
+
+
+def apply(config) -> bool:
+ attributes = [
+ "paddingTop",
+ "paddingBottom",
+ "paddingStart",
+ "paddingEnd",
+ "layout_width",
+ "layout_height",
+ "layout_marginTop",
+ "layout_marginBottom",
+ "layout_marginStart",
+ "layout_marginEnd",
+ ]
+
+ beta_banner_xml = "./decompiled/res/layout/item_beta.xml"
+ if os.path.exists(beta_banner_xml):
+ parser = etree.XMLParser(remove_blank_text=True)
+ tree = etree.parse(beta_banner_xml, parser)
+ root = tree.getroot()
+
+ for attr in attributes:
+ # tqdm.write(f"set {attr} = 0.0dip")
+ root.set(f"{{{config["xml_ns"]['android']}}}{attr}", "0.0dip")
+
+ tree.write(
+ beta_banner_xml, pretty_print=True, xml_declaration=True, encoding="utf-8"
+ )
+
+ return True
diff --git a/patches/package_name.py b/patches/package_name.py
index b63e806..6cf5565 100644
--- a/patches/package_name.py
+++ b/patches/package_name.py
@@ -35,20 +35,32 @@ def apply(config: dict) -> bool:
except:
pass
- rename_dir(
- "./decompiled/smali/com/swiftsoft/anixartd",
- os.path.join(
- "./decompiled", "smali", config["new_package_name"].replace(".", "/")
- ),
- )
- rename_dir(
- "./decompiled/smali_classes2/com/swiftsoft/anixartd",
- os.path.join(
- "./decompiled",
- "smali_classes2",
- config["new_package_name"].replace(".", "/"),
- ),
- )
+ if os.path.exists("./decompiled/smali/com/swiftsoft/anixartd"):
+ rename_dir(
+ "./decompiled/smali/com/swiftsoft/anixartd",
+ os.path.join(
+ "./decompiled", "smali", config["new_package_name"].replace(".", "/")
+ ),
+ )
+ if os.path.exists("./decompiled/smali_classes2/com/swiftsoft/anixartd"):
+ rename_dir(
+ "./decompiled/smali_classes2/com/swiftsoft/anixartd",
+ os.path.join(
+ "./decompiled",
+ "smali_classes2",
+ config["new_package_name"].replace(".", "/"),
+ ),
+ )
+ if os.path.exists("./decompiled/smali_classes4/com/swiftsoft"):
+ rename_dir(
+ "./decompiled/smali_classes4/com/swiftsoft",
+ os.path.join(
+ "./decompiled",
+ "smali_classes4",
+ "/".join(config["new_package_name"].split(".")[:-1]),
+ ),
+ )
+
# rename_dir(
# "./decompiled/smali_classes3/com/swiftsoft/anixartd",
# os.path.join(
@@ -57,17 +69,7 @@ def apply(config: dict) -> bool:
# config["new_package_name"].replace(".", "/"),
# ),
# )
- if not os.path.exists("./decompiled/smali_classes4/"):
- return True
- rename_dir(
- "./decompiled/smali_classes4/com/swiftsoft/anixartd",
- os.path.join(
- "./decompiled",
- "smali_classes4",
- config["new_package_name"].replace(".", "/"),
- ),
- )
for root, dirs, files in os.walk("./decompiled/smali_classes4/"):
for filename in files:
file_path = os.path.join(root, filename)
@@ -77,7 +79,7 @@ def apply(config: dict) -> bool:
with open(file_path, "r", encoding="utf-8") as file:
file_contents = file.read()
- new_contents = new_contents.replace(
+ new_contents = file_contents.replace(
"com/swiftsoft",
"/".join(config["new_package_name"].split(".")[:-1]),
)
@@ -86,8 +88,6 @@ def apply(config: dict) -> bool:
except:
pass
- os.rmdir("./decompiled/smali_classes2/com/swiftsoft")
-
return True
diff --git a/todo_drafts/todo1.txt b/todo_drafts/todo1.txt
new file mode 100644
index 0000000..9b341e7
--- /dev/null
+++ b/todo_drafts/todo1.txt
@@ -0,0 +1,10 @@
+/res/layout/monetization_ads_internal_rewarded_close_verification.xml
+❯ diff a.txt b.txt
+4c4
+< android:background="@drawable/monetization_ads_internal_rewarded_close_verification_button_close_background"
+---
+> android:background="@drawable/draw030e"
+16c16
+< android:background="@drawable/monetization_ads_internal_rewarded_close_verification_button_dismiss_background"
+---
+> android:background="@drawable/draw030f"
diff --git a/todo_drafts/todo2.txt b/todo_drafts/todo2.txt
new file mode 100644
index 0000000..4f5b712
--- /dev/null
+++ b/todo_drafts/todo2.txt
@@ -0,0 +1,27 @@
+/res/layout/release_info.xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/todo_drafts/todo3.txt b/todo_drafts/todo3.txt
new file mode 100644
index 0000000..cbf0e14
--- /dev/null
+++ b/todo_drafts/todo3.txt
@@ -0,0 +1,2 @@
+/res/menu/bottom.xml
+replace lines
diff --git a/todo_drafts/todo4.txt b/todo_drafts/todo4.txt
new file mode 100644
index 0000000..382b5d0
--- /dev/null
+++ b/todo_drafts/todo4.txt
@@ -0,0 +1 @@
+#ff000000
diff --git a/utils/smali_parser.py b/utils/smali_parser.py
new file mode 100644
index 0000000..f8d1c62
--- /dev/null
+++ b/utils/smali_parser.py
@@ -0,0 +1,58 @@
+def get_smali_lines(file: str) -> list[str]:
+ lines = []
+ with open(file, "r", encoding="utf-8") as smali:
+ lines = smali.readlines()
+ return lines
+
+def find_smali_method_start(lines: list[str], index: int) -> int:
+ while True:
+ index -= 1
+ if lines[index].find(".method") >= 0:
+ return index
+
+def find_smali_method_end(lines: list[str], index: int) -> int:
+ while True:
+ index += 1
+ if lines[index].find(".end method") >= 0:
+ return index
+
+def debug_print_smali_method(lines: list[str], start: int, end: int) -> None:
+ while start != (end + 1):
+ print(start, lines[start])
+ start += 1
+
+def replace_smali_method_body(lines: list[str], start: int, end: int, new_lines: list[str]) -> list[str]:
+ new_content = []
+ index = 0
+ skip = end - start - 1
+
+ while index != (start + 1):
+ new_content.append(lines[index])
+ index += 1
+
+ for line in new_lines:
+ new_content.append(line)
+
+ index += skip
+ while index < len(lines):
+ new_content.append(lines[index])
+ index += 1
+
+
+ return new_content
+
+# example i guess
+# if __name__ == "__main__":
+# lines = get_smali_lines("./decompiled/smali_classes2/com/radiquum/anixart/Prefs.smali")
+
+# for index, line in enumerate(lines):
+# if line.find("IS_SPONSOR") >= 0:
+# method_start = find_smali_method_start(lines, index)
+# method_end = find_smali_method_end(lines, index)
+# new_content = replace_smali_method_body(lines, method_start, method_end, c)
+
+# with open("./help/Prefs_orig.smali", "w", encoding="utf-8") as file:
+# file.writelines(lines)
+# with open("./help/Prefs_modified.smali", "w", encoding="utf-8") as file:
+# file.writelines(new_content)
+
\ No newline at end of file