备份: 完整开发状态(含反混淆脚本和临时文件)

This commit is contained in:
ccdojox-crypto
2025-12-17 17:18:02 +08:00
parent 9e2333c90c
commit 7e9ea173a7
2872 changed files with 326818 additions and 249 deletions

65
convert_unicode.js Normal file
View File

@@ -0,0 +1,65 @@
/**
* 安全转换 Unicode 转义序列为中文
* 只处理字符串字面量,不破坏正则表达式
*/
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';
const code = fs.readFileSync(inputPath, 'utf8');
console.log('安全转换 Unicode...');
let ast;
try {
ast = babel.parseSync(code, { sourceType: 'script' });
} catch (e) {
console.error('解析失败:', e.message);
process.exit(1);
}
let converted = 0;
traverse(ast, {
StringLiteral(path) {
const value = path.node.value;
// 检查是否包含 Unicode 转义(已解码的中文字符)
// 或者检查原始值是否有 \u
if (path.node.extra && path.node.extra.raw) {
const raw = path.node.extra.raw;
if (raw.includes('\\u')) {
// 保持已解码的 value只是清除 extra 让生成器使用 value
delete path.node.extra;
converted++;
}
}
}
});
console.log(`处理了 ${converted} 个字符串`);
const output = generate(ast, {
comments: false,
compact: false,
jsescOption: {
minimal: true // 最小转义,保留中文
}
}, code);
fs.writeFileSync(inputPath, output.code);
// 验证
try {
babel.parseSync(output.code, { sourceType: 'script' });
console.log('✅ 语法正确');
} catch (e) {
console.error('❌ 语法错误:', e.message);
}
// 统计
const unicodeRemaining = (output.code.match(/\\u[0-9a-fA-F]{4}/g) || []).length;
console.log(`剩余 Unicode 转义: ${unicodeRemaining}`);
console.log(`文件大小: ${(output.code.length / 1024).toFixed(2)} KB`);