xhs_ast/antiXHS.js

85 lines
2.4 KiB
JavaScript
Raw Permalink Normal View History

2024-05-23 13:38:45 +00:00
const parser = require("@babel/parser");
const generate = require("@babel/generator").default
const traverse = require("@babel/traverse").default
const types = require("@babel/types")
const fs = require("fs");
const write = true
var code = `
var create_object = function (_garp_9ec95, _garp_4643e, _garp_09c0, _garp_76920) {
return {
_garp_420c: _garp_9ec95,
_garp_a70b5: _garp_4643e,
_garp_e1c2: _garp_09c0,
_garp_bd543: _garp_76920
};
};
var _garp_cd355 = function (_garp_76920) {
return _garp_76920._garp_bd543 ? _garp_76920._garp_a70b5[_garp_76920._garp_e1c2] : _garp_76920._garp_420c;
};
var Ba2ab = function (_garp_2ac4c, _garp_c46a) {
if (_garp_c46a.hasOwnProperty(_garp_2ac4c)) {
return create_object(0, _garp_c46a, _garp_2ac4c, 1);
}
var _garp_5768;
if (_garp_c46a._garp_6489) {
_garp_5768 = Ba2ab(_garp_2ac4c, _garp_c46a._garp_6489);
if (_garp_5768) {
return _garp_5768;
}
}
if (_garp_c46a._garp_9b66c) {
_garp_5768 = Ba2ab(_garp_2ac4c, _garp_c46a._garp_9b66c);
if (_garp_5768) {
return _garp_5768;
}
}
return false;
};
`
code = fs.readFileSync("XHS.js", {encoding: "utf-8"});
const ast = parser.parse(code)
const visitor = {
CallExpression(path) {
if (path.node.callee.name === "_garp_cd355") {
const args = path.node.arguments;
const objExpr = types.objectExpression([
types.objectProperty(types.identifier('_garp_420c'), args[0]),
types.objectProperty(types.identifier('_garp_a70b5'), args[1]),
types.objectProperty(types.identifier('_garp_e1c2'), args[2]),
types.objectProperty(types.identifier('_garp_bd543'), args[3])
]);
path.replaceWith(objExpr);
// const args = path.node.arguments;
// const obj = args[1];
// const prop = args[0];
// const hasOwnPropertyCall = types.callExpression(
// types.memberExpression(obj, types.identifier('hasOwnProperty')),
// [prop]
// );
// path.replaceWith(hasOwnPropertyCall);
}
}
}
traverse(ast, visitor)
const result = generate(ast)
code = result.code
console.log(code)
if (write) {
try {
fs.writeFileSync('XHS1.js', code, 'utf8');
console.log('File has been written');
} catch (err) {
console.error(err);
}
}