Skip to content

Instantly share code, notes, and snippets.

@Alia5
Forked from sebfisch/replace-classes-in-apk.sh
Created September 21, 2016 03:03
Show Gist options
  • Save Alia5/524637566b7715a89e6bbd342cb16cd3 to your computer and use it in GitHub Desktop.
Save Alia5/524637566b7715a89e6bbd342cb16cd3 to your computer and use it in GitHub Desktop.

Revisions

  1. Sebastian Fischer revised this gist May 22, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion replace-classes-in-apk.sh
    Original file line number Diff line number Diff line change
    @@ -20,7 +20,7 @@ jar uvf classes.jar $PKG # and replace originals
    rm -rf $PKG
    d2j-jar2dex.sh -f -o classes.dex classes.jar # convert back to .dex
    rm classes.jar
    jar uvf $APK classes.dex # update .dex in .apk
    jar uvf $APK classes.dex # replace .dex in .apk
    rm classes.dex
    mv $APK unsigned.apk
    d2j-apk-sign.sh -f -o $APK unsigned.apk # sign modified .apk
  2. Sebastian Fischer revised this gist May 22, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion replace-classes-in-apk.sh
    Original file line number Diff line number Diff line change
    @@ -16,7 +16,7 @@ unzip $APK classes.dex # extract original classes
    d2j-dex2jar.sh -f -o classes.jar classes.dex # and convert them to .jar
    rm classes.dex
    unzip $JAR $PKG/* # extract alternative classes
    jar uvf classes.jar $PKG # and overwrite originals
    jar uvf classes.jar $PKG # and replace originals
    rm -rf $PKG
    d2j-jar2dex.sh -f -o classes.dex classes.jar # convert back to .dex
    rm classes.jar
  3. Sebastian Fischer revised this gist May 22, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion replace-classes-in-apk.sh
    Original file line number Diff line number Diff line change
    @@ -20,7 +20,7 @@ jar uvf classes.jar $PKG # and overwrite originals
    rm -rf $PKG
    d2j-jar2dex.sh -f -o classes.dex classes.jar # convert back to .dex
    rm classes.jar
    jar uvf $APK classes.dex # overwrite original .dex
    jar uvf $APK classes.dex # update .dex in .apk
    rm classes.dex
    mv $APK unsigned.apk
    d2j-apk-sign.sh -f -o $APK unsigned.apk # sign modified .apk
  4. Sebastian Fischer revised this gist May 22, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion replace-classes-in-apk.sh
    Original file line number Diff line number Diff line change
    @@ -16,7 +16,7 @@ unzip $APK classes.dex # extract original classes
    d2j-dex2jar.sh -f -o classes.jar classes.dex # and convert them to .jar
    rm classes.dex
    unzip $JAR $PKG/* # extract alternative classes
    jar uvf classes.jar $PKG # an overwrite originals
    jar uvf classes.jar $PKG # and overwrite originals
    rm -rf $PKG
    d2j-jar2dex.sh -f -o classes.dex classes.jar # convert back to .dex
    rm classes.jar
  5. Sebastian Fischer revised this gist May 22, 2012. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions replace-classes-in-apk.sh
    Original file line number Diff line number Diff line change
    @@ -15,12 +15,12 @@ PKG=replaced/package/path # example: PKG=org/mapsforge
    unzip $APK classes.dex # extract original classes
    d2j-dex2jar.sh -f -o classes.jar classes.dex # and convert them to .jar
    rm classes.dex
    unzip $JAR $PKG # extract alternative classes
    zip -u classes.jar $PKG # an overwrite originals
    unzip $JAR $PKG/* # extract alternative classes
    jar uvf classes.jar $PKG # an overwrite originals
    rm -rf $PKG
    d2j-jar2dex.sh -f -o classes.dex classes.jar # convert back to .dex
    rm classes.jar
    zip -u $APK classes.dex # overwrite original .dex
    jar uvf $APK classes.dex # overwrite original .dex
    rm classes.dex
    mv $APK unsigned.apk
    d2j-apk-sign.sh -f -o $APK unsigned.apk # sign modified .apk
  6. Sebastian Fischer revised this gist May 22, 2012. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions replace-classes-in-apk.sh
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,7 @@
    #!/bin/bash

    # Replaces classes in Android Package Files
    # (c) Sebastian Fischer, CC-BY

    # Can be used to rebuild an App with a modified version of a used library,
    # as required for closed works that link to an LGPL library.
  7. Sebastian Fischer created this gist May 22, 2012.
    26 changes: 26 additions & 0 deletions replace-classes-in-apk.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,26 @@
    #!/bin/bash

    # Replaces classes in Android Package Files

    # Can be used to rebuild an App with a modified version of a used library,
    # as required for closed works that link to an LGPL library.

    # Depends on: https://code.google.com/p/dex2jar/

    APK=path/to/SomeApp.apk
    JAR=path/to/interface-compatible-classes.jar
    PKG=replaced/package/path # example: PKG=org/mapsforge

    unzip $APK classes.dex # extract original classes
    d2j-dex2jar.sh -f -o classes.jar classes.dex # and convert them to .jar
    rm classes.dex
    unzip $JAR $PKG # extract alternative classes
    zip -u classes.jar $PKG # an overwrite originals
    rm -rf $PKG
    d2j-jar2dex.sh -f -o classes.dex classes.jar # convert back to .dex
    rm classes.jar
    zip -u $APK classes.dex # overwrite original .dex
    rm classes.dex
    mv $APK unsigned.apk
    d2j-apk-sign.sh -f -o $APK unsigned.apk # sign modified .apk
    rm unsigned.apk