alpaka-re


Namealpaka-re JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryA tool for mapping classes between different versions of the same APK.
upload_time2025-07-23 15:22:04
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseNone
keywords apk android mapping reverse-engineering deobfuscation
VCS
bugtrack_url
requirements lief click
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Alpaka

Alpaka is a command-line tool designed for mapping classes across different
versions of the same APK. This is particularly useful for reverse engineering,
allowing you to track class renames and changes across different builds, and
preserving manual deobfuscation efforts.

## Features

* Class Mapping: Generates a JSON mapping of classes from one APK version to another.

* Deobfuscation Migration: Migrate existing Enigma deobfuscation
  mapping files to new APK versions, helping maintain your renaming efforts
  in tools like Jadx.

## Usage

### Basic Class Mapping

Output a JSON mapping from `A.apk` (older version) to `B.apk` (newer version).
This will show how classes in `A.apk` correspond to classes in `B.apk`.

```console
> alpaka map A.apk B.apk1
{
    "LX/003;": "LX/003;",
    "LX/004;": "LX/004;",
    "LX/005;": "LX/005;",
    "LX/006;": "LX/006;",
...
```

### Migrating Deobfuscation Mappings Across Versions

If you have an Enigma mapping file (e.g., `A.mapping`) for `A.apk`, you can use
Alpaka to generate a new mapping file (`B.mapping`) that applies your existing
renames to `B.apk`. This is incredibly useful for maintaining your manual
deobfuscation work when a new version of the APK is released.

The generated `B.mapping` file can then be imported into tools like Jadx to preserve your manual renamings!

```console
> alpaka map --deobfuscation A.mapping --only-obfuscated A.apk B.apk1 > B.mapping
```

### Advanced Options

The `map` command supports several options to fine-tune its behavior:

* `--only-obfuscated`: Prevents Alpaka from creating unnecessary mappings
  between unobfuscated classes.
* `--no-propagation`: Only run the first analysis stage. Usually leads to more
  accurate results but fewer mappings overall.

## License

Alpaka is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "alpaka-re",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "apk, android, mapping, reverse-engineering, deobfuscation",
    "author": null,
    "author_email": "Daniel Firer <danielfirefire@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/6c/ef/d03dd1cee439c3aae58d2dfac151aa4460f86d9d836f13d3ab8fd7fbf00a/alpaka_re-0.1.0.tar.gz",
    "platform": null,
    "description": "# Alpaka\n\nAlpaka is a command-line tool designed for mapping classes across different\nversions of the same APK. This is particularly useful for reverse engineering,\nallowing you to track class renames and changes across different builds, and\npreserving manual deobfuscation efforts.\n\n## Features\n\n* Class Mapping: Generates a JSON mapping of classes from one APK version to another.\n\n* Deobfuscation Migration: Migrate existing Enigma deobfuscation\n  mapping files to new APK versions, helping maintain your renaming efforts\n  in tools like Jadx.\n\n## Usage\n\n### Basic Class Mapping\n\nOutput a JSON mapping from `A.apk` (older version) to `B.apk` (newer version).\nThis will show how classes in `A.apk` correspond to classes in `B.apk`.\n\n```console\n> alpaka map A.apk B.apk1\n{\n    \"LX/003;\": \"LX/003;\",\n    \"LX/004;\": \"LX/004;\",\n    \"LX/005;\": \"LX/005;\",\n    \"LX/006;\": \"LX/006;\",\n...\n```\n\n### Migrating Deobfuscation Mappings Across Versions\n\nIf you have an Enigma mapping file (e.g., `A.mapping`) for `A.apk`, you can use\nAlpaka to generate a new mapping file (`B.mapping`) that applies your existing\nrenames to `B.apk`. This is incredibly useful for maintaining your manual\ndeobfuscation work when a new version of the APK is released.\n\nThe generated `B.mapping` file can then be imported into tools like Jadx to preserve your manual renamings!\n\n```console\n> alpaka map --deobfuscation A.mapping --only-obfuscated A.apk B.apk1 > B.mapping\n```\n\n### Advanced Options\n\nThe `map` command supports several options to fine-tune its behavior:\n\n* `--only-obfuscated`: Prevents Alpaka from creating unnecessary mappings\n  between unobfuscated classes.\n* `--no-propagation`: Only run the first analysis stage. Usually leads to more\n  accurate results but fewer mappings overall.\n\n## License\n\nAlpaka is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A tool for mapping classes between different versions of the same APK.",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/DanielFi/alpaka/issues",
        "Homepage": "https://github.com/DanielFi/alpaka",
        "Repository": "https://github.com/DanielFi/alpaka"
    },
    "split_keywords": [
        "apk",
        " android",
        " mapping",
        " reverse-engineering",
        " deobfuscation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "470eb1125f5e66eb967162d508f5f199056f300288eeb3e7c1a4e4a95124c6c9",
                "md5": "a575927429526669277c6117bf9ea179",
                "sha256": "660b2df51a58092794ccabe7807b640a4b4a8400ed02937045a15081e7fa740c"
            },
            "downloads": -1,
            "filename": "alpaka_re-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a575927429526669277c6117bf9ea179",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 8915,
            "upload_time": "2025-07-23T15:22:03",
            "upload_time_iso_8601": "2025-07-23T15:22:03.372505Z",
            "url": "https://files.pythonhosted.org/packages/47/0e/b1125f5e66eb967162d508f5f199056f300288eeb3e7c1a4e4a95124c6c9/alpaka_re-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6cefd03dd1cee439c3aae58d2dfac151aa4460f86d9d836f13d3ab8fd7fbf00a",
                "md5": "d2311feed6454c26f8b6d29f9f10672d",
                "sha256": "3fbbc5c3902a92d728cadaa38f1168343c541b13c366fc17f08c6f8ba975975c"
            },
            "downloads": -1,
            "filename": "alpaka_re-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "d2311feed6454c26f8b6d29f9f10672d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 7758,
            "upload_time": "2025-07-23T15:22:04",
            "upload_time_iso_8601": "2025-07-23T15:22:04.654621Z",
            "url": "https://files.pythonhosted.org/packages/6c/ef/d03dd1cee439c3aae58d2dfac151aa4460f86d9d836f13d3ab8fd7fbf00a/alpaka_re-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-23 15:22:04",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "DanielFi",
    "github_project": "alpaka",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "lief",
            "specs": []
        },
        {
            "name": "click",
            "specs": []
        }
    ],
    "lcname": "alpaka-re"
}
        
Elapsed time: 0.82712s