Android Studio 问世前,Android 平台软件开发主要用 ADT 工具包完成。ADT 工具包的 IDE 是 Eclipse,库文件使用 Java 语言中标准的 jar 包。jar 包其实是一个 zip 格式的压缩包文件,存放着编译后的 Java 代码的 class 文件的集合。因此称 jar 文件为“jar 包”
查看 android.jar 的格式和内容(命令行输入 bash,进入 Bash on Ubuntu on Windows 的 Shell 模式,配置方法:https://blog.csdn.net/zlmm741/article/details/104577290 ,再输入如下命令):
$ file android.jar
$ unzip -l android.jar | less
输出如下(节选):
输入第二条命令前可能需要先安装 unzip,命令如下:
$ sudo apt-get install unzip
部分对安全性要求较高的 jar 包,会对包含的 class 文件进行签名,签名信息保存在 jar 包的 META-INF 目录
分析 jar 包有静态分析和动态分析两种
静态分析:
可使用 jd-gui 这类 jar 查看工具(下载地址:https://github.com/java-decompiler/jd-gui/releases )。jd-gui 内部会调用反编译接口,将 jar 包中的 class 文件编译成 Java 文件,并将结果显示,如下图:
若不习惯在 jd-gui 中查看 Java 代码,可将 jar 包反编译称 Java 文件,导入 Java 编辑器中查看。选择 jd-gui 菜单项“File” -> “Save All Sources”即可保存所有反编译出的 Java 文件
动态分析:
PC 平台可用与系统特性相关的工具 Dtrace 或 soot 对 jar 包中的文件进行运行时跟踪
Android 平台没有可直接使用的工具,要用迂回的办法,即先将 jar 包集成到编写的 APK 中,再对要分析的 jar 包中的类与方法进行插桩和运行时分析
在 Android 平台进行动态分析时,可参考 PC 上的方案,如 AspectJ 的面向切片编程技术。AspectJ 提供了对 jar 包中方法的侵入式 Hook 技术,可通过编写 AspectJ 脚本 Hook jar 包中的方法。Android 平台有 AspectJ 的移植版本,只要编写 Hook 实例即可,详情见之后的笔记
aar 包
Android Studio 问世前:jar 包中通常只包含其所使用的代码,不包含代码所使用的资源数据;如果第三方 SDK 使用了大量的图片、声音、布局等资源,除了要将 jar 包引用到工程外,还要将 SDK 中的资源手动复制到工程中
Android Studio 问世后:AS 将 aar 文件作为全新的库文件格式。aar 除了可包含代码,还可包含任何在开发中用到的资源数据
在Android的priv-app目录下发现有oat类型的文件夹 什么是oat? It’s Of Ahead Time, a silly reordering of Ahead Of Time. We went with that because then we say that process of converting .dex files to .oat files would be called quakerizing and that wo…
timebasic.js
//时间戳转年月日
export function format(shijianchuo) {//shijianchuo是整数,否则要parseInt转换var time new Date(shijianchuo);var y time.getFullYear();var m time.getMonth() 1;m m < 10 ? "0" m : m;var d time.getDate…
注意事项
生成证书请求的填写 范例Subject: C CN, ST Beijing, L Beijing, O MSI, OU msi, CN ca, emailAddress cagmssl.com 前面的步骤存在错误,后面改用脚本进行证书生成,阅读时请跳过前面错误的内容
错误的内容 -> 开始
CA
生成私钥 o…