Files
cursornew2026/test_array.js

59 lines
1.7 KiB
JavaScript

/**
* 测试 _0x4ff4 数组内容
*/
const fs = require('fs');
const vm = require('vm');
const inputPath = 'D:/temp/破解/cursorpro-0.4.5/deobfuscated_full/extension/out/webview/provider_clean.js';
let code = fs.readFileSync(inputPath, 'utf8');
// 找到 _0x4ff4 函数的结束位置
const arrayFuncStart = code.indexOf('function _0x4ff4()');
let braceCount = 0;
let arrayFuncEnd = arrayFuncStart;
let started = false;
for (let i = arrayFuncStart; i < code.length; i++) {
if (code[i] === '{') {
braceCount++;
started = true;
} else if (code[i] === '}') {
braceCount--;
if (started && braceCount === 0) {
arrayFuncEnd = i + 1;
break;
}
}
}
const initCode = code.slice(0, arrayFuncEnd);
// 执行并获取数组
const vmCode = `
${initCode}
// 获取数组
var arr = _0x4ff4();
({
length: arr.length,
first10: arr.slice(0, 10),
sample: arr.slice(100, 110),
last10: arr.slice(-10)
});
`;
const sandbox = { vip: 'cursor' };
const context = vm.createContext(sandbox);
const script = new vm.Script(vmCode, { timeout: 60000 });
const result = script.runInContext(context, { timeout: 60000 });
console.log('数组长度:', result.length);
console.log('\n前10个元素:');
result.first10.forEach((item, i) => console.log(` [${i}]: ${item.slice(0, 60)}${item.length > 60 ? '...' : ''}`));
console.log('\n100-109 元素:');
result.sample.forEach((item, i) => console.log(` [${100+i}]: ${item.slice(0, 60)}${item.length > 60 ? '...' : ''}`));
console.log('\n最后10个元素:');
result.last10.forEach((item, i) => console.log(` [${result.length - 10 + i}]: ${item.slice(0, 60)}${item.length > 60 ? '...' : ''}`));