86 lines
3.4 KiB
JavaScript
86 lines
3.4 KiB
JavaScript
/**
|
|
* 修复 catch 块中不合理的变量名
|
|
*/
|
|
const fs = require('fs');
|
|
|
|
const inputPath = 'D:/temp/破解/cursorpro-0.4.5/deobfuscated_full/extension/out/webview/provider.js';
|
|
let code = fs.readFileSync(inputPath, 'utf8');
|
|
|
|
console.log('修复 catch 变量名...');
|
|
|
|
// 定义需要修复的映射 (旧名 -> 新名)
|
|
// 需要结合上下文分析
|
|
const catchReplacements = [
|
|
// _handleActivate 中的错误
|
|
{ old: 'catch (stdOut)', new: 'catch (activateErr)', context: '连接服务器失败' },
|
|
|
|
// _handleSwitch 中的错误
|
|
{ old: 'catch (outStr)', new: 'catch (switchErr)', context: '连接服务器失败' },
|
|
|
|
// _writeAccountToLocal 中的错误
|
|
{ old: 'catch (strIdx)', new: 'catch (writeErr)', context: '写入本地失败' },
|
|
|
|
// 注册表写入错误
|
|
{ old: 'catch (procStdout)', new: 'catch (regWriteErr)', context: '注册表更新失败' },
|
|
|
|
// 读取 hosts 文件错误
|
|
{ old: 'catch (cmdOut)', new: 'catch (readErr)', context: 'Read hosts error' },
|
|
|
|
// 写入 hosts 文件错误
|
|
{ old: 'catch (procOut)', new: 'catch (writeErr1)', context: 'Direct write failed' },
|
|
{ old: 'catch (psOut) {', new: 'catch (writeErr2) {', context: 'Write still failed' },
|
|
|
|
// where 命令错误
|
|
{ old: 'catch (regOut)', new: 'catch (whereErr)', context: 'where 命令获取路径失败' },
|
|
|
|
// 空 catch 块 - 使用简单的 e
|
|
{ old: 'catch (lnkOut) {}', new: 'catch (e) {}', context: null },
|
|
{ old: 'catch (whereOut) {}', new: 'catch (e) {}', context: null },
|
|
{ old: 'catch (findOut) {}', new: 'catch (e) {}', context: null },
|
|
|
|
// _handleInjectSeamless 中写入错误
|
|
{ old: 'catch (lsofOut) {\n console.error("[CursorPro] 写入文件失败:',
|
|
new: 'catch (writeErr) {\n console.error("[CursorPro] 写入文件失败:', context: null },
|
|
|
|
// _handleRestoreSeamless 中的错误
|
|
{ old: 'catch (subPath) {\n if (subPath.code',
|
|
new: 'catch (writeErr) {\n if (writeErr.code', context: null },
|
|
{ old: 'throw subPath;', new: 'throw writeErr;', context: null },
|
|
|
|
{ old: 'catch (psOut2) {\n console.error("[CursorPro] Restore error:", psOut2);',
|
|
new: 'catch (restoreErr) {\n console.error("[CursorPro] Restore error:", restoreErr);', context: null },
|
|
{ old: 'if (psOut2.code === "EPERM"', new: 'if (restoreErr.code === "EPERM"', context: null },
|
|
{ old: 'psOut2.message ||', new: 'restoreErr.message ||', context: null },
|
|
|
|
// _handleToggleSeamless 中的错误
|
|
{ old: 'catch (lsofOut) {\n this._postMessage({\n \'type\': "seamlessConfigUpdated"',
|
|
new: 'catch (configErr) {\n this._postMessage({\n \'type\': "seamlessConfigUpdated"', context: null },
|
|
];
|
|
|
|
let replaced = 0;
|
|
catchReplacements.forEach(r => {
|
|
if (code.includes(r.old)) {
|
|
code = code.replace(r.old, r.new);
|
|
replaced++;
|
|
console.log(` ✓ ${r.old.substring(0, 30)}... -> ${r.new.substring(0, 30)}...`);
|
|
}
|
|
});
|
|
|
|
console.log(`\n修复了 ${replaced} 处`);
|
|
|
|
// 还需要修复 lsofOut 的引用
|
|
code = code.replace(/lsofOut\.code/g, 'writeErr.code');
|
|
code = code.replace(/lsofOut\.message/g, 'writeErr.message');
|
|
code = code.replace(/throw lsofOut;/g, 'throw writeErr;');
|
|
|
|
fs.writeFileSync(inputPath, code);
|
|
|
|
// 验证语法
|
|
const babel = require('@babel/core');
|
|
try {
|
|
babel.parseSync(code, { sourceType: 'script' });
|
|
console.log('✅ 语法正确');
|
|
} catch (e) {
|
|
console.error('❌ 语法错误:', e.message);
|
|
}
|