Skip to content

Commit 490540f

Browse files
committed
added support for python3
0 parents  commit 490540f

File tree

6 files changed

+1555
-0
lines changed

6 files changed

+1555
-0
lines changed

README.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Xamarin AssemblyStore Explorer (pyxamstore)
2+
This is an alpha release of an `assemblies.blob` AssemblyStore parser written in Python. The tool is capable of unpack and repackaging `assemblies.blob` and `assemblies.manifest` Xamarin files from an APK.
3+
4+
## Installing
5+
```shell
6+
pip3 install build && python3 -m build && pip install --force-reinstall dist/pyxamstore-1.0.0-py3-none-any.whl
7+
```
8+
9+
You can then use the tool by calling `pyxamstore`
10+
11+
## Usage
12+
### Unpacking
13+
I recommend using the tool in conjunction with `apktool`. The following commands can be used to unpack an APK and unpack the Xamarin DLLs:
14+
15+
apktool d yourapp.apk
16+
pyxamstore unpack -d yourapp/unknown/assemblies/
17+
18+
Assemblies that are detected as compressed with LZ4 will be automatically decompressed in the extraction process.
19+
20+
### Repacking
21+
If you want to make changes to the DLLs within the AssemblyStore, you can use `pyxamstore` along with the `assemblies.json` generated during the unpack to create a new `assemblies.blob` file(s). The following command from the directory where your `assemblies.json` file exists:
22+
23+
pyxamstore pack
24+
25+
From here you'll need to copy the new manifest and blobs as well as repackage/sign the APK.
26+
27+
# Additional Details
28+
Additional file format details can be found on my [personal website](https://www.thecobraden.com/posts/unpacking_xamarin_assembly_stores/).
29+
30+
# Known Limitations
31+
* DLLs that have debug/config data associated with them

pyproject.toml

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[tool.poetry]
2+
name = "pyxamstore"
3+
version = "1.0.0"
4+
description = "Python utility for parsing Xamarin AssemblyStore blob files"
5+
authors = ["jakev"]
6+
keywords = ["android", "device", "security", "mobile", "reverse-engineering", "Xamarin", "AssemblyStore", "reverse", "hacking"]
7+
8+
classifiers = [
9+
'Development Status :: 3 - Alpha',
10+
'Natural Language :: English',
11+
'License :: OSI Approved :: MIT License',
12+
'Programming Language :: Python',
13+
'Programming Language :: Python :: 3',
14+
'Programming Language :: Python :: 3.6',
15+
'Programming Language :: Python :: 3.7',
16+
'Programming Language :: Python :: 3.8',
17+
'Programming Language :: Python :: 3.9',
18+
'Programming Language :: Python :: 3.10',
19+
'Programming Language :: Python :: 3.11',
20+
]
21+
license = "MIT"
22+
readme = "README.md"
23+
homepage = "https://github.com/jakev/pyxamstore"
24+
repository = "https://github.com/jakev/pyxamstore"
25+
documentation = "https://github.com/jakev/pyxamstore"
26+
27+
[tool.poetry.dependencies]
28+
python = "^3.6"
29+
docopt = "^0.6.2"
30+
31+
[tool.poetry.dev-dependencies]
32+
33+
[build-system]
34+
requires = ["poetry-core>=1.0.0"]
35+
build-backend = "poetry.core.masonry.api"
36+
37+
[tool.poetry.scripts]
38+
pyxamstore = "pyxamstore:main"

0 commit comments

Comments
 (0)