Compile Kali Nethunter

作者 Known Rabbit 日期 2017-01-20
Compile Kali Nethunter

黑客嘛,随身总要带一些行头,以满足处处装逼的欲望,于是他们发明了Kali Nethunter,把黑客精神随身装在手机里,行之所至,处处志之。行头哪里来?诶诶我不送,不送啊。黑客嘛,用自己的东西才叫牛逼,用别人的东西只能叫装逼。所以我在这讲一讲怎么把裤兜里刷微信玩游戏的手机统统变成“黑客手机”。

这两个月Cyanogen倒闭了,CM也改名叫LineageOS了,还紧跟潮流升级Android N(CM14.1)了,所有的工作都要推倒重来了。趁着重新来过的机会把以前的经验总结一下,一边给我手机升一边写教程,不用担心,步骤都是通用的哦~

对读者的要求

我们要在手机里装Kali Nethunter,如果你的手机是net hunter官方支持的,那玩过手机,刷过机,卡刷zip包 对你来说应该不在话下。

如果不支持的话,由于本篇文章涵盖如何编译自己的CM系统并将其内核整合到nethunter中。所以,还得懂点Linux,会在命令行下敲命令,如果自己编译过软件当然更好,毕竟它本质上就是这点东西。

如果你最后刷机成功了,那你更得懂点linux,因为这个软件是没有界面的,你可以当它是一个Linux的虚拟机,不会点的话,装上又有啥用呢?

对手机的要求

我自己手机是一加3,如果你不是的话……

内核开源

虽然名义上讲,步骤都是通用的,可首先,手机得给力。对手机最大的要求就是:内核代码开源。有它我们才能
我所知道的国内厂家开放源码的有:一加、华为、小米、中兴。一加和小米在Github上有,华为中兴要去官网自己找,其他的话……我也不了解放狗搜吧。这里有个参考教程(英文)。外国手机的话,我们听过的大厂基本都能找到,亲儿子肯定开源,三爽那么多定制ROM的肯定也有,其他的也看上面那个帖子能找得到。

是否支持CM?

说实话哈,我只研究过怎样在CyanogenMod下编译整个安卓。因为它的编译环境很好配,敲命令就行,而且我也没心思研究整个系统,只想改个内核参数而已。
怎么查支持不支持?[机型 cm]百度一下,有就是有,没有就……没办法了。当然,如果像Google亲儿子或者有AOSP AOKP等等别的ROM支持,用它的代码做编译环境也可以,命令都是大同小异。
如果CM没有但是能找到内核源码的话,也可以。应该说更方便。直接make就行,不用这个那个依赖啥啥的。nethunter的教程里涵盖了如何编译一个单独的内核,这里就不细讲了。

nethunter官方支持

如果手机是官方支持的型号,直接撸他们的下载链接就行,然后像普通安卓刷机包一样,卡刷进去,重启就好了,不用往下看。

配置环境

系统要求:Linux(最好是Ubuntu)或者macOS。

安装依赖

先安装依赖,主要参考官方教程来输命令。
要点:
对着自己的系统比如ubuntu15.04就输 “For Ubuntu >= 15.04”这个标题下面的命令。只要安装好JDK和package就好,USB配置可以忽略。
mac尤其注意

  1. 需要安装位置的磁盘是区分大小写的,在磁盘工具里能看到是不是,不区分的话,按照上面教程里面的步骤新建一个sparseimage就好
  2. 苹果官网下载Xcode 7.3.1版本,最新版本不兼容,App Store让你更新也不要更新。
  3. 需要额外安装linux的程序, brew install coreutils findutils gnu-sed,我写了个小脚本把他们加到PATH变量里,稍后发出来

下载安卓源码

源码因人而异,主要的命令还是参考这个教程

搞到repo小程序

sudo wget https://storage.googleapis.com/git-repo-downloads/repo -O /usr/local/bin/repo

新建一个你喜欢的目录

mkdir ~/android
cd ~/android

用repo小程序下载源码

repo init -u https://github.com/LineageOS/android.git-b cm-14.1 --depth=1 --groups=all,-notdefault,-x86,-mips,-linux,-exynos5

注意!上一句命令中的那个网址根据你的系统不同可以不一样,那个网址是整个安卓系统的源码索引,如果CM支持你的手机,那就不用变。其他的参数可以通过 repo init -h 看是什么意思。
开始下载(大概18G左右)

repo sync

准备内核源码

每一次进入编译环境都要准备一下环境变量,下面这一句每次编译都要输入

source build/envsetup.sh

然后下载手机的专属代码,手机不是oneplus3就换成别的手机的codename,比如小米3、4是cancro,小米5是gemini,红米3是ido之类的。小米Github上有写。

breakfast oneplus3

修改内核参数
参考nethunter官方教程
进入内核代码目录

cd kernel/oneplus/oneplus3
make clean
export ARCH=arm64
export SRCARCH=arm64

export这里是个小坑,教程里没有,但必须要加。如果你手机CPU是32位就把arm64换成arm,后文同理。不加这个无法正确配置defconfig
从已有配置文件为基础开始,找arch/arm64/configs这个目录下面的已有配置,比如cyanogenmod_oneplus3_defconfig

ls arch/arm64/configs
make cyanogenmod_oneplus3_defconfig

默认参数就配置好了。

由于clang的一个bug,mac用户需要将 scripts/kconfig/lxdialog/check-lxdialog.sh 下面的第12行改成这样(-是原来的,+是改过的)

- if [ $? -eq 0 ]; then
+ if [ $? -eq 0 -o -f /usr/lib/lib${lib}.${ext} ]; then

然后大家一起进入配置菜单。

make menuconfig

教程配置。在menuconfig的菜单中,按上下导航,戳两下esc返回上级目录,y是选上一个复选框(将模块编译到内核里),n是取消,m是将一个模块(比如驱动)编译成一个单独的小程序,用到时候再加载。如果遇到最后刷机后卡在第一屏的问题,就是内核体积太大了,此时将一些模块用m独立编译。

特别选项:
教程图里的DVB for Linux选项已经没了,现在改名叫Digital TV support
Customize DVB Frontends 之前 要先取消选择Autoselect ancillary drivers (tuners, sensors, i2c, frontends)
然后取消frontends菜单里和tuner里面,除了RTL2830以外的所有选项。
特别选项2:(可能只有我手机有这bug也可能都有)
如果在上面menuconfig里选了 HCI USB Driver,编译通过不了的话,按这个patch改一下这个文件就好。另外,必须选中Bluetooth device drivers里面的Atheros firmware download driver,btusb.c需要里面的一个函数。
最后保存配置,内核配置就算完成了。

cp .config cyanogenmod_oneplus3_defconfig
make mrproper

其他可选配置

如果在前面将一些模块用m独立编译了,而且没有关闭SELinux,接下来还要改一下SEPolicy。在 源码/device/oneplus/oneplus3/sepolicy 目录(oneplus/oneplus3换成设备型号)里,新建或者编辑 init.te 在结尾加上

原来只需要fd use 和 system module_load就可以的,可我忘了策略咋写的了。
如果想用USB keyboard,或者badUSB攻击,而且和我一样就是不想关SELinux,那就继续改policy。按他的教程来。还要打上这个patch

修改全部完成,cd退回源码主目录,运行命令单独编译内核与启动镜像。

mka bootimage

等他转转完了,出来的字是绿色的,就是编译成功。

适配Nethunter

另找一个目录下载它的installer。

git clone https://github.com/offensive-security/kali-nethunter.git --depth 1

cd kali-nethunter/nethunter-installer

再下载nethunter的设备目录,一路回车等下载就行。会得到大概1G大小的devices目录。

./bootstrap.sh

用一个脚本将刚编译出的Image.gz-dtb和模块放到 devices/nougat/oneplus3cm 里放好,nougat是安卓版本,oneplus3cm的名字按nethunter教程起的。内核模块要放在/lib/modules/[内核版本号]里,这样modprobe才找得到。至于内核版本号呢,一句命令获得,这句命令已经在我的脚本里了。[TODO:脱敏上传]

strings $out/obj/KERNEL_OBJ/arch/arm64/boot/Image | grep -o '3.*cyan[^ ]*' | head -n1

最后编辑devices.cfg照葫芦画瓢把自己新适配的设备加上。

vim devices.cfg
python build.py -d oneplus3cm -n -u -ns  # nouget uninstaller_created no_supersu

然后就得到了我们崭新的属于自己的卡刷包!

将刚刚生成的热乎的 update-nethunter-oneplus3cm-nougat-2017xxxx_xxxxxx.zip卡刷包扔到recovery里,直接update,再重启,如果没有报错的话就没问题了,all over!

开机打开Nethunter app,按照提示安装 kali chroot 和其他的 metapackage,属于你的黑客手机就完成了!

鼓掌!撒花!起床补个截图。