72 lines
1.7 KiB
JavaScript
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} 个`);
|