Android Treble 架构下的 HAL

在 Android 8.0 时,Treble Project 重新设计了 Android 操作系统框架,以便让制造商能够以更低的成本,更轻松、更快速地将设备更新到新版 Android。在这种新架构中,采用 HIDL(HAL 接口定义语言,发音为 “hide-l”)来指定 framework 和 HAL 层之间的接口,从而可以实现无需重新编译 HAL,便能升级系统。

Tmux 简明指南

Tmux 做为一利器,很早就知道了,但是一直没有搞明白其使用场景,甚至一直在以错误的方式使用。现今花点时间搞明白它。

首先就是使用场景的问题,至于具体的命令以后在慢慢记忆。

JVM 之多态的实现

这部分的笔记在国庆假期前就整理好了,然后说再加工一下,放到 blog 上,毕竟笔记只是适合自己看,没有很强的逻辑性。但每个假期回来后,都会患上一定的假期综合征,总需要几天收收心。就一直拖到现在,简直无可救药。

OOP 的三大特征:封装、继承、多态。以前记忆的时候都是不分先后,随便记忆的,加深理解后才知道这三个特性是一个递进的过程。最后的多态是在继承的基础之上的。

这里先从 JVM 方法调用说起,最后在得出多态的概念。

JVM 之常量池

最近在看周志明的《深入理解 Java 虚拟机》这本书,不得说,学习 JVM 对更深层次理解 Java 有很大的帮助,两者互相印证。像打通了任督二脉一般,对 OOP 和 语法这块为什么要这么设计,语法为什么要这么写豁然开朗,融汇贯通后也更便于记忆这些知识点。

文章大多摘自自己的 Wiki JavaBasic,都是对知识点的总结,加上自己的理解后一条条写下的。难免有很多理解错误的地方,自己前前后后也纠正了不少,也是一个学习的过程。

关于常量池这块,本来就知道一个字符串常量池,可是看了 JVM 后,又冒出了好几个常量池,顿时懵逼了。看了大量资料,理解后总结出了这么点知识。

Android 安全引导机制分析和绕过测试

上半年为了学位写了一篇论文,今天把它转成了 markdown 格式,便于分享。全文在我的 Wiki里,算是全文吧,去除了很多论文必须的废话。并把其中的干货拿出来放到这里。

文章对高通的安全引导机制进行了简单分析,并在小米一款机器上综合漏洞成功绕过了其安全引导机制,达到自由修改系统分区的目的。

开始使用 Hexo

这几天看到一个主题,自己非常中意。

一看是 Hexo 下的,早前就想切到这个框架下,但拖延症严重,一直未动手。恰好赶上这个时机,自己又闲来无事,遂动手。

都是些琐碎的配置工作,自己的文章又不多,索性一篇篇的来修改,又把以前没注意的一些排版上的问题给纠正下。主要添加了一个以前没接触过的 leancloud 的统计。

使用一加3做 WIFI 中继器

隔壁学校的 wifi 网络不错,但是因为离得远,信号差,只能在窗户边能连得上。买了一个 360 wifi 中继器,但速度掉的厉害,而用手机直接连接网速倒是正常,就想着把手机作为 wifi 中继器。记得自己的第一台 android 手机,中兴 v880 当时是支持 wifi 中继的,一边连着 wifi,一边扩展 wifi 信号,后来才知道那算是中兴特有的。找了一圈,并没有找到这样的 APP,fqrouter2 倒是有这个功能,但是作者已经停止维护,在我手机上直接启动失败。参考 fqrouter2 的文章和脚本终于让 oneplus3 STA+AP 一起工作了。

使用一加3做 wifi 中继器脚本配置

  • ONEPLUS A3000
  • 系统 cm-13.0, Android 6.0.1
  • root 权限
  • iw iwlist wpa_cli 等二进制文件

华为 EMUI 5.0 root 方法

华为 EMUI 5.0 root 方法和分析

华为 EMUI5.0 获取 root 方法

华为EMUI5.0 目前 root 方法是刷TWRP,然后使用 TWRP 刷入 Chainfire 的 SuperSU 或者 phh 的 Superuser。你需要支持 Nougat 版本的 TWRP,但是在刷入 Chainfire 的 SuperSU 过程中会直接导致设备重启,因为 SuperSU 的工作原理是在采用 systemless 时无论在刷入还是开机过程中都需要 mount 一个 loop 设备 su.img,猜测是华为的 kernel 做了限制,当 mount 一个 loop 设备时设备会直接重启最后进入到 erecovery.

生成用于 Verifiedboot 的 system.img

Android 从 6.0 开始启用了 Verifiedboot,来保证系统的完整性

GetVerityTreeSize 和 GetVerityMetadataSize

build_verity_tree -s 2046820352

build_verity_metadata.py -s 2046820352

该两个方法在源码的 ./tools/releasetools/build_image.py 中.

参数是真实 system 分区的大小

生成预留空间的 system.simg

要重新打包 system.simg 给 verity_tree 和 verity_metadata 预留出空间,-l指定的大小为真实 system 空间的大小减去上一步分别得到的大小