logo NodeSeekbeta

自签 Cfw 的服务模式内核

自签 Clash For Windows 的服务模式内核

前言

近期 Clash Verge Rev 被爆出有提权漏洞,原因主要出在服务模式核心那里,有认识的大佬成功复现了漏洞。作为 Clash For Windows 忠实用户,我也请他研究了一下 CFW 的核心,他的研究成果在此,大致原理是用 sha256Clash 核心进行 hash,再用 rsa 公钥进行签名。

可以发现,CFW 最新版的服务模式大概是没有漏洞的,因为他对核心做了签名,无法启动其他程序。但代价是,我们同样无法更换自己的核心,也就是我上一篇文章中出现的问题。

我当时的解决方案是换用旧版的无签名核心,但这又导致了一个问题,就是旧版核心会出现漏洞。所以为了解决这个问题,本篇文章采用修改服务模式内核的给自己的核心自签,也算是弥补一下上一篇文章的问题。

教程

本篇文章技术核心内容均来自大佬,本文章仅是借用了他的研究成果写了一份教程。

进行教程之前先关闭 cfwclash-core-service 的进程!!!

本篇文章动手难度较高,对电脑不太熟悉的人可以就此退出了。

准备工作

获取最新核心

首先你需要拿到最新的服务模式核心。这里推荐 这个网站,找到自己对应的版本后安装或解压,将目录 \resources\static\files\win\x64\service 中的 clash-core-service.exe 复制出来。

生成密钥对

这里推荐 这个网站 在线生成,当然你也可以用命令等方式生成 RSA 的公私钥,效果一样。

在网站中选择密钥长度为 512 bit,密钥格式 PKCS#1,私钥密码留空。

点击 生成公私密钥 按钮后在保存下方的公私钥。

安装 Go 环境

直接去 官网 下载安装就行。

下载自签源码

从我的 仓库 下载 ClashForWindowsSignTool.go 文件。

下载16进制编辑器

本文使用的是 UltraEdit,不过大佬直接用 x64dbg 改的,反正都差不多。

自己去官网下载就行。

自签

经过上面的准备工作,你现在应该有 RSA 的公钥和私钥,一份自签代码,一个最新版服务模式核心,和一个16进制编辑器。

编译程序

ClashForWindowsSignTool.go 第 17 行的 你的私钥 替换为你上面获得的私钥。

接着在 cmdcdClashForWindowsSignTool.go 所在的目录,使用 go build ClashForWindowsSignTool.go 编译获得一个可执行程序 ClashForWindowsSignTool.exe

注: Go 1.24 貌似禁止了1024bit以下的密钥,你也许需要设置 GODEBUG=rsa1024min=0 才能正常编译

替换核心

这步操作极易出错,本文将使用 UltraEdit 示范

首先将公钥保存到文本文档中,删除文件末尾的回车等内容,使文本最后仅有 ----END PUBLIC KEY----- 这样的字符串,然后将文本文档使用 UltraEdit 打开。

打开后右键空白处选择 十六进制编辑 或按下 Ctrl+H 进入十六进制编辑模式。

用鼠标选中左侧的 0A (如图),然后右键你选中的内容选择剪切,重复操作直到所有 0A 都被删除。

image

删除后选择全部复制应该显示有181字节,格式必须如图一样。 (如图)

image

选择全部后复制,然后用 UltraEdit 打开 clash-core-service.exe,右键关掉十六进制编辑,按下 Ctrl+F 搜索 -----BEGIN PUBLILC 内容,找到文本对应内容,切换为十六进制编辑,从点之前选择到最后的横杠,注意你选中的内容也应该是181字节。 (如图)

image

右键你选中的内容,粘贴,然后保存。粘贴后后面字符如果没有发生后移基本上没有问题。

把修改后的 clash-core-service.exe 放入 \resources\static\files\win\x64\service 替换。

签名

\resources\static\files\win\x64 文件夹中的 clash-win64.exe 或者你要替换的程序拖入刚刚编译出来的 ClashForWindowsSignTool.exe 中,会自动生成一个 clash-win64.exe.sign

将生成的 clash-win64.exe.sign 放入 \resources\static\files\win\x64 文件夹中替换即可。

重新安装服务模式

打开 Clash For Windows,将服务模式卸载后重新安装。

测试

打开 Clash For Windows,服务模式小地球是绿色的就是成功啦。

问题

Q: 替换不了提示文件正在使用中怎么办

A: 没好好看教程导致的,请关掉 cfw 并进任务管理器把 clash-core-service 内核的进程结束掉

Q: 服务模式小地球灰色或者红色怎么办

A: 没好好看教程导致的,请在 cfw 删除服务模式重新安装

引用

Clash-Verge-Rev 仓库

Clash For Windows 服务模式签名校验的验证逻辑

使用工具

Ultra Edit

Clash For Windows 备份站

RSA 密钥对在线生成

Telegraph 图床

12
12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有59803位seeker

🎉欢迎新用户🎉