Commit 1d229191 authored by wang's avatar wang

收集环境

parent 341ce935
......@@ -86,9 +86,6 @@ const renameFunc =
allNewNames.clear();
function getBinding(scope, name, func) {
let binding = scope.getBinding(name);
// console.log(`scope.get(${name}).length = ${binding.references}`)
......@@ -149,16 +146,21 @@ for (let i = 0; i < 1; i++) {
// if (name !== 'nv') return;
let binding = path.parentPath.scope.getBinding(name);
if (!binding)return;
if (!binding) return;
console.log(`scope.get(${name}).length = ${binding.references}`)
if (binding.references > 0) {
if (name === 'iD') {
debugger
}
let code1, code2, funcName;
for (const referencePath of binding.referencePaths) {
// console.log(code2);
// console.log(referencePath.parentPath.toString());
// console.log('111',referencePath.parentPath.parent.type)
if (types.isUnaryExpression(referencePath.parentPath.parent)) {
code1 = generator(referencePath.parentPath.parent).code;
// console.groupCollapsed(['改变顺序', code1])
} else if (types.isCallExpression(referencePath.parent) && !types.isVariableDeclarator(referencePath.parentPath.parent)) {
code1 = '!' + referencePath.parentPath.toString()
} else if (types.isVariableDeclarator(referencePath.parentPath.parent)) {
code2 = generator(referencePath.parentPath.parentPath.parentPath.parentPath.parent).code;
funcName = referencePath.parentPath.parentPath.parentPath.parentPath.parent.id.name
......@@ -181,51 +183,201 @@ for (let i = 0; i < 1; i++) {
// 找到Tp 的引用地方
for (const referencePath of binding2.referencePaths) {
console.log('referencePath', generator(referencePath.parent).code)
// console.log('referencePath', generator(referencePath.parent).code)
// if (types.isBlockStatement(referencePath.parentPath.parentPath.parent) ) {
if (!types.isUnaryExpression(referencePath.parentPath.parentPath.parentPath.parentPath.parentPath.parentPath.parent)) {
// 找到引用点 排除掉 修改变量顺序的引用
console.log(generator(referencePath.parent).code, referencePath.parent.type)
if (types.isCallExpression(referencePath.parent)) {
let {arguments} = referencePath.parent
if (arguments.length !== 1) continue
let res = globalFuncs[funcName](arguments[0].value)
// console.log(funcName,inName,arguments[0].value,res)
referencePath.parentPath.replaceWith(types.valueToNode(res))
} else {
if (!referencePath.parent.id) continue;
// 继续找引用
let inName = referencePath.parent.id.name;
let binding3 = referencePath.scope.getBinding(inName);
if (!binding3) continue;
console.log('find', funcName, inName, binding3.references)
for (const inReferencePath of binding3.referencePaths) {
console.log('code ', generator(inReferencePath.parent).code, inReferencePath.parent.type)
if (types.isCallExpression(inReferencePath.parent)) {
let {arguments} = inReferencePath.parent
if (arguments.length !== 1) continue
let res = globalFuncs[funcName](arguments[0].value)
console.log('444', funcName, inName, arguments[0].value, res)
if (res === 'getTime') {
let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});
fs.writeFile('./tmp.js', code, (err) => {
});
}
console.log('before', res, generator(inReferencePath.parent).code)
inReferencePath.parentPath.replaceWith(types.valueToNode(res))
console.log('afterr', res, generator(inReferencePath.parent).code)
inReferencePath.skip()
} else if (types.isVariableDeclarator(inReferencePath.parent)) {
// 如果是继续引用 直接再找
let inName2 = inReferencePath.parent.id.name;
restoreValue(inName2, inReferencePath.parentPath.scope, funcName)
}
}
// console.log(generator(referencePath.parent).code, referencePath.parent.type)
}
if (types.isReturnStatement(referencePath.parentPath.parentPath)) {
let nId = referencePath.parentPath.parentPath.parentPath.parent.id.name;
let nBinding = referencePath.parentPath.parentPath.parentPath.parentPath.scope.getBinding(nId);
let nFuncName = referencePath.parentPath.parentPath.parentPath.parent.id.name;
let code2 = resCode + '\n' + referencePath.parentPath.parentPath.parentPath.parentPath.toString();
code2 += `globalFuncs['${nFuncName}'] = ${nFuncName}`
if (!globalFuncs[nFuncName]) {
eval(code2)
}
console.log('nId', nId)
if (nBinding && nBinding.referencePaths) {
for (let j = 0; j < nBinding.referencePaths.length; j++) {
let nn = nBinding.referencePaths[j]
console.log(nId, nn.parentPath.toString())
let args = nn.parent.arguments.map(e => {
if (types.isNumericLiteral(e)) {
return e.value
} else if (types.isUnaryExpression(e) && types.isNumericLiteral(e.argument)) {
switch (e.operator) {
case '-':
return -e.argument.value
case '+':
return e.argument.value
default:
return ''
}
}
return ''
}).filter(e => typeof e === 'number')
if (args.length !== 2) {
// debugger;
// 再次引用
if (types.isReturnStatement(nn.parentPath.parentPath)) {
let nFuncName2 = nn.parentPath.parentPath.parentPath.parent.id.name
console.log(nFuncName2)
code2 = nn.parentPath.parentPath.parentPath.parentPath.toString() +
`globalFuncs['${nFuncName2}'] = ${nFuncName2}`
eval(code2)
let binding2 = nn.parentPath.parentPath.parentPath.parentPath.scope.getBinding(nFuncName2)
if (binding2 && binding2.referencePaths) {
for (let j = 0; j < binding2.referencePaths.length; j++) {
let nn = binding2.referencePaths[j]
console.log(nId, nn.parentPath.toString())
let args = nn.parent.arguments.map(e => {
if (types.isNumericLiteral(e)) {
return e.value
} else if (types.isUnaryExpression(e) && types.isNumericLiteral(e.argument)) {
switch (e.operator) {
case '-':
return -e.argument.value
case '+':
return e.argument.value
default:
return ''
}
}
return ''
}).filter(e => typeof e === 'number')
if (args.length !== 2) {
// debugger;
// 再次引用
if (types.isReturnStatement(nn.parentPath.parentPath)) {
let nFuncName2 = nn.parentPath.parentPath.parentPath.parent.id.name
console.log(nFuncName2)
code2 = code2 + '\n' + nn.parentPath.parentPath.parentPath.parentPath.toString() +
`globalFuncs['${nFuncName2}'] = ${nFuncName2}`
eval(code2)
let binding2 = nn.parentPath.parentPath.parentPath.parentPath.scope.getBinding(nFuncName2)
if (binding2 && binding2.referencePaths) {
for (let j = 0; j < binding2.referencePaths.length; j++) {
let nn = binding2.referencePaths[j]
console.log(nId, nn.parentPath.toString())
let args = nn.parent.arguments.map(e => {
if (types.isNumericLiteral(e)) {
return e.value
} else if (types.isUnaryExpression(e) && types.isNumericLiteral(e.argument)) {
switch (e.operator) {
case '-':
return -e.argument.value
case '+':
return e.argument.value
default:
return ''
}
}
return ''
}).filter(e => typeof e === 'number')
if (args.length !== 2) {
debugger;
// 再次引用
if (types.isReturnStatement(nn.parentPath.parentPath)) {
let nFuncName2 = nn.parentPath.parentPath.parentPath.parent.id.name
console.log(nFuncName2)
code2 = code2 + '\n' + nn.parentPath.parentPath.parentPath.parentPath.toString() +
`globalFuncs['${nFuncName2}'] = ${nFuncName2}`
let binding2 = nn.parentPath.parentPath.parentPath.parentPath.scope.getBinding(nFuncName2)
debugger
}
continue
}
if (nn.parentPath.parentPath.toString().includes('parseInt')) {
continue
}
let res = globalFuncs[nFuncName2](...args)
// console.log(nn.parentPath.toString(), res)
if (nn.parentPath.toString() === '$C_tWK(354, 348)') {
debugger;
}
nn.parentPath.replaceInline(types.valueToNode(res))
}
}
debugger
}
continue
}
if (nn.parentPath.parentPath.toString().includes('parseInt')) {
continue
}
let res = globalFuncs[nFuncName2](...args)
// console.log(nn.parentPath.toString(), res)
if (nn.parentPath.toString() === '$C_tWK(354, 348)') {
debugger;
}
nn.parentPath.replaceInline(types.valueToNode(res))
}
}
// debugger
}
continue
}
if (nn.parentPath.parentPath.toString().includes('parseInt')) {
continue
}
let res = globalFuncs[nFuncName](...args)
// console.log(nn.parentPath.toString(), res)
if (nn.parentPath.toString() === '$C_tWK(354, 348)') {
debugger;
}
nn.parentPath.replaceInline(types.valueToNode(res))
}
}
}
// if (types.isCallExpression(referencePath.parent)) {
// let {arguments} = referencePath.parent
// if (arguments.length !== 2) continue
// let res = globalFuncs[funcName](arguments[0].value)
// // console.log(funcName,inName,arguments[0].value,res)
// referencePath.parentPath.replaceWith(types.valueToNode(res))
// } else {
// if (!referencePath.parent.id) continue;
// // 继续找引用
// let inName = referencePath.parent.id.name;
// let binding3 = referencePath.scope.getBinding(inName);
// if (!binding3) continue;
// console.log('find', funcName, inName, binding3.references)
// for (const inReferencePath of binding3.referencePaths) {
// console.log('code ', generator(inReferencePath.parent).code, inReferencePath.parent.type)
// if (types.isCallExpression(inReferencePath.parent)) {
// let {arguments} = inReferencePath.parent
// if (arguments.length !== 1) continue
// let res = globalFuncs[funcName](arguments[0].value)
// console.log('444', funcName, inName, arguments[0].value, res)
// if (res === 'getTime') {
//
// let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});
// fs.writeFile('./tmp.js', code, (err) => {
// });
// }
// console.log('before', res, generator(inReferencePath.parent).code)
// inReferencePath.parentPath.replaceWith(types.valueToNode(res))
// console.log('afterr', res, generator(inReferencePath.parent).code)
// inReferencePath.skip()
// } else if (types.isVariableDeclarator(inReferencePath.parent)) {
// // 如果是继续引用 直接再找
// let inName2 = inReferencePath.parent.id.name;
//
// restoreValue(inName2, inReferencePath.parentPath.scope, funcName)
// }
// }
//
// }
}
......@@ -241,9 +393,6 @@ for (let i = 0; i < 1; i++) {
}
// 字符串还原铭文
var o = {};
var a = function () {
......@@ -278,12 +427,12 @@ function i(n) {
u = o[n];
} else {
for (var c = a(n), u = "", f = 0; f < c["length"]; ++f) {
var s = "fcDQb7d"["charCodeAt"](f % 7);
var s = "sONiPGm"["charCodeAt"](f % 7);
u += String["fromCharCode"](s ^ c["charCodeAt"](f));
}
o[n] = u;
}
if (u === 'PX12573')debugger;
if (u === 'PX12573') debugger;
return u;
}
......@@ -360,13 +509,15 @@ function U(t) {
return null;
}
}(t);
}
}
var J = function () {
var J = function () {
try {
return atob;
} catch (t) {}
}();
} catch (t) {
}
}();
function f(t) {
f = "function" == typeof Symbol && "symbol" == typeof Symbol["iterator"] ? function (t) {
return typeof t;
......@@ -374,7 +525,7 @@ function f(t) {
return t && "function" == typeof Symbol && t["constructor"] === Symbol && t !== Symbol["prototype"] ? "symbol" : typeof t;
};
return f(t);
}
}
traverse(ast, {
......@@ -394,7 +545,7 @@ traverse(ast, {
try {
// if (!types.isNumericLiteral(arguments[0]))return;
let res = i(arguments[0].value);
if(arguments[0].value === 'JDd9VWMFbA')debugger
if (arguments[0].value === 'JDd9VWMFbA') debugger
if (res === 'PX12573') debugger;
p.parentPath.replaceWith(types.valueToNode((res)))
console.log(arguments[0].value, res)
......@@ -423,17 +574,17 @@ traverse(ast, {
}
})
traverse(ast, {
CallExpression(path){
CallExpression(path) {
let {node} = path;
let {callee, arguments} = node;
if(!types.isIdentifier(callee))return;
if (callee.name !== 'C')return;
if (arguments.length !== 1)return;
try{
if (!types.isIdentifier(callee)) return;
if (callee.name !== 'C') return;
if (arguments.length !== 1) return;
try {
let res = U(arguments[0].value)
console.log(arguments[0].value, res)
path.replaceWith(types.valueToNode(res))
}catch (e){
} catch (e) {
}
......@@ -444,7 +595,6 @@ traverse(ast, {
console.timeEnd("处理完毕,耗时");
let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});
fs.writeFile(decodeFile, code, (err) => {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -22660,3 +22660,7 @@ let res2 = {
"city": "Bellevue", "postCode": res.zipcode, "areaCode": "+1", "mobile": parseInt(6185440258 + Math.random()*6185440),
}
console.log(JSON.stringify(res2))
$C_sYA(-132, -129)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment