首页
社区
课程
招聘
[原创]安卓内核驱动编译方法
发表于: 2018-6-1 13:16 16563

[原创]安卓内核驱动编译方法

2018-6-1 13:16
16563

先前在论坛发了好几个帖子问关于内核驱动编译的问题,这里说明下我找到的方法,大家可以参考下。

因为先前需要把一个有漏洞的内核驱动编译到内核里去,所以花了不少时间去编译安卓内核驱动,这里介绍下方法,帮助有相关需要的朋友节省点时间。

我的环境:

Ubuntu 18.04

Android 4.4.2

Goldfish 3.4

环境的设置可以参考下我先前的文章:

在参考我的文章前看下这篇文章也会有帮助:

但是如果你只是跟着上面这篇文章做的话可能还会有些问题。我录了一个视频在这里,如果想看的朋友可以看下,就是得忍受我蹩脚的英语。

在开始以前,首先我们需要做一些事情。

下载完goldfish后,去到这个文件夹goldfish/arch/arm/configs/goldfish_armv7_defconfig然后加这几行。

这是为了让内核可以动态加载内核驱动。但是加了这几行后再编译的话就会出问题,所以需要删掉几行设定。

为了让设置清晰点,加这么一行说明下。

设置完这些基本上就ok了。

首先我们要编译的一种是可动态加载的内核驱动。

去到 goldfish/drivers 文件夹创建一个文件夹。就叫helloworld吧。不过其实对于这种动态加载的内核驱动,不一定需要在这个drivers文件夹下面,因为最后只要得到那个ko模块就好了。

在这个文件夹里面,我们创建了Makefile和hello.c文件。

Hello.c文件内容如下。

Makefile文件内容如下。

然后在helloworld文件夹里面执行make就可以了。你可以看到那里出现了”hello.ko”文件。开启你的模拟器,将hello.ko 给push到/data/local/tmp下面,采用如下命令加载写在驱动就可以看到输入和输出了。

第二种驱动,编译到内核里面的驱动。这种驱动不需要自己手动加载,只要内核被加载了,驱动就在里面了。这种驱动的创建也不一定放到goldfish/drivers文件夹下面,不过那样的话设置drivers下面的Makefile就不那么美观了。所以这里还是放在goldfish/drivers下面。同样的helloworld文件夹,然后里面有三个文件,hello.c Kconfig Makefile 这三个。

其中的hello.c和前面的那个一样,不需要改动。

Kconfig内容如下:

第三个文件是Makefile,相对于先前有些许改动。

变成了obj-y表示就是编译进安卓内核里面。

接下来去到drivers下面的Kconfig文件,增加这么一行。

去到drivers下面的Makefile文件,增加这么一行。

在你完成这些以后,去到goldfish文件夹然后打包整个内核。

make goldfish_armv7_defconfig && make -j8

这个时候,开启模拟器你会发现这个模块在启动的时候就被加载了。

整个过程花费了我不少时间,还是需要点耐心。出现问题慢慢搜索就好了。祝玩的开心。

因为先前需要把一个有漏洞的内核驱动编译到内核里去,所以花了不少时间去编译安卓内核驱动,这里介绍下方法,帮助有相关需要的朋友节省点时间。

我的环境:

Ubuntu 18.04

Android 4.4.2

Goldfish 3.4

环境的设置可以参考下我先前的文章:

http://xdshao.com/2018/04/10/Android-exploitation-Kernel-stack-buffer-overflow/

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 2
支持
分享
最新回复 (12)
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主有编译过华为的开源内核吗?我每次都是编译失败
https://consumer.huawei.com/en/opensource/
2018-6-1 13:39
0
雪    币: 85
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
iceway 楼主有编译过华为的开源内核吗?我每次都是编译失败 https://consumer.huawei.com/en/opensource/
没有唉。。。只弄过goldfish...
2018-6-1 14:55
0
雪    币: 182
活跃值: (214)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
build/make/core/main.mk:21: recipe for target 'run_soong_ui' failed
2018-6-27 22:17
0
雪    币: 758
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习了
2019-6-13 09:16
0
雪    币: 1
活跃值: (883)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
搞了一星期,终于在内核层可以动态修改MAC了...泪
2019-6-14 09:06
0
雪    币: 8715
活跃值: (8619)
能力值: ( LV13,RANK:570 )
在线值:
发帖
回帖
粉丝
7
楼楼,你第一篇文章看不到了
2019-9-25 21:13
0
雪    币: 237
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
支持
2019-9-26 20:58
0
雪    币: 14530
活跃值: (17548)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
9
mark,楼主辛苦了
2019-9-26 21:14
0
雪    币: 219
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
http://xdshao.com/2018/04/10/Android-exploitation-Kernel-stack-buffer-overflow/
这个链接坏了
2021-3-26 10:09
0
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
ERROR: Kernel configuration is invalid.
         include/generated/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.
这个错误怎么解决
2023-7-17 11:58
0
雪    币: 389
活跃值: (384)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
12
翻手为云 ERROR: Kernel configuration is invalid. include/generated/autoconf.h or include/config/aut ...
我也是报这个错误。两天了。还没解决。你用的是什么。我用的是pixel4 android 13版本。
2024-1-25 17:06
0
游客
登录 | 注册 方可回帖
返回
//