react-native-decompiler
Version:
react native decompile apk and ipa(soon)
108 lines • 11.2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const traverse_1 = __importDefault(require("@babel/traverse"));
const types_1 = require("@babel/types");
const module_1 = __importDefault(require("../module"));
const performanceTracker_1 = __importDefault(require("../util/performanceTracker"));
class WebpackParser extends performanceTracker_1.default {
constructor() {
super(...arguments);
this.PARAM_MAPPING = {
module: 0,
exports: 1,
require: 2,
};
this.fileIsWebpackEntry = (file) => file.includes('window.webpackHotUpdate') || (file.includes('"Loading chunk "') && file.includes('"ChunkLoadError"'));
}
parseAst(ast, modules) {
traverse_1.default(ast, {
CallExpression: (nodePath) => {
const firstArg = nodePath.get('arguments')[0];
if (types_1.isFunctionExpression(nodePath.node.callee) && (firstArg === null || firstArg === void 0 ? void 0 : firstArg.isArrayExpression())) {
this.parseArray(ast, firstArg, modules);
}
else if (types_1.isMemberExpression(nodePath.node.callee) && types_1.isAssignmentExpression(nodePath.node.callee.object) && (firstArg === null || firstArg === void 0 ? void 0 : firstArg.isArrayExpression())) {
const assignment = nodePath.node.callee.object;
if (types_1.isMemberExpression(assignment.left)) {
let leftPropName = '';
if (types_1.isIdentifier(assignment.left.property)) {
leftPropName = assignment.left.property.name;
}
else if (types_1.isStringLiteral(assignment.left.property)) {
leftPropName = assignment.left.property.value;
}
if (leftPropName.startsWith('webpackJsonp')) {
const modulesObject = firstArg.get('elements')[1];
if (modulesObject.isArrayExpression()) {
this.parseArray(ast, modulesObject, modules);
}
else {
if (!modulesObject || !modulesObject.isObjectExpression())
throw new Error('Failed assertion');
this.parseObject(ast, modulesObject, modules);
}
}
}
}
nodePath.skip();
},
});
}
parseArray(file, ast, modules) {
ast.get('elements').forEach((element, i) => {
if (!element.isFunctionExpression())
return;
if (element.node.body.body.length === 0)
return;
const dependencyValues = [];
const requireIdentifer = element.node.params[2];
if (types_1.isIdentifier(requireIdentifer)) {
element.traverse({
CallExpression: (dependencyPath) => {
if (!types_1.isIdentifier(dependencyPath.node.callee) || !types_1.isNumericLiteral(dependencyPath.node.arguments[0]))
return;
if (dependencyPath.scope.bindingIdentifierEquals(dependencyPath.node.callee.name, requireIdentifer)) {
dependencyValues[dependencyPath.node.arguments[0].value] = dependencyPath.node.arguments[0].value;
}
},
});
}
const newModule = new module_1.default(file, element, i, dependencyValues, this.PARAM_MAPPING);
newModule.calculateFields();
modules[i] = newModule;
});
}
parseObject(file, ast, modules) {
ast.get('properties').forEach((property) => {
if (!property.isObjectProperty() || !types_1.isNumericLiteral(property.node.key))
return;
const element = property.get('value');
const i = property.node.key.value;
if (!element.isFunctionExpression())
return;
if (element.node.body.body.length === 0)
return;
const dependencyValues = [];
const requireIdentifer = element.node.params[2];
if (types_1.isIdentifier(requireIdentifer)) {
element.traverse({
CallExpression: (dependencyPath) => {
if (!types_1.isIdentifier(dependencyPath.node.callee) || !types_1.isNumericLiteral(dependencyPath.node.arguments[0]))
return;
if (dependencyPath.scope.bindingIdentifierEquals(dependencyPath.node.callee.name, requireIdentifer)) {
dependencyValues[dependencyPath.node.arguments[0].value] = dependencyPath.node.arguments[0].value;
}
},
});
}
const newModule = new module_1.default(file, element, i, dependencyValues, this.PARAM_MAPPING);
newModule.calculateFields();
modules[i] = newModule;
});
}
}
exports.default = WebpackParser;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VicGFja1BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWxlUGFyc2Vycy93ZWJwYWNrUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZUEsK0RBQXFEO0FBQ3JELHdDQUVzQjtBQUV0Qix1REFBK0I7QUFDL0Isb0ZBQTREO0FBRTVELE1BQXFCLGFBQWMsU0FBUSw0QkFBa0I7SUFBN0Q7O1FBQ21CLGtCQUFhLEdBQWtCO1lBQzlDLE1BQU0sRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztTQUNYLENBQUM7UUFFUSx1QkFBa0IsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBb0ZqTCxDQUFDO0lBbEZXLFFBQVEsQ0FBQyxHQUFTLEVBQUUsT0FBaUI7UUFDN0Msa0JBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWixjQUFjLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDM0IsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUMsSUFBSSw0QkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFJLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxpQkFBaUIsR0FBRSxFQUFFO29CQUMvRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7aUJBQ3pDO3FCQUFNLElBQUksMEJBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSw4QkFBc0IsQ0FBQyxR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