吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9434|回复: 45
收起左侧

[Android 原创] 华为内核重新编译踩坑记

  [复制链接]
nws0507 发表于 2020-5-18 02:32

华为内核重新编译踩坑记

前几天有朋友找我帮他跟一个加密,由于js太乱了,想从app入手,于是开始frida脱壳,结果发现报错
Failed to attach: remote_write PTRACE_POKEDATA head failed: 5
查询后发现是华为内核没有开启Ptrace,正好看到了坛里的一篇文章华为手机重新编译内核开启Ptrace,开始照着他的步骤开始编译,发现了很多坑点,在这里记录一下。

1.内核编译

"然后按照 Code_Opensource\README_Kernel.txt 文件里提示进行内核编译。"
这里的说法没有说清,可能大佬自己感觉不是难点,我参考了另一篇文章Kernel Hack实战:修改并编译手机内核源码对抗反调试 ,开始编译。从这里噩梦开始。

1.1.gcc报错

我按照文章说的一步步开始,果然发生了这个错误

解决后又出现了aarch64-linux-android-gcc not found
我找了很多资料没有找到,后来发现bin目录下确实没有gcc这个文件,我又去
https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/
看了一眼后发现

好吧,最新的已经移除了gcc,原谅我英语不好,没看仔细,于是重新下载了8.0版本的aarch64-linux-android-gcc,终于这个报错解决了。

1.2. recipe for target 'xxx' failed

这个错误
Makefile:152: recipe for target 'sub-make' failed
是再次编译出现的,因为确实对这块编译没有做过,就再次查找资料,原因是make版本太高的问题,我的是ubuntu18 make4.1,网上说make降级到3.81就行。

1.3. make降级编译失败

从make4.1降级到3.81再次出现错误
undefined reference to '__alloca'
国外某站发现了解决办法,把
# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION
改成
# if _GNU_GLOB_INTERFACE_VERSION >= GLOB_INTERFACE_VERSION
顺利编译成功make3.81。

1.4. error: linux/netfilter/xt_mark.h: No such file or directory

终于make降级成功,再次开始编译。又遇到了
error: linux/netfilter/xt_mark.h: No such file or directory
我找了很多资料也没解决。
Ubuntu12.04编译android4.3源码问题集锦这里有一个解决办法,因为华为的内核目录不同,我完全按照他的解决办法没有解决成功。将/usr/include/linux/netfilter/xt_mark.h 复制到了kernel/include/linux/netfilter/xt_mark.h
可惜还是各种报错,一度想要放弃。
很幸运的是,我重新看了一下external/iptables/include/linux/netfilter/这个目录里面的xt_MARK.h,发现其实是存在这个文件的,但是由于我当时是从win下修改好内核源码的配置,重新打包发给ubuntu的,因为win的大小写不敏感,导致xt_mark.hxt_MARK.h不能同时在一个目录,xt_mark.h被重命名为了xt_mark(1).h
知道了问题就好解决了,于是我重新在ubuntu里下载了内核源码,修改配置,果然,这次编译很顺利。

2.打包刷入手机

后面就是跟着华为手机重新编译内核开启Ptrace修改sh的配置了,并没有遇到什么困难。成功刷入手机,成功运行frida,脱壳成功。

总结

由于是一篇回忆的记录,之前并没有截图,费了一天多才搞好,后面想一想确实不是很难,最后一步差点进行不下去,直接在ubuntu下执行,应该会很顺利。遇到的几个坑在网上只找到了一些只言片语,总结一下,希望对后来人有所帮助。

免费评分

参与人数 14威望 +1 吾爱币 +33 热心值 +13 收起 理由
大木木林森 + 1 + 1 感谢你对华为的支持。
仓鼠大大 + 1 + 1 我很赞同!
wlq127 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
YCAPTAIN + 1 + 1 谢谢@Thanks!
张小白~ + 1 + 1 学习下,顺便问下荣耀10,10版本有脱壳的吗
netcat + 1 + 1 谢谢@Thanks!
Forehawk + 1 + 1 鼓励转贴优秀软件安全工具和文档!
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
印象主义协会 + 1 + 1 我很赞同!
天画流雨 + 1 + 1 谢谢@Thanks!
lzm6969 + 1 + 1 用心讨论,共获提升!
5omggx + 1 + 1 用心讨论,共获提升!
leokingwhb + 1 + 1 用心讨论,共获提升!
污到深处自然纯 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

仓鼠大大 发表于 2020-6-28 00:53
nws0507 发表于 2020-6-27 09:31
你要看看是不是配置修改错了  正常应该不会出现没开启的情况

感谢回复!!!
我按照”华为手机重新编译内核开启Ptrace“的教程正确编译了内核,但是后面将内核打包的过程我没有搞明白。我将pack_kernerimage_cmd.sh这个文件夹的值全部更改打包后生成的镜像文件刷入手机,手机就无法开机。如果将“Kernel Hack实战:修改并编译手机内核源码对抗反调试”这个教程后面的方式生成的镜像文件刷入手机,手机可以开机,但是开启ptrace失败。
有几个问题想请教一下
1.请问您是用哪种方式生成的镜像文件呢?
2.”华为手机重新编译内核开启Ptrace“教程中的kernel文件具体指的是哪个?我找不到相同的,我只在手机里找到像kernel_a.img这种类似的镜像文件。
3.是不是不同的华为手机型号pack_kernerimage_cmd.sh文件的内容也不相同呢?还是说我下错了手机源码(我的手机是mate10pro emui8.0 已解锁  刷了面具)
4.请问是不是将生成的镜像文件刷入手机的kernel分区呢?
 楼主| nws0507 发表于 2020-6-28 11:39
仓鼠大大 发表于 2020-6-28 00:53
感谢回复!!!
我按照”华为手机重新编译内核开启Ptrace“的教程正确编译了内核,但是后面将内核打包的 ...

1.我是自己修改的sh的参数自己打包的。后续步骤就是参考的华为手机重新编译内核开启Ptrace这个文章。
2.你说的kernel我也是按照他说的找到的  就是/dev/block/platform/hi_mci.0/by-name这个目录。这个文件解包出来的东西就是sh所需的参数。
3.sh文件应该都是相同的,可能只是里面参数的值是不同的。只是猜想,我的安卓只是也很匮乏。
4.应该这样就能刷入了。fastboot flash kernel kernel.img
ptrace是否成功启用,因为我是要用frida,正常的ida动态调试貌似也需要。我是通过frida来看成功与否的。你说的无法开机 我感觉是sh文件里的值修改的有问题。你可能要找一下kernel这个文件,我是按照吾爱那篇文章找到的,你可以百度下看看这个文件路径。
zhenghui99 发表于 2020-5-18 06:46
yu13740000 发表于 2020-5-18 06:48
好厉害好厉害
头像被屏蔽
KamiMao 发表于 2020-5-18 07:02
提示: 作者被禁止或删除 内容自动屏蔽
wapjcxz 发表于 2020-5-18 07:08
壮士,加油,我学习下
bsjasd 发表于 2020-5-18 07:14
距离还是很大自省
雨落荒原 发表于 2020-5-18 07:18
看着还可以,虽然没学过安卓,做嵌入式开发的,还能看懂
bc001 发表于 2020-5-18 07:26
楼主非常牛。好文章,谢谢。
楚玉无尘 发表于 2020-5-18 07:46
国外某站方便透露不
yan4088 发表于 2020-5-18 08:04

不明觉厉!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-28 21:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表