What I'd like to achieve
Decompile AndroidManifest.xml packaged in apk from binary form into normal xml file, edit it and recompile it back into binary file acceptable for apk. Basically I need a driver for AXML files
Short background
I'm working on an APK injection project. My goal is
- Disassemble the dalvik binary
- Read AndroidManifest xml and add modifications to it, like change main activity and add permissions
- rebuild and sign the apk file
I use apktool for assembling and disassembling the apk. However the apk tool works only with --no-res
option, if apk is disassemled with resources it can not be built back. Here's a github issue describing this bug.
The problem
Since I disassemle the apktool d --no-res app-debug.apk
with no res flag the Generated android manifest comes in binary form. I can disassemble the manifest using apktool
but I can not assemnle it back.
What I want to be able to do
I need to either:
- Find a way to disassemble the manifest and then assemble it back into binary form
- Find a way to use
apktool
with resources
What I have tried so far
- Replacing the binary
AndroidManifest.xml
with plain-text version and then build. Theapktool
would build. However the installation of the app to device fails with "Parse error there is a problem while parsing the package". - Using different versions of
apktool
:v2.3.2
,v2.3.1
,v2.3.0
,v2.2.0
,v2.2.1
,v2.2.2
- Compiling axml using following projects: https://github.com/rednaga/axmlprinter ; https://github.com/ZaratustraN/axml-parser ; https://github.com/shazam/axmlparser
Disclaimer
Although stackoverflow is a community for knowledge sharing, and not judging what it's used for - I see a lot of people picking on others in similar questions with accusations for illegal activities.
What I'm doing is absolutely legal and will not be used to exploit anyone.
but the app does not run
what happens then? Does it produce any meaningful logs in LogCat? – Protectingadb install /path/to/new.apk
andParse error there is a problem while parsing the package
is the response from that? Okay, makes sense then that you might not see the LogCat logs as that will be within the Android OS and may be suppressed. Also, when you say you 'resign the apk file' are you resigning it with the same keystore that it was signed with when you first installed it? else you will have a signature conflict. Finally, you decompiled without resource, wouldn't you also need them when you recompile the APK? – Protecting