react-native-decompiler
Version:
react native decompile apk and ipa(soon)
115 lines • 10.5 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const generator_1 = __importDefault(require("@babel/generator"));
const crypto_1 = __importDefault(require("crypto"));
const types_1 = require("@babel/types");
class Module {
constructor(originalFile, rootPath, moduleId, dependencies, paramMappings) {
this.originalCode = '';
this.previousRunChecksum = '';
this.moduleStrings = [];
this.moduleComments = [];
this.variableNames = new Set();
this.isNpmModule = false;
this.isPolyfill = false;
this.isStatic = false;
this.staticContent = '';
this.ignored = false;
this.failedToDecompile = false;
this.tags = [];
this.originalFile = originalFile;
this.rootPath = rootPath;
this.moduleId = moduleId;
this.dependencies = dependencies;
this.originalDependencies = dependencies;
this.paramMappings = paramMappings;
this.moduleCode = rootPath.node.body;
this.moduleName = this.moduleId.toString();
this.globalsParam = this.getFunctionParam(paramMappings.globals);
this.requireParam = this.getFunctionParam(paramMappings.require);
this.moduleParam = this.getFunctionParam(paramMappings.module);
this.exportsParam = this.getFunctionParam(paramMappings.exports);
}
getFunctionParam(index) {
if (index == null)
return undefined;
const param = this.rootPath.get('params')[index];
if (!param || !param.isIdentifier())
return undefined;
return param.node;
}
calculateFields() {
var _a, _b;
this.originalCode = generator_1.default({
...this.originalFile.program,
type: 'Program',
body: [types_1.expressionStatement(this.rootPath.node)],
}, { compact: true }).code;
this.rootPath.traverse({
StringLiteral: (path) => {
this.moduleStrings.push(path.node.value);
},
Identifier: (path) => {
if (path.node.name.length > 1) {
this.variableNames.add(path.node.name);
}
},
});
this.moduleComments = ((_b = (_a = this.originalFile.comments) === null || _a === void 0 ? void 0 : _a.filter((comment) => this.rootPath.node.start && this.rootPath.node.end && comment.start > this.rootPath.node.start && comment.end < this.rootPath.node.end)) === null || _b === void 0 ? void 0 : _b.map((comment) => comment.value)) || [];
}
validate() {
if (!this.originalCode)
throw new Error('Original code is required');
if (!this.moduleStrings)
throw new Error('Module strings is required');
if (!this.moduleComments)
throw new Error('Module comments is required');
}
unpack() {
var _a, _b, _c, _d, _e, _f, _g, _h;
if ((_a = this.globalsParam) === null || _a === void 0 ? void 0 : _a.name) {
this.rootPath.scope.rename((_b = this.globalsParam) === null || _b === void 0 ? void 0 : _b.name, 'globals');
}
if ((_c = this.requireParam) === null || _c === void 0 ? void 0 : _c.name) {
this.rootPath.scope.rename((_d = this.requireParam) === null || _d === void 0 ? void 0 : _d.name, 'require');
}
if ((_e = this.moduleParam) === null || _e === void 0 ? void 0 : _e.name) {
this.rootPath.scope.rename((_f = this.moduleParam) === null || _f === void 0 ? void 0 : _f.name, 'module');
}
if ((_g = this.exportsParam) === null || _g === void 0 ? void 0 : _g.name) {
this.rootPath.scope.rename((_h = this.exportsParam) === null || _h === void 0 ? void 0 : _h.name, 'exports');
}
}
toCache() {
return {
code: this.originalCode,
dependencies: this.dependencies,
originalDependencies: this.originalDependencies,
ignored: this.ignored,
isNpmModule: this.isNpmModule,
isPolyfill: this.isPolyfill,
isStatic: this.isStatic,
staticContent: this.staticContent,
moduleId: this.moduleId,
moduleName: this.moduleName,
moduleStrings: this.moduleStrings,
moduleComments: this.moduleComments,
variableNames: [...this.variableNames],
paramMappings: this.paramMappings,
npmModuleVarName: this.npmModuleVarName,
previousRunChecksum: crypto_1.default.createHash('md5').update(JSON.stringify(this.moduleCode.body)).digest('hex'),
};
}
debugToCode() {
return generator_1.default({
...this.originalFile.program,
type: 'Program',
body: this.moduleCode.body,
}).code;
}
}
exports.default = Module;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQSxpRUFBeUM7QUFDekMsb0RBQTRCO0FBQzVCLHdDQUVzQjtBQUl0QixNQUFxQixNQUFNO0lBbUR6QixZQUFZLFlBQWtCLEVBQUUsUUFBc0MsRUFBRSxRQUFnQixFQUFFLFlBQXNCLEVBQUUsYUFBNEI7UUExQjlJLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUN6QixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUM3QixtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBUXZDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQixTQUFJLEdBQWEsRUFBRSxDQUFDO1FBR2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxZQUFZLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFFbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0Ms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