feat: Add SIP status check and enhance file modification safety in Cursor MAC ID modifier

- Implemented comprehensive System Integrity Protection (SIP) status check
- Added detailed user warnings and guidance for SIP-related risks
- Enhanced file backup and modification process with sudo permissions
- Improved error handling for file system permission issues
- Added safety checks and user confirmation before modifying system files
- Included informative messages about SIP status and recommended actions
This commit is contained in:
煎饼果子卷鲨鱼辣椒 2025-02-10 10:25:20 +08:00
parent fd6872cb2d
commit 5d33049d7b

View File

@ -299,6 +299,45 @@ generate_new_config() {
modify_cursor_app_files() { modify_cursor_app_files() {
log_info "正在修改 Cursor 主程序文件..." log_info "正在修改 Cursor 主程序文件..."
# 检查 SIP 状态
if csrutil status | grep -q "enabled"; then
echo
log_warn "检测到系统完整性保护(SIP)处于启用状态"
echo
echo -e "${YELLOW}什么是系统完整性保护(SIP)${NC}"
echo "SIP 是 macOS 的一项重要安全功能,它可以:"
echo "1. 防止系统关键文件被修改"
echo "2. 保护系统进程不被注入代码"
echo "3. 限制具有 root 权限的操作"
echo "4. 保护系统免受恶意软件攻击"
echo
echo -e "${RED}关闭 SIP 的潜在风险:${NC}"
echo "1. 系统更容易受到恶意软件攻击"
echo "2. 可能导致系统不稳定"
echo "3. 降低系统整体安全性"
echo "4. 可能影响系统更新"
echo
echo -e "${YELLOW}如果您决定继续,需要:${NC}"
echo "1. 重启 Mac 并进入恢复模式(启动时按住 Command + R"
echo "2. 打开终端输入命令csrutil disable"
echo "3. 重启后再运行此脚本"
echo "4. 完成修改后强烈建议重新启用 SIPcsrutil enable"
echo
echo -e "${GREEN}安全建议:${NC}"
echo "1. 仅在必要时临时关闭 SIP"
echo "2. 完成修改后立即重新启用"
echo "3. 在关闭 SIP 期间不要浏览不信任的网站或运行不明来源的软件"
echo "4. 确保从可信来源下载和运行脚本"
echo
read -p "了解风险后,是否继续尝试修改文件?(y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
log_info "已取消文件修改,建议保持 SIP 开启以确保系统安全"
return 0
fi
echo -e "${YELLOW}请记住在完成修改后重新启用 SIP 以确保系统安全${NC}"
fi
local files=("$MAIN_JS_PATH" "$CLI_JS_PATH") local files=("$MAIN_JS_PATH" "$CLI_JS_PATH")
for file in "${files[@]}"; do for file in "${files[@]}"; do
@ -311,12 +350,19 @@ modify_cursor_app_files() {
local backup_file="${file}.bak" local backup_file="${file}.bak"
if [ ! -f "$backup_file" ]; then if [ ! -f "$backup_file" ]; then
log_info "正在备份 $file" log_info "正在备份 $file"
cp "$file" "$backup_file" || { if ! sudo cp "$file" "$backup_file" 2>/dev/null; then
log_error "无法备份文件: $file" log_error "无法备份文件: $file"
echo -e "${YELLOW}可能原因:${NC}"
echo "1. 系统完整性保护(SIP)已启用"
echo "2. 文件系统权限限制"
echo
echo -e "${YELLOW}建议操作:${NC}"
echo "1. 禁用 SIP 后重试"
echo "2. 手动复制文件进行备份"
continue continue
} fi
chmod 644 "$backup_file" sudo chmod 644 "$backup_file"
chown "$CURRENT_USER" "$backup_file" sudo chown "$CURRENT_USER" "$backup_file"
else else
log_debug "备份已存在: $backup_file" log_debug "备份已存在: $backup_file"
fi fi
@ -352,15 +398,15 @@ modify_cursor_app_files() {
continue continue
fi fi
# # 验证文件内容是否包含必要的代码 # 验证文件内容是否包含必要的代码
# log_debug "正在验证文件内容..." log_debug "正在验证文件内容..."
# if ! grep -q "crypto\s*\.\s*randomUUID\s*(" "$temp_file"; then if ! grep -q "crypto\s*\.\s*randomUUID\s*(" "$temp_file"; then
# log_debug "文件内容预览:" log_debug "文件内容预览:"
# head -n 20 "$temp_file" | log_debug head -n 20 "$temp_file" | log_debug
# log_error "修改后的文件缺少必要的代码: $file" log_error "修改后的文件缺少必要的代码: $file"
# rm -f "$temp_file" rm -f "$temp_file"
# continue continue
# fi fi
#log_debug "文件验证通过" #log_debug "文件验证通过"
@ -377,7 +423,21 @@ modify_cursor_app_files() {
log_info "成功修改文件: $file" log_info "成功修改文件: $file"
done done
log_info "请重启Cursor如果重启后无法打开或者报异常请重新安装Cursor"
log_info "如果文件修改失败,请检查系统完整性保护(SIP)状态"
log_info "您可以在终端中运行 'csrutil status' 查看当前状态"
if csrutil status | grep -q "disabled"; then
echo
log_warn "检测到 SIP 当前已禁用"
echo -e "${YELLOW}安全提醒:${NC}"
echo "1. 请使用以下步骤重新启用 SIP"
echo " - 重启 Mac 并进入恢复模式Command + R"
echo " - 打开终端输入csrutil enable"
echo " - 重启电脑"
echo "2. 保持 SIP 启用对系统安全性至关重要"
echo
fi
} }
# 显示文件树结构 # 显示文件树结构