Here how I done it in Cyanogenmod 13:
- Connect to adb:
$ adb connect 192.168.1.6:5555
- Get SystemUI.apk:
$ adb pull /system/priv-app/SystemUI/SystemUI.apk /home/user/Desktop/test/
- Unzip classes.dex from SystemUI.apk:
$ unzip /home/user/Desktop/test/SystemUI.apk classes.dex -d /home/user/Desktop/test/
Download smali and backsmali: https://bitbucket.org/JesusFreke/smali/downloads/
Disassemble classes.dex to smali:
$ java -jar /home/user/Desktop/test/baksmali-2.2.6.jar disassemble /home/user/Desktop/test/classes.dex -o /home/user/Desktop/test2
- Edit file
/home/user/Desktop/test2/com/android/systemui/usb/UsbPermissionActivity.smali
with text editor and find the line that says:
invoke-virtual {p0}, Lcom/android/systemui/usb/UsbPermissionActivity;->setupAlert()V
change this by commenting it out and adding two new lines:
#######invoke-virtual {p0}, Lcom/android/systemui/usb/UsbPermissionActivity;->setupAlert()V
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/android/systemui/usb/UsbPermissionActivity;->mPermissionGranted:Z
invoke-virtual {p0}, Lcom/android/systemui/usb/UsbPermissionActivity;->finish()V
- Assemble everything back to classes.dex
$ java -jar /home/user/Desktop/test/smali-2.2.6.jar assemble /home/user/Desktop/test2 -o /home/user/Desktop/classes.dex
- Get classes.dex back to SystemUI.apk:
$ zip -ru /home/user/Desktop/test/SystemUI.apk /home/user/Desktop/classes.dex
- Send SystemUI.apk back to Android:
$ adb push /home/user/Desktop/test/SystemUI.apk /system/priv-app/SystemUI/
And Android permission to access the USB stick are granted forever.
Now for doing that on Emteria:
- Connect to adb:
$ adb connect 192.168.1.6:5555
- Get SystemUI.apk:
$ adb pull /system/priv-app/SystemUI/SystemUI.apk /home/user/Desktop/test/
- Unzip classes.dex from SystemUI.apk:
$ unzip /home/user/Desktop/test/SystemUI.apk classes.dex -d /home/user/Desktop/test/
Archive: /home/user/Desktop/test/SystemUI.apk
caution: filename not matched: classes.dex
There is no classes.dex in SystemUI.apk
If I try to disassemble whole SystemUI.apk:
java -jar /home/user/Desktop/test/baksmali-2.2.6.jar disassemble /home/user/Desktop/test/SystemUI.apk -o /home/user/Desktop/test/
backsmali gives me error:
Exception in thread "main" org.jf.dexlib2.DexFileFactory$DexFileNotFoundException: Could not find entry classes.dex in /home/user/Desktop/test/SystemUI.apk.
at org.jf.dexlib2.DexFileFactory$DexEntryFinder.findEntry(DexFileFactory.java:384)
at org.jf.dexlib2.DexFileFactory.loadDexFile(DexFileFactory.java:89)
at org.jf.baksmali.DexInputCommand.loadDexFile(DexInputCommand.java:149)
at org.jf.baksmali.DisassembleCommand.run(DisassembleCommand.java:162)
at org.jf.baksmali.Main.main(Main.java:102)
Telling me that classes.dex is needed to disassemble SystemUI.apk and I need classes.dex to find UsbPermissionActivity.smali inside.
Where can I find UsbPermissionActivity other than in SystemUI.apk?