template for obsidian
在此记录下已知的手机内核镜像获取方法 erecovery 在线升级老版本华为是因为新版本的鸿蒙系统都被加密了,没办法解密。新版本鸿蒙系统进入 recovery 模式后可以直接选择从官网下载升级包,这时候只要以笔记本作为热点抓取其下载流量即可拿到下载链接。老版本上则是没有这个选项,需要额外进入 erecovery 模式才可以。荣耀:似乎在缩紧该模式,magic6 pro 实测已经找不到该入口了华为:关机后长按电源键+音量键上进入 recovery 模式,然后选择升级模式后再进入 erecovery 模式即可。然后用 wireshark 抓包。其他品牌未尝试 root 手机内核镜像已经 root 的手机可以使用以下命令提取: 12345cd /dev/block/by-namels -l boot_b # 一般是 ab 分区会交替更新,查看其链接到哪个磁盘分区dd if=/dev/block/sdxyy of=/sdcard/Download/boot_b.imgadb pull /sdcard/Download/boot_b.img 然后拿 magiskboot or...
Openvpn archlinux Cheetsheet
openvpn在archlinux上安装默认为最新版,对于一些比较老旧的ovpn配置会连接不上,例如以下实际碰到的例子 DCO 不适配1234567891011121314151617181920212223❯ openvpn --config ./twb2026-team22.ovpn2026-08-13 09:37:54 Note: --cipher is not set. OpenVPN versions before 2.5 defaulted to BF-CBC as fallback when cipher negotiation failed in this case. If you need this fallback please add '--data-ciphers-fallback BF-CBC' to your configuration and/or add BF-CBC to --data-ciphers. E.g. --data-ciphers DEFAULT:BF-CBC2026-08-13 09:37:54 OpenVPN...
bad epoll漏洞学习复现
学习一下近期出现的 bad epoll 漏洞,该漏洞位于 fs/eventpoll.c,在 linux 内核以及 安卓内核中均存在该漏洞。 漏洞原理漏洞位于 fs/eventpoll.c 的 ep_remove() 函数中。file 对象没有使用引用计数追踪或者加锁保护,导致可以通过构造一个 eventpoll fd 监视另一个 eventpoll fd,然后多线程竞争 close,导致 file 结构体的 UAF。其存在问题源码位置,在 ep_remove 函数中,file 为传入 epitem 的 ffd.file 对象。对其继续调用 ep_remove_file() 函数。在该函数中会写入 file->f_ep 成员为 NULL。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/* * ep_remove variant for callers owing an additional reference to the...
copy fail笔记
copy.fail 漏洞信息无需条件竞争,稳定提权。只需要732字节大小的python脚本即可实现2017年后的大部分发行版提权。 该漏洞是 authencesn 模块的一个逻辑漏洞,从 AF_ALG 以及 splice() 导致4字节的 page-cache 写入。 exp: 12345678910#!/usr/bin/env python3import os as g,zlib,socket as sdef d(x):return bytes.fromhex(x)def c(f,t,c):...
Kernel提权逻辑漏洞总结
漏洞 影响模块 漏洞成因 copy fail crypto/aead 4字节page-cache覆写 Dirty Frag crypto/aead xfrm rxrpc 4/8字节page-cache覆写 Fragnesia xfrm espintcp 1字节page-cache覆写 PinTheft net/rds double free CIFSwitch cifs description检验逻辑缺失 DirtyDecrypt rxrpc/rxgk CoW检查缺失 ssh-keysign-pwn ssh 访问权限控制逻辑缺失 dirtyclone net/core page-cache覆写 peditCoW net/sched page-cache覆写 IonStack rtmutex stack uaf bad epoll epoll UAF powerVR powervr oob write Frag...
内核模块依赖图
内核模块的依赖是装载时的大问题。大部分时候可以通过 Modules.deps 或者 Modules.order 进行依赖模块的自动加载。但是有时候可能没有这些依赖配置(例如树外编译),以及其加载过程不透明(不知道到底是哪个符号依赖于哪个模块)。 modtree对树外编译模块依赖写了一个简单的脚本,仓库地址:https://github.com/Eknight-Eutopia/mod_tree效果如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253msm-kgsl ├── socinfo │ └── smem ├── llcc-qcom │ └── socinfo │ └── smem ├── qcom-dcvs │ └── dcvs-fp │ ├── qcom-rpmh │ │ ├── qcom-ipc-logging ...
Android NoMali 驱动模拟
安卓mali驱动模拟。 环境配置 arm mali_kbase源码 linux-kernel 6.12.93 源码 busybox qemu-aarch64-system aarch64-linux-gnu-gcc 编译编译 linux-kernel 源码(linux 6.12.93 版本)编译mali源码 123456KDIR=/mnt/Data/Android/mali_fuzz/external/linux-6.12.93 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \ CONFIG_MALI_MIDGARD=m \ CONFIG_MALI_EXPERT=y \ CONFIG_MALI_REAL_HW=n \ CONFIG_MALI_NO_MALI=y \ CONFIG_MALI_NO_MALI_DEFAULT_GPU=\"tMIx\" 模拟busybox相关配置参考之前的内容,buildroot 也可以(适配...
Android KGSL 加载流程解析
跟着源码和qemu模拟过程研究下KGSL模块的加载流程。 环境配置 真机xiaomi 14 pro设备树(pineapple 6.1.75) qcom-kernel 源码:KERNEL.PLATFORM.4.0.r12-00400-kernel.0.xml graphic-kernel 源码 模拟流程 获取目标模块依赖树以及设备树; 加载目标模块所有依赖模块,先满足目标模块能够insmod的条件; 通过源码或者IDA反编译分析目标模块以及依赖模块需要的硬件属性,添加设备树设置; 记录硬件属性的数据流 硬件属性分为必要/非必要,均可以存储到数据库中 设备树应该为dts格式,而非dtb反编译 设备树每一个节点 qcom 有官方说明 txt 注意设备树地址是否与virt本身冲突,冲突部分需要进行地址迁移,同时在 QEMU 侧注册相应 MMIO...
Android Qcom KGSL模块编译
Environment SetupPull qcom-kernel12repo init -u https://git.codelinaro.org/clo/la/kernelplatform/manifest -m KERNEL.PLATFORM.5.0.r28-00700-kernel.0.xmlrepo sync create soft link vendor/qcom 1ln -s vendor/qcom ../qcom Pull graphics-kernelsimply clone it from codelinaro 12git clone https://git.codelinaro.org/clo/la/platform/vendor/qcom/opensource/graphics-kernel.gitgit checkout gfx-kernel.lnx.16.0.r10-rel Additional dependenciesmm-drivers1234cd...
安卓自定义内核编译
近期想尝试一下安卓 kernel 的 kgsl 模块编译以及模拟。 实验环境基于 Debian 12,clone 了 android-kernel repo 来进行试验。由于Android 14以后不再支持 ./build.sh,我们这里集中学习如何使用 Bazel 来进行定制化编译。 编译实际上高通有自己维护的 manifest 开源仓库,直接在 pull 下来全量编译即可(不过最新版的芯片型号是缺了一些库的)。 建立ddk工作区ddk 工作区是 (Driver Development Kit),用于内核模块开发编译的工作区。该工作区的目录结构为: 1234567.repotoolsexternal/kleaf # 完整 android_kernel 源码external/prebuiltsMODULE.bazeldevice.bazelrcWORKSPACE.bzlmod 以下命令是创建一个 ddk 工作区的命令,会在目录下创建 MODULE.bazel, device.bazelrc, tools/bazel 等文件 1curl...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)