Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
lg-webos-kexec — 通过 kexec 在已 root 的 LG webOS 电视上启动自定义 Linux 内核,支持逆向工程实现的 SoC 看门狗、framebuffer 负载以及 initramfs 内核构建流程。 | Kitploit
工具/GitHubGitHub/ggfuchsi-oss/lg-webos-kexec
嵌入式系统安全逆向工程硬件黑客硬件与物联网安全固件分析
GitHubggfuchsi-oss/lg-webos-kexec

lg-webos-kexec

通过 kexec 在已 root 的 LG webOS 电视上启动自定义 Linux 内核,支持逆向工程实现的 SoC 看门狗、framebuffer 负载以及 initramfs 内核构建流程。

查看仓库
6111天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

lg-webos-kexec

通过 kexec 在已 root 的 LG webOS 电视上启动自定义 Linux 内核 —— 在 RAM 中运行,无需绕过安全启动。

状态:进行中。 自定义内核可以被暂存并进入用户空间,但尚不能作为可用的操作系统持续运行。

目标设备

LG 50UP81009LR(webOS 6.5,Realtek RTD2875,armv7l)。通过 Homebrew Channel 获取 root;原厂签名内核 + webOS 用户空间均未改动。

已验证的事实(实机确认)

  • kexec -l 可以暂存(原厂或源码编译的)内核;/sys/kernel/kexec_loaded 翻转为 1。
  • kexec -e 会替换正在运行的内核(之后电视会重置回原厂状态)。
  • 源码编译的内核能够进入用户空间 —— 通过用户态缺页异常验证 = /sbin/init 执行了真实代码。
  • 小型 canary 载荷会在帧缓冲上进行绘制(已确认 ring-0 权限 + 显示访问)。
  • 整个链条从原厂 webOS 的 startup.sh 启动 —— 签名的引导加载程序 / ATF / OP-TEE 从未被触碰。

尚未完成的事项

  • 看门狗喂狗(Watchdog pet) —— 已完成逆向工程 + 修复代码已编写,但尚未在真实的 kexec 启动中验证。见下文。

看门狗喂狗 —— 找到了(2026-08-19)

复位源于 SoC 看门狗(TC 模块)。原厂内核的 micom_wdt_thread() 通过三次寄存器写入来维持它(drivers/rtk_kdriver/platform/tv006/intmicom.c):

root@kitploit:~
TCWCR @ 0xFE062204 <- 0xA5         // unlock
TCWOV @ 0xFE062210 <- 0x0FFFFFFF   // max overflow => huge timeout
TCWTR @ 0xFE062208 <- 0x01         // kick

在 kexec 下,驱动中的原始 *(volatile*)0xFE062208 = 0x01 落在一个未映射的虚拟地址上,成为一个静默的空操作,因此 SoC 看门狗会触发(约 10–21 秒)。micom-pet.c 现在通过 /dev/mem(CONFIG_DEVMEM=y)从用户空间执行相同的写入操作,这会正确映射地址,另外还向 /dev/sys-intmicom 发送 0xB1 保活消息作为纵深防御。

状态: micom-pet.c 已重写,可使用 musl 工具链编译,并且在真机上进行的 5 秒 良性冒烟测试确认它可以运行并写入其面包屑 (0x52455814 = "REX"+心跳)。唯一剩下的验证是一次能撑过约 21 秒的 kexec -e 启动 —— 这会导致电视重启,因此是一次需要有人值守的测试。

  • 显示 —— 面板使用 tiled FBDC 格式;原始帧缓冲文本不可用。真正的输出需要 VCPU RPC(向视频引擎发送绘图命令)。
  • 网络 —— 原厂 wlan 模块的 vermagic 必须与 CONFIG_LOCALVERSION="" 匹配才能加载;尚未接入 initramfs。

工作原理(如实版)

root@kitploit:~
boot ROM → ATF → signed LG kernel (~2 s) → startup.sh
    → kexec -l <our zImage + dtb + initramfs>
    → kexec -e
    → OUR kernel runs in RAM (no eMMC writes)

断电 = 恢复原厂。它不会变砖。

由 AI 构建(完全披露)

这个仓库的大部分内容是由 Rex —— 一个 AI 编码代理实例 —— 协助人类在自己的客厅里操作自己的电视时完成的。AI 编写了 kexec 概念验证、启动链、帧缓冲 canary 以及这些逆向工程文章。但本 README 中的每项声明都是在人类启动电视、查看屏幕并确认之后才写下的。如果某项声明没有来自硬件的真实屏幕/照片/运行时长检查作为依据,它就不会出现在这里。

本仓库的制作过程中没有电视变砖。有些电视只是暂时出现异常(没有看门狗喂狗的 kexec 内核会在约 15 秒后重置设备),然后断电重启回到原厂状态。/tmp 在每次重置时都会被清空,所以电视会忘记我们做过的所有事 —— 这正是关键所在。

仓库结构

  • rexos/ — 自定义操作系统:启动钩子、内核构建、initramfs、RexBus 桩。
  • kexec-poc/ — 仅加载的概念验证 + 帧缓冲 canary 载荷。
  • docs/ — 逆向工程文档(启动/安全、SAM 应用加载、surface 映射、luna2 模式)。

自行验证(你需要同型号电视:50UP81009LR,已 root,连接局域网)

以下步骤在完全相同的硬件上复现了我们所做的操作。没有任何造假。

0. 前置条件

  • LG 50UP81009LR,通过 Homebrew Channel 获取 root,启用 root SSH,在你的局域网上。
  • 下文中电视默认 IP 为 192.168.2.103;如果你的不同,请修改。
  • 一次性准备 LG K7LP GPL 内核源码树:设置 KERNEL_SRC=/path/to/linux-4.4.3(从 LG 开源网站下载 03.53.45 K7LP GPL 压缩包),或创建符号链接 ~/lgtv-toolkit/kernel-src/kernel/linux-4.4.3。

1. 构建工具链 + 静态 kexec(无需电视,约 2 分钟)

root@kitploit:~
git clone https://github.com/ggfuchsi-oss/lg-webos-kexec
cd lg-webos-kexec/kexec-poc && ./build.sh

预期结果:获得静态 ARM kexec 二进制文件 kexec-arm(168K,file 显示 ELF 32-bit LSB ... ARM ... statically linked)。

2. 在电视上复现安全的概念验证(暂存 + 卸载 —— 不启动)

root@kitploit:~
cd ../kexec-poc
./run-poc.sh 192.168.2.103 ~/.ssh/tv_key

预期结果:

root@kitploit:~
staged before      : 0
staged after load  : 1   <- kernel accepted, DTB wired, segments allocated
staged after unload: 0   <- cleared, TV untouched

这会通过 kexec 暂存电视当前的自身内核,然后立即卸载它。/sys/kernel/kexec_loaded 先翻转为 1 再回到 0。不会重启、不会切换内核、不留任何持久化痕迹。拔掉电源 = 恢复原厂。

3.(有人值守)启动你自己的内核 —— 电视会重启

仅在电视开着且有人在旁边时才执行此操作:

root@kitploit:~
cd ../rexos
make                            # builds rexos-kernel.zImage + rexos-initramfs.cpio.gz into out/
./boot/rexos-kexec --load-only   # stage, do NOT fire (same safe state as step 2)
# then, when ready to actually jump:
./boot/rexos-kexec               # kexec -e -> our kernel runs in RAM (TV will reset)

第 3 步的如实注意事项(不是我隐瞒的 bug):

  • 在执行 kexec -e 之后,新内核能够进入用户空间,但电视会在约 10–21 秒后重置,因为 micom/SOC 看门狗没有被喂狗。这是当前的瓶颈,而不是崩溃 bug。rexos/initramfs/micom-pet.c 就是用来解决这个问题的守护进程(仍在接入中)。
  • 显示是 tiled FBDC 格式 —— 没有文本控制台;只能显示纯色信标(见 kexec-poc/canary/)。真正的图形输出需要 VCPU RPC 路径(尚未完成)。
  • 错误的内核/DTB 只会黑屏,直到重新上电。它不会变砖:kexec 只写入 RAM,从不写 eMMC。

状态速览(如实)

  • 内核暂存/执行原语:已验证(第 2 步)。✅
  • 自定义内核启动并进入用户空间:已验证(第 3 步)。✅
  • 作为可用操作系统持续运行:尚未实现 —— 看门狗和显示是剩余的两道障碍。⏳

依赖项(如实说明哪些是外部内容)

本仓库包含源码 + 文档 + 从电视上抓取的构建输入(内核 .config、wifi 模块 + 固件、rootfs 库),但不包含约 390 MB 的 LG K7LP GPL 内核源码树本身 —— 那是 LG 的发布资源,不是让我们重新托管的。

如果内核源码树不存在,make 会以清晰的 KERNEL_SRC missing 错误失败 —— 不会有静默的半成品构建。

新颖性 / 已有工作

据我们所知,这是首次公开的基于 kexec 的 LG webOS 电视自定义内核启动。各个基础组件(kexec、已 root 的 webOS、RTD2875)此前都各自为人所知;但在这样一款被锁定的消费级电视上的应用似乎是全新的。我们并非宣称实现了安全启动绕过 —— 我们只是绕开了它。

许可证

GPL-2.0(内核相关工作;LG 的 GPL 内核源码本身就是 GPL)。我们的脚本与 GPL 兼容。上游致谢请参阅 CREDITS。

下载工具
依赖项获取方式
LG K7LP GPL linux-4.4.3(RTD2875)LG 开源网站 → 03.53.45 K7LP GPL 压缩包 → kernel
musl armv7 交叉工具链(约 98 MB)由 kexec-poc/build.sh 自动获取(自包含)
已 root 的电视(50UP81009LR)仅在首次需要,用于抓取 .config —— 但该配置现已提交至 rexos/kernel/rexos-tv.config,因此克隆后即可离线构建