首页
社区
课程
招聘
[求助]Android内核模块编译错误
发表于: 2018-5-2 09:43 3750

[求助]Android内核模块编译错误

2018-5-2 09:43
3750
先前简直蠢到家了,把drivers写成了drives所以出现了那个找不到文件的情况。不过这里还是有问题。就跟我先前那个帖子是一样的情况。我直接在原帖上改动了。编译成功后/dev下面没有设备。我这里列了自己的几种尝试。请各位前辈指点我一下。
一:

在drivers/下加一个vuln文件夹,里面包含有Makefile,vuln.c。

在drivers下的Makefile内加上 obj-y  += vuln/ 重新编译。发现vuln下成功编译。


遗憾的是启动模拟器加载这个内核后/dev下面没有vuln设备。

二:

在方案二的基础上。

在vuln下增加了Kconfig文件。


在drives的Kconfig下增加了如下。


编译成功,但是adb shell后dev下依旧没有vuln设备。

我这里的内核版本是goldfish-3.4。使用的是 arm-eabi-4.8来编译的。已经编译出来了感觉没问题啊,也是built-in,我直接加载那个zImage应该就在/dev下面呀,实在想不通为什么没有这个设备。

###
列一下我现在的情况,尝试了ubuntu16.04,18.04,santoku,debian8. 基本上可以确定不是OS的问题了。然后发现使用arm-eabi-4.8编译的话生成不了zImage。所以依旧使用arm-linu-androideabi-4.6来编译。值得一提的是使用那个androidkernelexploitatioinplayground项目里面的命令它成功编译了几个模块进去,真是让我百思不得其解。我感觉自己已经看完了网上所有关于编译模块的文章了,就是不知道为什么我成功不了。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-5-4 12:52 被samohyes编辑 ,原因: 出现了一个新的问题。
收藏
免费 1
支持
分享
最新回复 (13)
雪    币: 29
活跃值: (295)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
印象中遇到过这种情况  但是我是直接用编译源码那个环境下重新编译解决的  没有单独mm=来编译某个模块 
最后于 2018-5-2 11:26 被endlif编辑 ,原因:
2018-5-2 11:26
0
雪    币: 85
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
endlif 印象中遇到过这种情况  但是我是直接用编译源码那个环境下重新编译解决的  没有单独mm=来编译某个模块 
谢谢~请问下编译源码环境下重新编译是哪一个选项来着?我去试一试~
2018-5-2 12:28
0
雪    币: 3508
活跃值: (4634)
能力值: ( LV13,RANK:437 )
在线值:
发帖
回帖
粉丝
4
make  项目名
2018-5-2 13:36
0
雪    币: 85
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
奔跑的阿狸 make 项目名
请问您的意思是?make  goldfish?..
2018-5-2 20:54
0
雪    币: 3508
活跃值: (4634)
能力值: ( LV13,RANK:437 )
在线值:
发帖
回帖
粉丝
6
en  ,我当时自己写的就是在  aosp目录下执行  make  项目名。项目名在  system/bin  代码目录创建的  一个目录
2018-5-3 15:13
0
雪    币: 59
活跃值: (185)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
我是这么搞的,感觉最简单:
1,在drivers目录下新建一个文件夹,比如说hello
2,hello目录下新建一个hello.c,里面放驱动/内核模块  代码
3,hello目录下新建一个Makefile,里面只要一行就够了:obj-y  +=    hello.o
            如果你要加别的驱动,比如还有一个drvtest.c,这里再加一行就行了:  obj-y  +=    drvtest.o
4,重新编译整个内核
5,用这个新的内核启动虚拟机:emulator  @avd-arm64  -kernel  xxx/goldfish/arch/arm64/boot/Image      -no-window    -show-kernel  -verbose
            这里avd-arm64  是前期创建过的虚拟机名称

最后于 2018-5-3 15:53 被heartbeast编辑 ,原因: 笔误
2018-5-3 15:52
0
雪    币: 85
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
heartbeast 我是这么搞的,感觉最简单:1,在drivers目录下新建一个文件夹,比如说hello2,hello目录下新建一个hello.c,里面放驱动/内核模块  代码3,hello目录下新建一 ...
谢谢你的指点。我用的方法基本和你讲得一致,已成功编译出来了,但是编译出来后/dev文件夹下面并没有这个新的设备。实在不知道为什么。。。具体情况我写在了帖子里面~
最后于 2018-5-4 01:10 被samohyes编辑 ,原因: 说的不清楚
2018-5-4 01:09
0
雪    币: 85
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
奔跑的阿狸 en ,我当时自己写的就是在 aosp目录下执行 make 项目名。项目名在 system/bin 代码目录创建的 一个目录
好的~非常感谢~不过我又遇到了一个新的问题,能不能帮忙看下我修改过的这个问题?
2018-5-4 01:10
0
雪    币: 85
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
给自己顶一下。。
2018-5-4 20:53
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
方案一+方案二一起试试呢
2018-5-4 21:35
0
雪    币: 85
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
skynjupt 方案一+方案二一起试试呢
不不~方案二是在一的基础上弄的。。
2018-5-5 05:27
0
雪    币: 85
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
顶自己一下。。。
2018-5-6 09:11
0
雪    币: 234
活跃值: (2323)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
楼主解决了么,遇到相同问题,成功编译出ko文件,但是刷入内核后dev目录没有该模块
2023-5-17 16:00
0
游客
登录 | 注册 方可回帖
返回
//