wutaijie

马马的主页

折腾skroot记录

1

首先提取你的内核文件,boot.img或者kernel.img等

2

通过Android.Image.Kitchen提取出kernel文件

3

用360压缩等软件对提取到的kernel文件进行解压

4

将下载vmlinux.zip解压出vmlinux.py将其复制到ida的插件loaders目录下

vmlinux.zip

例如:D:\IDA_Pro_7.7\loaders

5

ida逆向kernel有四个方案,分析不出函数和名称的,可以分别尝试:

— 解压后的内核拖到ida,会自动进行分析(适合未去除符号的内核)

— 不出函数和函数名称的,则需要使用vmlinux.py插件(6.2)

— 使用vmlinux.py插件ida卡死闪退的需要对提取到的kernel文件进行修补(6.1,6.3)

— 有root的情况下,则可以使用提取kallsyms的方法 (6.4)

6.1

克隆该项目(建议在ubuntulinux环境下编译操作)

git clone https://github.com/nforest/droidimg.git

cd droidimg

复制提取到的kernel文件到该目录

编译,并修补

gcc -o fix_kaslr_arm64 fix_kaslr_arm64.c

./fix_kaslr_arm64 kernel kernel_kaslr

其中kernel 为源文件,kernel_kaslr为修补的文件,按实际文件名改

6.2

将源kernel拖到ida,按图(6.3)所示选择,如果没问题的话,ida会自动开始查找函数

6.3

如果ida卡死闪退,则需要使用修补过的kernel_kaslr

拖到ida,按图所示选择,如果没问题的话,ida会自动开始查找函数

6.4

对于有root的情况下,则可以使用提取kallsyms的方法

在手机终端或者adb shell分别执行

su

echo 0 > /proc/sys/kernel/kptr_restrict

head -n 1 /proc/kallsyms

cat /proc/kallsyms > /sdcard/kallsyms.txt

记录下面得到的head -n 1 /proc/kallsyms 函数地址,例如我的是ffffff9c26880000

(忽略图上的指令.

复制刚刚生成的kallsyms.txt到电脑,

双击解压后的kernel用ida打开,按图下所示

ROM起始地址和入文件,填入刚刚的_text函数地址

进入ida后会发现左侧函数名称不自动加载,按下键盘C键,让其生成函数和名称,这时函数只有几个,而且没有具体名称

下载kallsyms_ida7.zip到电脑并解压出kallsyms_ida7.py

kallsyms_ida7.zip

按下键盘ALT+F7键,会弹出选择文件窗口,选择刚刚解压的kallsyms_ida7.py

这时会再次弹出选择文件,选择前面提取到的kallsyms.txt文件,你会发现左下角的函数开始自动查找了

7

按照上述四种方法其一,直到左下角函数查找完成,并且函数名称显示正确后

在ida左侧的函数列表中点击右键,选择 快速筛选

输入do_execveat_common,双击该函数名称,然后ida会自动转跳到该函数,记录该地址

8

继续在ida左侧的函数列表中点击右键,选择 快速筛选

输入avc_denied,双击该函数名称,然后ida会自动转跳到该函数,记录该地址

9

继续在ida左侧的函数列表中点击右键,选择 快速筛选

输入revert_creds,双击该函数名称,然后ida会自动转跳到该函数,记录0x开头的值

10

继续在ida左侧的函数列表中点击右键,选择 快速筛选

输入prctl_get_seccomp,双击该函数名称,然后ida会自动转跳到该函数,记录0x开头的值

11

拖入用360压缩等软件对提取到的kernel至patch_kernel_root.exe,按提示分别填写入上面的四个值

是否需要自动随机生成,输入1选择需要

是否需要立即写入文件,输入1选择需要

12

对修补后的kernel文件重新打包还原,具体情况每个内核不太相同,这里给出例子:

cat boot | gzip -n -f -9 > boot.img-kernel

然后复制到Android.Image.Kitchen替换源文件,重新打包

将制作好的内核刷入手机,顺利开机的话(不开机的检查下文件大小和打包方式)

复制获取root权限的密钥xxxx到手机,安装PermissionManager.apk,打开后粘贴上面的密钥

点击 安装部署su

提示uid:0则成功了

点击注入su到指定进程,选择需要授权的app

完工

所用文件打包:

https://pan.baidu.com/s/1Y6Q8HZnEifzknlkTtQG1Qw?pwd=x7fx

感谢大佬的开源:

https://github.com/abcz316/SKRoot-linuxKernelRoot

https://github.com/nforest/droidimg

折腾skroot记录

4 thoughts on “折腾skroot记录

  1. 大佬,求求帮我看下我的偏移找的对不对,我刷进去能开机但是通过app看仍然是没有root权限的
    链接:https://pan.baidu.com/s/1Iw6_PGb1tO1pIIqZSd53fA
    提取码:qdv1

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top