今天收到了个 Kindle Paperwhite 2 ,就想顺便看看这最新版 Kindle 是不是还能装多看。一看果然可以,就下载下来研究一下。对,我的主要目的是想知道究竟是怎么装进去的!一看“KindlePaperwhite_安装法”里头的文件名,顿时就醉了:

KP安装方法.pdf
update_kpw_$(cd .. && cd .. && cd .. && cd mnt && cd us && cd DK_System && cd install && . top.sh).bin

简直是简单粗暴!

一想到之前 Kindle Touch 的安装方法,同样也是很萌——在 Kindle 系统的启动脚本(init.d)中,有一个脚本会在以调试模式启动时解压内部存储中的 data.tar.gz 文件并且直接强制覆盖到系统根目录!这样一来,想做什么也都没有问题了。至于怎么进调试模式?哦,在内部存储根目录下放一个 ENABLE_DIAGS 即可……(这其实已经是“比较麻烦”的做法了,更早之前几个版本不断被发现有浏览器注入漏洞、 MP3 播放器注入漏洞、 OTA 升级包签名漏洞……)

之前被发现的 Kindle Touch 外部字体支持也是如此:在 /etc/fonts/conf.d 中发现有一个配置文件将内部存储的 fonts 文件夹放入了字体搜寻目录,如此一来就皆大欢喜了……连越狱都不需要就可以增加字体。

你问这些东西最早是怎么被发现的?还是要感谢 Lab126 ——整个 Kindle 从一开始就没有做多少“防御措施”:基础架构是一个没有经过多少修改的嵌入式 Linux ,使用 fontconfig 管理字体, X + 定制版 Awesome 用作图形显示和用户输入管理,最后则是一个用 Java 写的界面(以 root 运行……),包括电子书阅读器、浏览器、播放器都是在这个 Java 界面之上,浏览器引擎是 Webkit ,播放器等一些界面是 JS 实现的(依赖于一些私有的 native API )。这些 Java 和 JS 程序中有不少漏洞,应该是最先被用来越狱的手段。后来就发现了系统中布满了“调试后门”……

现在 Kindle Touch 已经修掉了大部分 bug 、调试模式也不那么容易进了,不过这也不是什么大问题。 Kindle 使用的是 Freescale 芯片,只需要能够进入其下载模式,就能为所欲为了。果然, Kindle Touch 的 Magic Key 被发现,可以被切换至 Freescale HID 设备,然后就可以使用 Freescale 的相关开发工具(比如 MfgTool )进行 USB Download 了……想要启动到什么模式,只需要载入指定的 binary 就行。这里还有一个 Linux 平台下的工具 imx_usb_loader

P.S. What is Lab126? (在 Kindle 的文件系统里 grep 这个词,就能找到非常多有趣的东西……)