华为nova 3e,重新编译内核文件,解除ptrace限制,以使用Frida

本文详细介绍了如何在华为nova 3e上解除ptrace限制,以便使用Frida进行hook。首先,需要解锁BL锁并准备Ubuntu环境,下载内核源码和交叉编译工具。接着,配置交叉编译环境,修改内核配置开启ptrace。编译新内核,并使用Android Image Kitchen打包kernel.img。最后,通过fastboot刷入新内核,成功解锁ptrace限制。
AI助手已提取文章相关产品:

提示:本文章为解决在淘宝,拼多多解锁bl后,获取root后,在frida hook时,出现Failed to enumerate processes: remote_write PTRACE_POKEDATA head failed: 5 的问题。


前言

先决条件:

1、一部华为nova 3e手机
2、已解锁BL锁
3、Linux环境(我自己是Ubuntu 20.0)
4、make 3.81
5、已通过magisk root权限
6、aarch64-linux-android-4.9
7、华为的开源源码网站中下载系统内核源码


提示:自己的环境先说下,我是win10下作为操作平台,编译放在远程阿里云Ubuntu,然后把编译好的Image.gz 通过winscp下载回本地,然后在win10 fastboot进手机的。整体弯路绕了一天多。才搞完。

一、准备源码,以及编译环境

最主要先下载内核源码,官方网址https://consumer.huawei.com/en/opensource/
进入后
在这里插入图片描述
在这里插入图片描述
下载好,放入Ubuntu,我是放在/home目录下面
在这里插入图片描述
tar -zxvf 文件名,解压出Code_Opensource 目录

下面下载https://android.googlesource.com/platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9/
官方下载的会出现aarch64-linux-android-gcc not found。
因为google把gcc删除了。
在这里插入图片描述
下载了也不行,没办法我Google搜aarch64-linux-android-4.9,搜到了一个fork,https://github.com/urho3d/android-ndk
下载解压,把里面的aarch64-linux-android-4.9 拷贝到/home目录下面。
在这里插入图片描述

然后在把make4.x 降级到make 3.81
下载地址http://ftp.gnu.org/gnu/make/
tar -zxvf make-3.81.tar.gz
cd到glob/glob.c文件修改一个字符(‘=‘改成’>=’)
在这里插入图片描述

./configure --prefix=/usr/local/make-3.81
我这里加了prefix,你当然可以不加
./build.sh 编译
sudo make install
make -v
如果发现没变,把/usr/local/make-3.81/bin/make cp 到/usr/bin/make

二、配置交叉环境,修改打开ptrace的配置文件

1.交叉环境

export PATH=$PATH:/home/aarch64-linux-android-4.9/bin
export CROSS_COMPILE=aarch64-linux-android-

每次编译前可以先确认下

echo $PATH
echo #CROSS_COMPILE

2.进入/home/Code_Opennsource/kernel

新建编译输出目录

mkdir ../out

开启ptrace,重点来了。

vim /home/Code_Opensource/kernel/arch/arm64/configs/merge_hi6250_defconfig

找到有一行为

CONFIG_HUAWEI_PTRACE_POKE_ON is not set

改为

CONFIG_HUAWEI_PTRACE_POKE_ON =y

在这里插入图片描述

设置编译参数

make ARCH=arm64 O=../out merge_hi6250_defconfig

这时候最好去 out 目录vim .config 确认下里面的配置参数已修改。

下面编译开始,开始爽吧,10分钟多

make ARCH=arm64 O=../out -j8

在这里插入图片描述
最重要的文件编译出来了,下面就简单了。

3 创建内核img

这里创建内核img有2种方法,一种是pack_kernerimage_cmd.sh,另一种是Android Image Kitchen。
第一种我尝试了下,需要把原kernel的参数复制过来。我按部就班操作了一遍,没有成功,刷入是成功了,但是开机在出现huawei文字界面后,不断的重启。
后来没办法我用了第二种。发现更简单。
下载地址:https://forum.xda-developers.com/t/tool-android-image-kitchen-unpack-repack-kernel-ramdisk-win-android-linux-mac.2073775/

第一个win,下面的linux的
下面直接在win10下面操作。下载zip,当然你也可以继续在linux上面继续操作
先把手机里面的kernel文件下载到本地电脑备份。最好备份。防止刷入失败。

adb shell
su
cd /dev/block/platform/hi_mci.0/by-name
ls -l kernel

这里其他文章都是找的boot 文件,但是我这里是kernel
在这里插入图片描述

dd if=/dev/block/mmcblk0p30 of=/sdcard/kernel.img
adb pull  /sdcard/kernel.img  kernel.img

拉到本地,拉回来以后先把kernel.img 被备份下。
然后,直接双击unpacking.bat
解压出来2个目录,另一个空的别管,直接进入split_img目录

还记得前面在Ubuntu上面编译的Image.gz吗,用winscp 拉到split_img 目录
删除kernel.img-kernel,重命名我们自己的Image.gz为kernel.img-kernel
该文件大概12m左右
然后回上级目录,双击repacking.bat
在这里插入图片描述

生成最终的kernel 文件!

4 fastboot 刷入新内核

adb reboot bootloader
su
fastboot flash kernel image-new.img
fastboot reboot

重启完毕,恭喜你,获取了支持ptrace的新内核。

没搞之前是这样的
在这里插入图片描述
新内核后,你看到的是这样的
在这里插入图片描述


参考

https://blog.youkuaiyun.com/qq_26914291/article/details/116978870

https://bbs.binmt.cc/thread-42534-1-1.html

https://www.52pojie.cn/thread-1181293-1-1.html

https://www.freebuf.com/articles/terminal/229624.html

https://www.cnblogs.com/codex/p/13414213.html?ivk_sa=1024320u

您可能感兴趣的与本文相关内容

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值