apk-patchx 7.9.2025.1__py3-none-any.whl → 7.9.2025.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
apk_patchx/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  __version__ = "7.9.2025.1"
4
4
  __author__ = "APKPatcher Contributors"
5
- __email__ = "contributors@apkpatcher.dev"
5
+ __email__ = "contributors@apk-patchx.dev"
6
6
  __license__ = "MIT"
7
7
 
8
8
  from .exceptions import APKPatcherError, ToolNotFoundError, ValidationError
apk_patchx/cli.py CHANGED
@@ -14,7 +14,7 @@ from .services.adb import ADBService
14
14
  from .services.apktool import ApktoolService
15
15
  from .services.frida import FridaService
16
16
  from .services.signing import SigningService
17
- from .utils.core import setup_logging, get_apkpatcher_home
17
+ from .utils.core import setup_logging, get_apk-patchx_home
18
18
 
19
19
  colorama.init(autoreset=True)
20
20
 
@@ -58,7 +58,7 @@ def cli(ctx: click.Context, verbose: bool, version: bool) -> None:
58
58
  setup_logging(verbose)
59
59
 
60
60
  # Initialize APKPatcher home directory
61
- home = get_apkpatcher_home()
61
+ home = get_apk-patchx_home()
62
62
  home.mkdir(parents=True, exist_ok=True)
63
63
 
64
64
  if verbose:
@@ -6,7 +6,7 @@ from pathlib import Path
6
6
  from typing import List, Optional
7
7
 
8
8
  from ..exceptions import ADBError, ToolNotFoundError
9
- from ..utils.core import run_command, get_apkpatcher_home
9
+ from ..utils.core import run_command, get_apk-patchx_home
10
10
  from .android_sdk import AndroidSDKService
11
11
 
12
12
 
@@ -29,7 +29,7 @@ class ADBService:
29
29
  else:
30
30
  # Use SDK ADB
31
31
  self.sdk_service.ensure_platform_tools()
32
- sdk_root = get_apkpatcher_home() / "tools" / "sdk"
32
+ sdk_root = get_apk-patchx_home() / "tools" / "sdk"
33
33
  self._adb_path = sdk_root / "platform-tools" / "adb"
34
34
 
35
35
  if not self._adb_path.exists():
@@ -7,7 +7,7 @@ from typing import Optional
7
7
  from urllib.parse import urljoin
8
8
 
9
9
  from ..exceptions import NetworkError, ToolNotFoundError
10
- from ..utils.core import run_command, get_apkpatcher_home, download_file
10
+ from ..utils.core import run_command, get_apk-patchx_home, download_file
11
11
 
12
12
 
13
13
  class AndroidSDKService:
@@ -15,8 +15,8 @@ class AndroidSDKService:
15
15
 
16
16
  def __init__(self, verbose: bool = False):
17
17
  self.verbose = verbose
18
- self.sdk_root = get_apkpatcher_home() / "tools" / "sdk"
19
- self.cmdline_tools_dir = get_apkpatcher_home() / "tools" / "cmdline-tools"
18
+ self.sdk_root = get_apk-patchx_home() / "tools" / "sdk"
19
+ self.cmdline_tools_dir = get_apk-patchx_home() / "tools" / "cmdline-tools"
20
20
 
21
21
  def ensure_java(self) -> None:
22
22
  """Ensure Java is available."""
@@ -41,7 +41,7 @@ class AndroidSDKService:
41
41
 
42
42
  # Download command line tools
43
43
  tools_url = "https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip"
44
- zip_path = get_apkpatcher_home() / "tools" / "commandlinetools.zip"
44
+ zip_path = get_apk-patchx_home() / "tools" / "commandlinetools.zip"
45
45
 
46
46
  if self.verbose:
47
47
  print(f"Downloading Android command line tools...")
@@ -51,7 +51,7 @@ class AndroidSDKService:
51
51
  # Extract
52
52
  import zipfile
53
53
  with zipfile.ZipFile(zip_path, 'r') as zip_ref:
54
- zip_ref.extractall(get_apkpatcher_home() / "tools")
54
+ zip_ref.extractall(get_apk-patchx_home() / "tools")
55
55
 
56
56
  zip_path.unlink()
57
57
 
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import List, Optional
6
6
 
7
7
  from ..exceptions import BuildError, NetworkError, ToolNotFoundError, ValidationError
8
- from ..utils.core import run_command, get_apkpatcher_home, download_file
8
+ from ..utils.core import run_command, get_apk-patchx_home, download_file
9
9
  from ..utils.versions import get_latest_github_release
10
10
  from .android_sdk import AndroidSDKService
11
11
 
@@ -27,7 +27,7 @@ class ApktoolService:
27
27
 
28
28
  def _ensure_apktool(self) -> None:
29
29
  """Ensure apktool is available."""
30
- tools_dir = get_apkpatcher_home() / "tools"
30
+ tools_dir = get_apk-patchx_home() / "tools"
31
31
  tools_dir.mkdir(parents=True, exist_ok=True)
32
32
 
33
33
  # Check for existing apktool
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import Optional, Dict
6
6
 
7
7
  from ..exceptions import FridaPatchError, NetworkError, ValidationError
8
- from ..utils.core import run_command, get_apkpatcher_home, download_file
8
+ from ..utils.core import run_command, get_apk-patchx_home, download_file
9
9
  from ..utils.versions import get_latest_github_release
10
10
  from .apktool import ApktoolService
11
11
  from .signing import SigningService
@@ -75,7 +75,7 @@ class FridaService:
75
75
  gadget_name = f"frida-gadget-{version}-{frida_arch}.so"
76
76
  gadget_xz_name = f"{gadget_name}.xz"
77
77
 
78
- tools_dir = get_apkpatcher_home() / "tools"
78
+ tools_dir = get_apk-patchx_home() / "tools"
79
79
  tools_dir.mkdir(parents=True, exist_ok=True)
80
80
 
81
81
  gadget_path = tools_dir / gadget_name
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import Optional
6
6
 
7
7
  from ..exceptions import FridaPatchError, ToolNotFoundError
8
- from ..utils.core import run_command, get_apkpatcher_home, download_file
8
+ from ..utils.core import run_command, get_apk-patchx_home, download_file
9
9
 
10
10
 
11
11
  class DexPatcher:
@@ -24,7 +24,7 @@ class DexPatcher:
24
24
 
25
25
  def _ensure_dexpatch(self) -> None:
26
26
  """Ensure dexpatch is available."""
27
- tools_dir = get_apkpatcher_home() / "tools"
27
+ tools_dir = get_apk-patchx_home() / "tools"
28
28
  tools_dir.mkdir(parents=True, exist_ok=True)
29
29
 
30
30
  dexpatch_path = tools_dir / "dexpatch-0.1.jar"
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import Optional
6
6
 
7
7
  from ..exceptions import SigningError, ToolNotFoundError
8
- from ..utils.core import run_command, get_apkpatcher_home
8
+ from ..utils.core import run_command, get_apk-patchx_home
9
9
  from .android_sdk import AndroidSDKService
10
10
 
11
11
 
@@ -21,7 +21,7 @@ class SigningService:
21
21
  def keystore_path(self) -> Path:
22
22
  """Get debug keystore path."""
23
23
  if self._keystore_path is None:
24
- keystore_path = get_apkpatcher_home() / "debug.keystore"
24
+ keystore_path = get_apk-patchx_home() / "debug.keystore"
25
25
  if not keystore_path.exists():
26
26
  self._generate_debug_keystore(keystore_path)
27
27
  self._keystore_path = keystore_path
@@ -35,12 +35,12 @@ class SigningService:
35
35
  cmd = [
36
36
  "keytool", "-genkey", "-v",
37
37
  "-keystore", str(keystore_path),
38
- "-alias", "apkpatcher_debug",
38
+ "-alias", "apk-patchx_debug",
39
39
  "-keyalg", "RSA",
40
40
  "-keysize", "2048",
41
41
  "-validity", "10000",
42
- "-storepass", "apkpatcher",
43
- "-keypass", "apkpatcher",
42
+ "-storepass", "apk-patchx",
43
+ "-keypass", "apk-patchx",
44
44
  "-dname", "CN=APKPatcher Debug, OU=Debug, O=APKPatcher, C=US",
45
45
  "-noprompt"
46
46
  ]
@@ -89,9 +89,9 @@ class SigningService:
89
89
  cmd = [
90
90
  str(apksigner), "sign",
91
91
  "--ks", str(self.keystore_path),
92
- "--ks-key-alias", "apkpatcher_debug",
93
- "--ks-pass", "pass:apkpatcher",
94
- "--key-pass", "pass:apkpatcher",
92
+ "--ks-key-alias", "apk-patchx_debug",
93
+ "--ks-pass", "pass:apk-patchx",
94
+ "--key-pass", "pass:apk-patchx",
95
95
  "--out", str(output_path),
96
96
  str(apk_path)
97
97
  ]
apk_patchx/utils/core.py CHANGED
@@ -20,9 +20,9 @@ def setup_logging(verbose: bool = False) -> None:
20
20
  )
21
21
 
22
22
 
23
- def get_apkpatcher_home() -> Path:
23
+ def get_apk-patchx_home() -> Path:
24
24
  """Get APKPatcher home directory."""
25
- return Path.home() / ".apkpatcher"
25
+ return Path.home() / ".apk-patchx"
26
26
 
27
27
 
28
28
  def run_command(cmd, capture_output: bool = False, text: bool = True, **kwargs):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apk-patchx
3
- Version: 7.9.2025.1
3
+ Version: 7.9.2025.2
4
4
  Summary: Android APK manipulation toolkit with Frida gadget injection support
5
5
  Keywords: android,apk,reverse-engineering,frida,patching
6
6
  Author: APKPatcher Contributors
@@ -31,7 +31,7 @@ Project-URL: Homepage, https://github.com/kaifcodec/apk-patchx
31
31
  Project-URL: Issues, https://github.com/kaifcodec/apk-patchx/issues
32
32
  Project-URL: Repository, https://github.com/kaifcodec/apk-patchx.git
33
33
 
34
- # APKPatcher
34
+ # APK-Patchx
35
35
 
36
36
  A powerful command-line tool for Android APK manipulation, including Frida gadget injection, APK decoding/building, and package management.
37
37
 
@@ -46,39 +46,39 @@ A powerful command-line tool for Android APK manipulation, including Frida gadge
46
46
  ## Installation
47
47
 
48
48
  ```bash
49
- pip install apkpatcher
49
+ pip install apk-patchx
50
50
  ```
51
51
 
52
52
  ## Usage
53
53
 
54
54
  ### Pull APK from device
55
55
  ```bash
56
- apkpatcher pull com.example.app
56
+ apk-patchx pull com.example.app
57
57
  ```
58
58
 
59
59
  ### Decode APK
60
60
  ```bash
61
- apkpatcher decode app.apk
61
+ apk-patchx decode app.apk
62
62
  ```
63
63
 
64
64
  ### Build APK from source
65
65
  ```bash
66
- apkpatcher build app_src/
66
+ apk-patchx build app_src/
67
67
  ```
68
68
 
69
69
  ### Patch APK with Frida gadget
70
70
  ```bash
71
- apkpatcher patch app.apk --arch arm64
71
+ apk-patchx patch app.apk --arch arm64
72
72
  ```
73
73
 
74
74
  ### Rename APK package
75
75
  ```bash
76
- apkpatcher rename app.apk com.newpackage.name
76
+ apk-patchx rename app.apk com.newpackage.name
77
77
  ```
78
78
 
79
79
  ### Sign APK
80
80
  ```bash
81
- apkpatcher sign app.apk
81
+ apk-patchx sign app.apk
82
82
  ```
83
83
 
84
84
  ## Architecture Support
@@ -96,7 +96,7 @@ apkpatcher sign app.apk
96
96
 
97
97
  ## Tool Management
98
98
 
99
- APKPatcher automatically downloads and manages required tools in `~/.apkpatcher/tools/`:
99
+ APK-Patchx automatically downloads and manages required tools in `~/.apk-patchx/tools/`:
100
100
 
101
101
  - apktool
102
102
  - Android SDK build-tools
@@ -0,0 +1,22 @@
1
+ apk_patchx/__init__.py,sha256=Tl9ayKdWxawLU-SwIXXcAy31iWz0UrcxYyZtD_UrZfM,345
2
+ apk_patchx/cli.py,sha256=VPBnG6luNIMv-My4wcBPqmECznqAVsDZuZNgNvGhHoI,9654
3
+ apk_patchx/exceptions.py,sha256=15lNGnf_3YBLP4IFUdIZgEJxvvbAA7DMETunwtx8Eik,790
4
+ apk_patchx/services/__init__.py,sha256=uhE0HQWrx7w01_mCfDFpksSie3s5fjkF5GL1sbvkN_o,38
5
+ apk_patchx/services/adb.py,sha256=ODMtBDZXUtXylICRD98-hWK2y6N9HJr7l4xErHo4htE,3550
6
+ apk_patchx/services/android_sdk.py,sha256=76ZhPHmKmYS0C9EG23voFelpjhkTzyQGcx-Ul2AhGHU,4874
7
+ apk_patchx/services/apktool.py,sha256=UAm0SlYu-7kgHyvzZUtjraw9W74rgN8k-yFZWlg3cbk,5211
8
+ apk_patchx/services/frida.py,sha256=S79rHrJDx45dTO0-JMP5M0-3QJ1BUKpqkrN9oUIpNMo,11718
9
+ apk_patchx/services/patch_dex.py,sha256=b3ALX8wajMVtvKpFoj8oETWUls0AEURI6BjLoQlMfxE,3890
10
+ apk_patchx/services/patch_smali.py,sha256=OkdPtvin5cE0_IvHf4EmatIXRuVuXznSemyRMXSJ3m8,4548
11
+ apk_patchx/services/signing.py,sha256=c1PVnRfWYbOOA7K3bw_IRjwEJcuE8bwZ3ct-eZJKWYY,3484
12
+ apk_patchx/services/split_merge.py,sha256=7azCN3aEn8P0vfCFKnlmPuTmMwO15JAneD2SFp4CHSc,5429
13
+ apk_patchx/utils/__init__.py,sha256=0e3XbwXHMW2osRDxWbvsM_OzJN2tg-6tGCK5zMeTGTw,39
14
+ apk_patchx/utils/core.py,sha256=Rk_zgWcKEWoV57Nzk9iSXZxt0kg_04aRPtxqe9mySgE,2400
15
+ apk_patchx/utils/manifest.py,sha256=BTUeDUgtzHsfgGSr01-GgloTU9YhANU7M2CyGFNpIiw,4833
16
+ apk_patchx/utils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ apk_patchx/utils/versions.py,sha256=mR8Tm6YceqgqioSA80fqO1_GJvNoBcBU9wEzRlIP18w,1762
18
+ apk_patchx-7.9.2025.2.dist-info/entry_points.txt,sha256=kIhrN6o-ANMa1-Wa5zXmDeMk2_FcDByHgh7UGmXMjCg,50
19
+ apk_patchx-7.9.2025.2.dist-info/licenses/LICENSE,sha256=DJU-he8Ob3g_K6vuP4KBzG0nYLQtepaQwgOIq_hI8Is,1080
20
+ apk_patchx-7.9.2025.2.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
21
+ apk_patchx-7.9.2025.2.dist-info/METADATA,sha256=YL_GBX2yfLRqCp87VVQbS689lhxsMqH2zseh2D4xsuA,2793
22
+ apk_patchx-7.9.2025.2.dist-info/RECORD,,
@@ -1,22 +0,0 @@
1
- apk_patchx/__init__.py,sha256=m10S0nYjOv4ckmaPbZbXKR_LM1MJ8VJsGRer3TqrU2c,345
2
- apk_patchx/cli.py,sha256=Wtol0GEYGcGWe1Bj93vcutBnfguLS3uVpptFlbgoxb4,9654
3
- apk_patchx/exceptions.py,sha256=15lNGnf_3YBLP4IFUdIZgEJxvvbAA7DMETunwtx8Eik,790
4
- apk_patchx/services/__init__.py,sha256=uhE0HQWrx7w01_mCfDFpksSie3s5fjkF5GL1sbvkN_o,38
5
- apk_patchx/services/adb.py,sha256=qI1dFf09U8x-m9C_sxVqMWl8hdPcbI7BtKASge4-7AM,3550
6
- apk_patchx/services/android_sdk.py,sha256=N9fk3inVGB6xU2JNY3jXMX5N1z3Ji1ZKHG7hxhpbp4s,4874
7
- apk_patchx/services/apktool.py,sha256=TlJC8ck9w85ZU4GFxT9nVAEO-2c5f9xBI8H7dXov7OA,5211
8
- apk_patchx/services/frida.py,sha256=SA2OCmVJT2OMT2XrrLDHf2alLkfLe8OdTrOYLZAo7yY,11718
9
- apk_patchx/services/patch_dex.py,sha256=CyopPW14rhq_357WP_0CjpLX-4pNc04I0hOkMbavDfc,3890
10
- apk_patchx/services/patch_smali.py,sha256=OkdPtvin5cE0_IvHf4EmatIXRuVuXznSemyRMXSJ3m8,4548
11
- apk_patchx/services/signing.py,sha256=GwT6mFyJdv0QJTpnUgsJ5tH_JBnqU3vW0Uu242UAQKg,3484
12
- apk_patchx/services/split_merge.py,sha256=7azCN3aEn8P0vfCFKnlmPuTmMwO15JAneD2SFp4CHSc,5429
13
- apk_patchx/utils/__init__.py,sha256=0e3XbwXHMW2osRDxWbvsM_OzJN2tg-6tGCK5zMeTGTw,39
14
- apk_patchx/utils/core.py,sha256=SsBzNWSC50388MTvTq4vNGbG1VRba8BpdE24Hg_Syhk,2400
15
- apk_patchx/utils/manifest.py,sha256=BTUeDUgtzHsfgGSr01-GgloTU9YhANU7M2CyGFNpIiw,4833
16
- apk_patchx/utils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- apk_patchx/utils/versions.py,sha256=mR8Tm6YceqgqioSA80fqO1_GJvNoBcBU9wEzRlIP18w,1762
18
- apk_patchx-7.9.2025.1.dist-info/entry_points.txt,sha256=kIhrN6o-ANMa1-Wa5zXmDeMk2_FcDByHgh7UGmXMjCg,50
19
- apk_patchx-7.9.2025.1.dist-info/licenses/LICENSE,sha256=DJU-he8Ob3g_K6vuP4KBzG0nYLQtepaQwgOIq_hI8Is,1080
20
- apk_patchx-7.9.2025.1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
21
- apk_patchx-7.9.2025.1.dist-info/METADATA,sha256=KPNnnLQN8q5V9eNNO61sRRYi8T7WSqkan_FEzLrQ0b8,2793
22
- apk_patchx-7.9.2025.1.dist-info/RECORD,,