前言
要换工作了,最近的工作内容主要是交接!交接,人一闲下来心思就会活跃起来,想想之前自己在技术点上挖了很多坑,终于有机会开始补!补!补!。第一项就是给自己的xiaomi6装个nethunter吧!
nethunter
nethunter是kali出品的一个移动渗透测试平台,包含一个自定义kernel,一个kali linux chroot和一堆android app。除了kali linux中的渗透测试工具库外,还支持HID键盘攻击、BadUSB攻击、Evil AP MANA攻击等等。当然这些进阶功能就需要自定义kernel支持了。
nethunter支持设备
这个数据可以从github.com/offensive-security/kali-nethunter/wiki中得到。主要支持谷歌的亲儿子 Nexus系列,国外很火的一加系列,还有索尼、LG的某些款等。没有我国际米,真是遗憾。
移植新设备的要求
虽然官方不支持,但是我现在有时间啊!燥起来!!翻看官网的移植章节,核心要求有两个:
- 有内核源码 (蓝牙、无线USB、HID键盘等工作的基础)
- 可以解锁刷机 (不能刷机就睡觉吧)
刷机就不说了,绝对没问题。唯一的要求就是有内核源码了。 百度一搜,xiaomi6已经在github上开源了 (https://github.com/MiCode/XiaoMi_Kernel_OpenSource) ,不过只有N、O两个版本。低头一看,我的手机刷的是开发版现在已经是P了 。不重要,不重要。
编译源码
物料
1、操作系统 ubuntu 14.04 64bit 2、交叉编译环境 aarch64-linux-android-4.9 谷歌官网下载就不要想了,这边推荐一个编译集合包 https://bitbucket.org/jonascardoso/toolchain_aarch64_travis/downloads ,里面不止有google_gcc,还有linaro_gcc、sabermod_gcc、ubertc_gcc。 3、内核源码 这边要选择自己手机对应的版本。xiaomi6对应代号是sagit,我选择android o版本的内核源码,所以对应的分支就是sagit-o-oss
1 | git clone --depth=1 https://github.com/MiCode/XiaoMi_Kernel_OpenSource -b sagit-o-oss |
环境准备
工作目录:
- /home/jiutian/kernel 主目录
- /home/jiutian/kernel/toolchain 交叉编译链工具
- /home/jiutian/kernel/XiaoMi_Kernel_OpenSource 源码
运行环境
注意: 1、CROSS_COMPILE路径中使用了google_gcc作为编译链。 2、CROSS_COMPILE最后有且只有一个-号。
1 | export ARCH=arm64 |
make O=out sagit_user_defconfig
1 |
|
打开配置菜单
cd out make menuconfig
1 |
|
cd ..
make O=out -j8 开启多线程编译
make O=out
### 完成
等待编译完成,可以在out/arch/arm64/boot目录下找到我们的目标文件zImage-dtb(zImage)。
## 附录
#### 没有opensslv.h
sudo apt-get install libssl-dev
#### 没有curses.h
sudo apt-get install libncurses5-dev
#### struct hci_uart no member named cx_lock
注释掉报错行 spin_lock_init(&hu->rx_lock);
参考: https://git.isee.biz/linux-kernel/linux-imx/commit/7649faff1cfe4f76dabf78cd53d659d39f65b3c1#667510e12d093c97206ed983579be74ed134a8a8_472_472