Files
cursornew2026/final_cleanup_all.js

142 lines
3.6 KiB
JavaScript

/**
* 最终清理 - 处理所有剩余变量
*/
const fs = require('fs');
const babel = require('@babel/core');
const traverse = require('@babel/traverse').default;
const generate = require('@babel/generator').default;
const t = require('@babel/types');
const inputPath = 'D:/temp/破解/cursorpro-0.4.5/deobfuscated_full/extension/out/webview/provider.js';
let code = fs.readFileSync(inputPath, 'utf8');
console.log('最终清理剩余变量...\n');
// 第一步:文本替换已知模式
const textReplacements = {
// catch 错误变量
'v231': 'cleanErr',
'v254': 'proxyErr',
'v115': 'readErr',
'v129': 'writeErr',
'v145': 'grantErr',
'v163': 'hostsErr',
'v176': 'toggleErr',
'v186': 'statusErr',
'v198': 'pathErr',
'v216': 'seamlessErr',
'v269': 'switchErr',
'v285': 'resetErr',
'v288': 'disableErr',
'v305': 'updateErr',
'v308': 'envErr',
'v29': 'modErr',
'v406': 'findErr',
'v426': 'checkErr',
'v429': 'injectErr',
'v473': 'restoreErr',
'v496': 'usageErr',
'v566': 'announceErr',
'v578': 'versionErr',
'v584': 'runningErr',
'v609': 'manualErr',
'v612': 'beforeErr',
'v635': 'backupErr',
'v676': 'patchErr',
'v690': 'restoreErr2',
'v695': 'toggleErr2',
'v699': 'seamlessErr2',
'v750': 'execErr',
'v779': 'fsErr',
'v782': 'finalErr',
'v80': 'parseErr',
'v91': 'jsonErr',
// stdout 解构
'v262': 'cmdOut',
'v276': 'procOut',
'v278': 'psOut',
'v366': 'regOut',
'v398': 'lnkOut',
'v410': 'whereOut',
'v418': 'findOut',
'v543': 'lsofOut',
'v554': 'psOut2',
'v659': 'execOut',
'v679': 'shellOut',
'v781': 'cmdOut2',
'v49': 'outStr',
'v42': 'stdOut',
'v152': 'procStdout',
'v0': 'initOut',
// 参数
'arg4': 'aliasKey',
'arg12': 'fallbackKey',
'arg258': 'msgData',
'arg314': 'toggleArg',
'arg315': 'silentArg',
// 本地变量
'var102': 'proxyLine',
'var131': 'proxyEntry',
'var132': 'newHostsContent',
'var150': 'hostsLines',
'var263': 'switchResponse',
'var272': 'remainingCount',
'var277': 'lockedInfo',
'var292': 'resetResponse',
'var301': 'disableResponse',
'var438': 'usageResponse',
'var497': 'announcementData',
'var498': 'announceList',
'var499': 'latestAnnounce',
'var504': 'versionResponse',
'var505': 'latestVersion',
'var510': 'currentVersion',
'var549': 'runningPathData',
'var561': 'cursorRunning',
'var571': 'switchCheck',
'var592': 'beforeSwitch',
'var629': 'seamlessDir',
'var642': 'seamlessBackup',
'var717': 'patchedContent',
'var784': 'finalContent',
};
let count = 0;
for (const [oldName, newName] of Object.entries(textReplacements)) {
const regex = new RegExp('\\b' + oldName + '\\b', 'g');
const matches = code.match(regex);
if (matches) {
code = code.replace(regex, newName);
count++;
}
}
console.log(`文本替换: ${count} 个变量`);
fs.writeFileSync(inputPath, code);
// 验证语法
console.log('\n验证语法...');
try {
babel.parseSync(code, { sourceType: 'script' });
console.log('✅ 语法正确');
} catch (e) {
console.error('❌ 语法错误:', e.message);
}
// 统计剩余
const remaining = [...new Set((code.match(/\b(var|arg|v)\d+\b/g) || []))];
console.log(`\n剩余通用变量: ${remaining.length}`);
if (remaining.length > 0) {
console.log('\n剩余变量:');
remaining.forEach(v => {
const cnt = (code.match(new RegExp('\\b' + v + '\\b', 'g')) || []).length;
console.log(` ${v} (${cnt}次)`);
});
}
console.log('\n✅ 完成');