备份: 完整开发状态(含反混淆脚本和临时文件)
This commit is contained in:
59
fix_syntax.js
Normal file
59
fix_syntax.js
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* 修复语法并清理属性访问
|
||||
*/
|
||||
const fs = require('fs');
|
||||
|
||||
const inputPath = 'D:/temp/破解/cursorpro-0.4.5/deobfuscated_full/extension/out/webview/provider.js';
|
||||
|
||||
console.log('智能清理属性访问...');
|
||||
let code = fs.readFileSync(inputPath, 'utf8');
|
||||
console.log('原始大小:', (code.length / 1024).toFixed(2), 'KB');
|
||||
|
||||
// 1. 方法定义: async ['_method']() -> async _method()
|
||||
code = code.replace(/(async\s+)\[(['"])([a-zA-Z_$][a-zA-Z0-9_$]*)\2\]\s*\(/g, '$1$3(');
|
||||
|
||||
// 2. 方法定义: } ['_method']()
|
||||
code = code.replace(/(\}\s*)\[(['"])([a-zA-Z_$][a-zA-Z0-9_$]*)\2\]\s*\(/g, '$1$3(');
|
||||
|
||||
// 3. 独立的方法定义 (行首)
|
||||
code = code.replace(/(\n\s*)\[(['"])([a-zA-Z_$][a-zA-Z0-9_$]*)\2\]\s*\(/g, '$1$3(');
|
||||
|
||||
// 4. 普通属性访问 + 方法调用: obj['prop']() -> obj.prop()
|
||||
code = code.replace(/\[(['"])([a-zA-Z_$][a-zA-Z0-9_$]*)\1\]\s*\(/g, '.$2(');
|
||||
|
||||
// 5. 普通属性访问: obj['prop'] -> obj.prop (非方法调用)
|
||||
code = code.replace(/\[(['"])([a-zA-Z_$][a-zA-Z0-9_$]*)\1\]/g, '.$2');
|
||||
|
||||
// 6. 布尔值简化
|
||||
code = code.replace(/!!\[\]/g, 'true');
|
||||
code = code.replace(/!\[\]/g, 'false');
|
||||
|
||||
// 7. 修复可能产生的语法错误: 独立的 .method( -> method(
|
||||
// 这种情况出现在类方法定义中
|
||||
const lines = code.split('\n');
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
// 如果一行以 .methodName( 开头(可能有空格),这通常是方法定义
|
||||
const match = lines[i].match(/^(\s*)\.([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);
|
||||
if (match) {
|
||||
lines[i] = match[1] + match[2] + '(' + lines[i].slice(match[0].length);
|
||||
}
|
||||
}
|
||||
code = lines.join('\n');
|
||||
|
||||
fs.writeFileSync(inputPath, code);
|
||||
console.log('新大小:', (code.length / 1024).toFixed(2), 'KB');
|
||||
|
||||
// 验证
|
||||
console.log('\n验证语法问题:');
|
||||
const badAsync = (code.match(/async\s+\.\w+\s*\(/g) || []).length;
|
||||
const badMethod = (code.match(/}\s*\.\w+\s*\(/g) || []).length;
|
||||
const emptyAsync = (code.match(/async\s+\(\)\s*\{/g) || []).length;
|
||||
console.log(' async .xxx():', badAsync);
|
||||
console.log(' } .xxx():', badMethod);
|
||||
console.log(' async () {}:', emptyAsync);
|
||||
|
||||
if (badAsync + badMethod + emptyAsync === 0) {
|
||||
console.log('\n✅ 语法检查通过!');
|
||||
} else {
|
||||
console.log('\n⚠️ 仍有语法问题需要处理');
|
||||
}
|
||||
Reference in New Issue
Block a user