首页
社区
课程
招聘
[讨论]android 内核模块加载的问题
发表于: 2017-1-13 20:57 5049

[讨论]android 内核模块加载的问题

2017-1-13 20:57
5049
具体如下:

//-------------------------------------------------------------------------------------------------------------
// 第一步:下载 android kerenl source
//-------------------------------------------------------------------------------------------------------------

>mkdir android-kernel

android-kernel> git clone 27eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8%4y4H3i4K6u0W2N6s2g2F1j5g2)9J5k6i4c8K6K9h3&6Y4K9s2g2S2i4K6u0W2k6h3c8#2i4K6u0W2j5$3&6Q4x3V1k6C8k6i4u0F1k6h3I4Q4x3V1k6Y4L8$3I4V1k6X3W2K6K9q4)9J5k6h3N6A6N6l9`.`.

android-kernel> cd goldfish

android-kernel/goldfish> git branch -a
        * master
          remotes/origin/HEAD -> origin/master
          remotes/origin/android-3.10
          remotes/origin/android-3.18
          remotes/origin/android-3.4
          remotes/origin/android-goldfish-2.6.29
          remotes/origin/android-goldfish-3.10
          remotes/origin/android-goldfish-3.10-l-mr1-dev
          remotes/origin/android-goldfish-3.10-m-dev
          remotes/origin/android-goldfish-3.18
          remotes/origin/android-goldfish-3.18-dev
          remotes/origin/android-goldfish-3.4
          remotes/origin/android-goldfish-3.4-l-mr1-dev
          remotes/origin/android-goldfish-4.4-dev
          remotes/origin/heads/for/android-goldfish-3.18-dev
          remotes/origin/linux-goldfish-3.0-wip
          remotes/origin/master

(选择 3.4 的版本,与“调试手机的内核版本一致)

android-kernel/goldfish> git checkout -t remotes/origin/android-goldfish-3.4 -b goldfish3.4

       
//-------------------------------------------------------------------------------------------------------------
// 第二步:下载 交叉编译工具(不采用ndk里的工具)
//-------------------------------------------------------------------------------------------------------------

> mkdir android-toolchain

android-toolchain> git clone e25K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8%4y4H3i4K6u0W2N6s2g2F1j5g2)9J5k6i4c8K6K9h3&6Y4K9s2g2S2i4K6u0W2k6h3c8#2i4K6u0W2j5$3&6Q4x3V1k6H3L8r3q4@1k6X3!0J5L8g2)9J5c8Y4m8J5k6h3u0#2K9h3I4@1

> vi ~/.bashrc
        增加以下代码:
        export PATH="/test_dir/android-toolchain/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH"
        export ARCH=arm
        export SUBARCH=arm
        export CROSS_COMPILE=arm-eabi-

//-------------------------------------------------------------------------------------------------------------
// 第三步:编译 android kerenl module
//-------------------------------------------------------------------------------------------------------------
1、编写Makefile

obj-m := test.o
test-objs         := test_1.o test_2.o test_3.o\
                                test_4.o

KDIR                 := /test_dir/android-kernel/goldfish

ARCH        = arm  
CROSS_COMPILE        = arm-eabi-  
CC        = $(CROSS_COMPILE)gcc  
LD        = $(CROSS_COMPILE)ld

all:        realclean mod clean

mod:
        make -C $(KDIR) CFLAGS_MODULE=-fno-pic ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=`pwd` modules

realclean:
        rm -rf *.o *.cmd .tmp* *.ko.cmd *.mod.c *.o.cmd .*.mod.o.cmd .*.ko.cmd .*.o.cmd *.ko

clean:
        rm -rf *.o *.cmd .tmp* *.ko.cmd *.mod.c *.o.cmd .*.mod.o.cmd .*.ko.cmd .*.o.cmd

2、编译
> make all
成功后,得到 test.ko

//-------------------------------------------------------------------------------------------------------------
// 第四步:在android手机上运行
//-------------------------------------------------------------------------------------------------------------
test_dir> adb root
test_dir> adb push test.ko /data
test_dir> adb shell

android #> cd /data
android #> insmod test.ko
(得到的错误提示:)
insmod: init_module 'test.ko' failed (Exec format error)

=======
问题:
=======

何解?请教各位大师哪里出错?

=======
补充:
=======


1、用于调试的“手机”的配置:
android 版本        :4.4.4 KTU84P
内核版本        :3.4.0-gb46cc0f

2、我baidu了一下,之前已有人发帖问过,解决的方法有以下几种:
1)Makefile中增加 CFLAGS_MODULE=-fno-pic
2)注意版本的一致
3)放入 /system/lib/modules

上面的我都试过(我手机的“内核版本”为3.4.0,我使用的goldfish版本为3.4,是一致的),结果都还是得到“一样”的错误提示(insmod: init_module 'test.ko' failed (Exec format error))

3、在得到错误提示后,我也查看了 dmesg,但没有得到有用的信息,具体如下:
android #> dmesg
............................
............................
<4>[ 2342.084785] QBMS Reported SOC = 100
<4>[ 2342.090095] QBMS Reported SOC = 100
<4>[ 2349.044528] QBMS ibat_ua-1000 vbat_uv4341981
<4>[ 2349.044559] QBMS cSOC100 temp264 rbatt168 fcc2095000 uuc41900 rc2095000 cc-34 ocv4350000
<4>[ 2369.044528] QBMS ibat_ua-1600 vbat_uv4342569
<4>[ 2369.044559] QBMS cSOC100 temp264 rbatt168 fcc2095000 uuc41900 rc2095000 cc-44 ocv4350000

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ding..........................................................
2017-1-14 23:49
0
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有人知道吗?
2017-1-15 18:32
0
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
ding............................
2017-1-16 10:16
0
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有人知道吗?
2017-1-16 16:42
0
雪    币: 47
活跃值: (418)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
要重新编内核源码再输入到手机中,编译的时候要开启内核的动态加载属性,具体的可以参考一下这里 d93K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4k6h3&6W2j5X3I4#2k6g2)9J5k6h3N6A6N6r3S2#2j5W2)9J5k6h3W2G2i4K6u0r3x3U0l9I4y4W2)9J5c8U0l9^5i4K6u0r3x3e0k6Q4x3V1k6m8L8X3c8J5L8$3W2V1i4@1f1#2i4K6R3$3i4K6R3#2i4@1f1$3i4@1p5H3i4@1t1^5i4@1f1$3i4@1p5^5i4@1p5I4i4@1f1#2i4K6W2p5i4K6V1%4i4@1f1%4i4@1u0o6i4K6V1$3i4@1f1^5i4@1q4r3i4K6V1I4i4@1f1$3i4K6R3&6i4@1p5%4i4@1f1^5i4@1p5I4i4K6S2o6i4K6u0r3
2017-1-19 11:31
0
游客
登录 | 注册 方可回帖
返回