提示:本文章为解决在淘宝,拼多多解锁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/

下面直接在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
本文详细介绍了如何在华为nova 3e上解除ptrace限制,以便使用Frida进行hook。首先,需要解锁BL锁并准备Ubuntu环境,下载内核源码和交叉编译工具。接着,配置交叉编译环境,修改内核配置开启ptrace。编译新内核,并使用Android Image Kitchen打包kernel.img。最后,通过fastboot刷入新内核,成功解锁ptrace限制。
3650

被折叠的 条评论
为什么被折叠?



