Skip to content

Cregrant/SmaliScissors

Repository files navigation

SmaliScissors

SmaliScissors is an application designed to apply patches from the ApkEditor android application to a prepared ( disassembled) apk project.
However, please note that certain patches may not work as expected due to variations in XML file structure across different decompilers or other potential issues.

Patch support status:

  • ADD_FILES ✔️
  • REMOVE_FILES ✔️
  • REMOVE_CODE ✅ (New)
  • REMOVE_CODE_ACTION ✅ (New)
  • MATCH_REPLACE ✔️
  • MATCH_ASSIGN ✔️
  • MATCH_GOTO ✔️
  • GOTO ✔️
  • MERGE ❌ (Not supported)
  • EXECUTE_DEX ❓ (Supported with limitations)
  • DUMMY ✔️

For more detailed information about patches, please refer to the wiki.

Build

To get started, clone this repository:

git clone https://github.com/Cregrant/SmaliScissors.git && cd SmaliScissors

Then, build the minimalistic patcher.jar library for inclusion in your application:

gradlew :patcher:fatJar

For more details on integrating SmaliScissors with your Gradle project and configuring logback (for SLF4J), refer to the Example lib usage wiki.


Alternatively, build a console_patcher.jar file to execute patches from the command line:

gradlew :console_launcher:fatJar

Usage

To print the usage information (use Tab to find a JAR file):

java -jar console_patcher-<version>.jar

For interactive selection, use:

java -jar console_patcher-<version>.jar -i C:\projects_root -p C:\patches_folder -s

Or use predefined values:

java -jar console_patcher-<version>.jar -i C:\projects_root\decompiled_project_folder -p "C:\patches_folder\your best patch.zip"

SmaliScissors logs information using The Simple Logging Facade for Java (SLF4J).

License

The source code for SmaliScissors is released under the Apache License 2.0.