Files
cursornew2026/fix_remaining_vars.js

129 lines
2.9 KiB
JavaScript

/**
* 批量修复剩余变量名
*/
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('批量修复剩余变量名...');
// 基于上下文分析的替换表
const replacements = {
// settings/config 相关
'var243': 'settingsObj',
'var315': 'config',
'var316': 'configPath',
// 路径相关
'var451': 'workbenchSubPath',
'var184': 'macPath',
'var502': 'linuxPath',
'var602': 'platformPath',
'var603': 'appPath',
'var605': 'resourcesPath',
'var674': 'backupPath',
// 内容/代码
'var78': 'htmlContent',
'var99': 'lines',
'var114': 'uri',
'var701': 'injectionCode',
'var762': 'seamlessCode',
// 模块辅助
'var2': 'descriptor',
'arg36': 'mod',
// stdout (解构变量)
'v319': 'wmicOut',
'v324': 'psOut',
'v339': 'regOut',
'v342': 'regOut2',
'v354': 'lnkOut',
'v362': 'whereOut',
'v508': 'lsofOut',
'v532': 'psOut2',
'v718': 'psOut3',
// 错误变量
'v313': 'e1',
'v323': 'e2',
'v325': 'e3',
'v341': 'e4',
'v350': 'e5',
'v356': 'e6',
'v359': 'e7',
'v365': 'e8',
'v373': 'e9',
'v378': 'e10',
'v402': 'e11',
'v412': 'e12',
'v423': 'e13',
'v436': 'e14',
'v446': 'e15',
'v457': 'e16',
'v466': 'e17',
'v482': 'e18',
'v490': 'e19',
'v502': 'e20',
'v520': 'e21',
'v527': 'e22',
'v540': 'e23',
'v555': 'e24',
'v569': 'e25',
'v579': 'e26',
'v590': 'e27',
'v604': 'e28',
'v617': 'e29',
'v629': 'e30',
'v665': 'e31',
'v668': 'e32',
'v680': 'e33',
'v692': 'e34',
'v697': 'e35',
'v707': 'e36',
'v714': 'e37',
'v726': 'e38',
'v742': 'e39',
'v749': 'e40',
'v756': 'e41',
'v766': 'e42',
'v770': 'e43',
'v772': 'e44',
// 循环变量
'var432': 'entry',
// 其他
'v14': 'result',
};
let totalReplaced = 0;
for (const [oldName, newName] of Object.entries(replacements)) {
const regex = new RegExp('\\b' + oldName + '\\b', 'g');
const matches = code.match(regex);
if (matches) {
code = code.replace(regex, newName);
console.log(` ${oldName} -> ${newName} (${matches.length}处)`);
totalReplaced++;
}
}
fs.writeFileSync(inputPath, code);
console.log(`\n共替换 ${totalReplaced} 个变量名`);
// 统计剩余
const remaining = [...new Set((code.match(/\b(var|arg|v)\d+\b/g) || []))];
console.log(`剩余通用变量名: ${remaining.length}`);
if (remaining.length > 0 && remaining.length <= 50) {
console.log('\n剩余变量:');
remaining.forEach(v => {
const count = (code.match(new RegExp('\\b' + v + '\\b', 'g')) || []).length;
console.log(` ${v}: ${count}`);
});
}
console.log('\n✅ 完成');