Files
cursornew2026/fix_remaining.js

72 lines
1.7 KiB
JavaScript

/**
* 修复剩余的未初始化变量
*/
const fs = require('fs');
let code = fs.readFileSync('deobfuscated_full/extension/out/webview/provider.js', 'utf8');
// 基于使用上下文的替换
const replacements = {
// settings path 相关
'var235': 'settingsPath',
'var243': 'settingsObj',
// config 相关
'var315': 'config',
'var316': 'cursorPath',
// 循环/临时变量
'var2': 'descriptor',
'var451': 'workbenchPath',
// stdout 相关 (v开头通常是解构)
'v319': 'wmicStdout',
'v324': 'psStdout',
'v339': 'regStdout',
'v342': 'regStdout2',
'v354': 'lnkTarget',
'v362': 'whereStdout',
'v508': 'lsofStdout',
'v532': 'psStdout2',
'v718': 'psStdout3',
// error catch 变量
'v313': 'err',
'v323': 'err',
'v325': 'err',
'v341': 'err',
'v350': 'err',
'v356': 'err',
// 其他常见
'var99': 'lines',
'var78': 'htmlContent',
'var114': 'uri',
'var184': 'macPath',
'var502': 'linuxPath',
'var602': 'platformPath',
'var603': 'appPath',
'var605': 'resourcesPath',
'var674': 'backupPath',
'var701': 'injectionCode',
'var762': 'seamlessCode',
// 函数参数
'arg36': 'mod',
};
let count = 0;
for (const [old, newName] of Object.entries(replacements)) {
const regex = new RegExp('\b' + old + '\b', 'g');
const before = code;
code = code.replace(regex, newName);
if (code !== before) count++;
}
fs.writeFileSync('deobfuscated_full/extension/out/webview/provider.js', code);
console.log(`替换了 ${count} 个变量名`);
// 统计剩余
const remaining = [...new Set((code.match(/\b(var|arg|v)\d+\b/g) || []))];
console.log(`剩余通用变量名: ${remaining.length}`);