首页
社区
课程
招聘
[原创]将rwProcMem33编译进安卓内核
2023-8-31 17:06 21358

[原创]将rwProcMem33编译进安卓内核

2023-8-31 17:06
21358
收藏
点赞25
打赏
分享
最新回复 (64)
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
江来一定会有 2023-10-19 15:10
51
1
感谢分享,文档前面一些改注释部分的解释确实省了不少时间,但是如果想用好这个功能,还是得自己熟悉源码。
我是直接obj-m 编译成ko加载使用的。总的来说,这个hw_breakpoint是在内核模块进行register bp并完成回调并记录,在用户态通过ioctl与内核模块通信拿到记录信息的模式,这个其实不太灵活,如果有办法能把回调直接暴露给用户态使用就更好了。
雪    币: 156
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
凉皮不要蒜 2023-10-28 16:02
52
1

好奇怪。我用的android-msm-coral-4.14-android13 ,然后切换的自己分支是安卓12的:git checkout 82a738b32e3f 结果编译后 没有boot.img文件。。

我是4.14.257  安卓12的。


BUILD_CONFIG=private/msm-google/build.config.floral

BUILD_BOOT_IMG=1 

MKBOOTIMG_PATH=mkbootimg.py

VENDOR_RAMDISK_BINARY=boot.img-ramdisk.cpio 

KERNEL_BINARY=Image.lz4

BOOT_IMAGE_HEADER_VERSION=2

KERNEL_CMDLINE="console=ttyMSM0,115200n8

androidboot.console=ttyMSM0 printk.devkmsg=on msm_rtb.filter=0x237

ehci-hcd.park=3 service_locator.enable=1 androidboot.memcg=1

cgroup.memory=nokmem usbcore.autosuspend=7

androidboot.usbcontroller=a600000.dwc3 swiotlb=2048

androidboot.boot_devices=soc/1d84000.ufshc loop.max_part=7

buildvariant=user" 

BASE_ADDRESS=0x00000000 

PAGE_SIZE=4096

build/build.sh


最后于 2023-10-28 17:18 被凉皮不要蒜编辑 ,原因:
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_ckpefbiq 2023-12-19 15:25
53
1
有邮箱吗,咨询下 kernel 6.1.25 android 14 ,编译的问题
雪    币: 89
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
sanqiu 2023-12-25 20:35
54
1
怎么判断模块是否被成功编译到内核了
雪    币: 3514
活跃值: (4006)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
oacia 2 2023-12-25 22:08
55
1
sanqiu 怎么判断模块是否被成功编译到内核了
在adb shell输入命令ls sys/module/ ,如果编译的模块名称出现在这里面就说明模块被成功编译到内核了
雪    币: 89
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
sanqiu 2023-12-26 15:37
56
1
oacia 在adb shell输入命令ls sys/module/ ,如果编译的模块名称出现在这里面就说明模块被成功编译到内核了
真奇怪 ,我是用-y编译进内核了,用dmesg也查看到了log打印了,sys/module/没有显示模块,这算是编译成功了吗?
雪    币: 1744
活跃值: (8728)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
你瞒我瞒 2024-1-2 14:52
57
1
chaodchen 找到问题了testMemSearch 在连接驱动的时候没有传文件描述符
传递文件描述符是什么意思,可以给出一个详细的例子嘛
雪    币: 1112
活跃值: (2649)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Amun 2024-1-2 16:19
58
1
涉及内核的功能,可以用 waydroid 和 redroid,省时省力,珍惜生命
雪    币: 1929
活跃值: (12850)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
珍惜Any 2 2024-1-3 16:28
59
0
inlinehook用的啥,你用的啥和应用层通讯的。
雪    币: 10521
活跃值: (6629)
能力值: ( LV12,RANK:214 )
在线值:
发帖
回帖
粉丝
neilwu 1 2024-1-18 17:46
60
0
万里星河 当初要有这篇雄文 也不至于摸索一周才编译出来[em_5]
请问 大佬是用 pixel sailfish 的内核 android-msm-marlin-3.18-pie-qpr2 编译出来的吗?
雪    币: 1381
活跃值: (9762)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
misskings 4 2024-1-26 18:28
61
0
我看着好像hwBreakpointProc模块好像并没有依赖上层的rwProcMem33模块,貌似rwProcMem33这个模块是testKo这里用的。testKo这个感觉是个测试内核模块的代码,猜测是不是只需要hwBreakpointProc就行了。毕竟服务端里面访问的驱动设备是hwBreakpointProc的
雪    币: 1381
活跃值: (9762)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
misskings 4 2024-2-6 13:58
62
0
4.14编译报错

/home/king/android_src/pixelExper_thirteen/kernel/google/msm-4.14/drivers/rwProcMem33/phy_mem.h:176:93: error: member reference type 'pgd_t *' is a pointer
; did you mean to use '->'?
        printk_debug("init_mm pgd val:0x%lx,pgd addr:0x%lx\n", (unsigned long)pgd_val(*(mm->pgd)), pgd_val((mm->pgd)));
                                                                                                   ^~~~~~~~~~~~~~~~~~
/home/king/android_src/pixelExper_thirteen/kernel/google/msm-4.14/arch/arm64/include/asm/pgtable-types.h:50:24: note: expanded from macro 'pgd_val'
#define pgd_val(x)      ((x).pgd)
雪    币: 1381
活跃值: (9762)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
misskings 4 2024-2-7 01:07
63
0
而且就算编译成功了。但是也看不到/sys/module/rwProcMem37,奇怪了。我在aosp的内核分支上测试还是正常的。换了个rom的内核就不行了
雪    币: 1381
活跃值: (9762)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
misskings 4 2024-2-7 01:17
64
0
哦。原来我编译的是在/vendor/lib/modules这个目录下。
雪    币: 226
活跃值: (330)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
goldenegg 2 2024-2-15 21:28
65
0
比较好奇你的VS版本,你说需要把lld改成I64d这些,但是VS早就支持lld/llx这些格式了啊
游客
登录 | 注册 方可回帖
返回