APK文件其实是一个zip压缩包
APK的常见文件结构如下:
- AndroidManifest.xml 声明四大组件、权限等信息。解压是无法直接打开的,可以使用apktool等工具解密
- lib 存放各种架构下的so文件的文件夹 存放的so文件可以使用IDA工具进行修改。
重打包手段:替换/data/app/packagename/lib下的so为你修改之后的so
重新打包APK,但是要过签名检验 - res 存放 未编译的资源文件,存放图片。样式。xml等资源 raw文件未原始文件,存放音频等内容,其他文件会被压缩处理
- class.dex 源码生成的.class文件,经过转化后成为Android系统可识别的Dalvik Byte Code。
可使用apktool等工具进行反编译,反编译后的jar文件可能存在部分错误,需要自己去调试。
反制方法:进行应用加固、代码混淆
应用加固反制方法:脱壳、去GooglePlay下载应用,因为谷歌是aab文件,安装之后拿出来的APK没带so,需要去安装目录lib下把so给补全 - resources.arsc 编译过后的资源文件
- assets 存放的文件可用AssetManager进行获取
- META-INF用于存放应用的签名和检验信息,
编译过程
aidl文件先转化为java接口文件
资源文件被aapt处理为resources.arsc并且生成R.java
编译器将源码、R.java`aidl生成的Java接口文件编译成.class文件
.class文件和第三方库转化为dex文件,如果遇到65535问题,就要进行分包
c++代码通过NDK编译为指定架构的so文件
打包其他资源生成APK
jarsigner进行签名
zipalign进行优化生成最终APK文件
安装流程:
应用发送安装Intent
PackageInstall启动进入安装流程
复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。
https://blog.csdn.net/u012267215/article/details/88313259
这边文章讲的清楚
系统应用静默安装:
使用反射或者引用framework.jar调用安装方法。
ADB安装
adb install -r 应用APK存放路径文章来源:https://www.toymoban.com/news/detail-610254.html
另类的APK安装:
github的blackbox仓库 使用了插件化的思想进行加载APK,可以做你想做的事文章来源地址https://www.toymoban.com/news/detail-610254.html
到了这里,关于Android APK文件笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!