无名 发表于 2022-5-8 20:01:06

【GD】【原创】华为手机重新编译内核开启Ptrace

华为手机内核中有许多限制,其中一个就是禁止了ptrace,这就使得大部分华为手机无法用于IDA调试等,我们可以修改并重新编译内核以达到启用Ptrace的目的。

首先从华为的开源源码网站中下载对应手机型号和系统版本的内核,网址是https://consumer.huawei.com/en/opensource/

下载内核源码后,解压打开,修改Code_Opensource\kernel\arch\arm64\configs\merge_hi3650_defconfig文件,

找到有一行为

# CONFIG_HUAWEI_PTRACE_POKE_ON is not set

改为

CONFIG_HUAWEI_PTRACE_POKE_ON =y

将ptrace加入编译选项,然后按照 Code_Opensource\README_Kernel.txt 文件里提示进行内核编译。
编译生成的Image.gz就是内核。

然后adb进入手机的/dev/block/platform/hi_mci.0/by-name目录下,把kernel文件pull到电脑里,利用android image kitchen 把kernel解包,解包会生成ramdisk和split_img两个文件夹,在split_img文件夹中

夹着下面第一张图和下面的一起看,效果更好!

分别打开里面的kernel-base,kernel-cmdline,kernel-kerneloff,kernel-pagesize,kernel-ramdiskoff,kernel-tagsoff,并记录下每个文件里面的值,

接着打开Code_Opensource\kernel\tools目录,里面的pack_kernerimage_cmd.sh就是kernel的打包工具,编辑pack_kernerimage_cmd.sh,把刚才记录的值分别替换里面原来的值,

接着把编译生成的image.gz复制到Code_Opensource\kernel\tools并重命名为kernel,然后linux的话就直接运行pack_kernerimage_cmd.sh,windows可以下载wsl运行(一般编译都在linux进行,我在windwos编译不成功),生成的kernel.img就是内核镜像文件。

然后terminal里输入adb reboot bootloader让手机进入fastboot模式,接着输入fastboot flash kernel kernel.img 刷入内核,重启手机,ptrace就可以用了
http://cdn.u1.huluxia.com/g3/M01/29/CD/wKgBOV6TPaqAByxyAAFGju2DXYg025.pnghttp://cdn.u1.huluxia.com/g3/M01/29/CD/wKgBOV6TPauAHnAiAABMmovfdOM484.jpg
页: [1]
查看完整版本: 【GD】【原创】华为手机重新编译内核开启Ptrace