js逆向 webpack_Webpack打包后逆向分析

本文介绍了如何对Webpack打包后的JS进行逆向分析,重点在于理解webpackJsonp函数的作用和模块加载机制。通过分析模块序号,可以在Python的pyv8环境中执行特定模块的代码,例如提取并执行181号模块中的加密逻辑,同时需要注意由于V8引擎的限制,需要对原始JS代码进行适当修改,以适配纯JS环境。

webpack对前端js源码进行压缩打包后,一般会生成如下几个文件:

bootstrap.js 入口文件:

(function (modules) { // webpackBootstrap

// install a JSONP callback for chunk loading

var parentJsonpFunction = window["webpackJsonp"];

window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {

// add "moreModules" to the modules object,

// then flag all "chunkIds" as loaded and fire callback

var moduleId, chunkId, i = 0,

resolves = [],

result;

for (; i < chunkIds.length; i++) {

chunkId = chunkIds[i];

if (installedChunks[chunkId]) {

resolves.push(installedChunks[chunkId][0]);

}

installedChunks[chunkId] = 0;

}

/*遍历数组moreModules中的模块(也就是一个一个的函数),只要moreModules含有属性moduleId,则存入全局modules数组中

moduleId就是数组的moreModules数组的下标*/

for (moduleId in moreModules) {

//hasOwnProperty()用来判断一个属性是定义在对象本身而不是继承自原型链。

//Object.prototype.hasOwnProperty 表示Object对象是否含有某个属性,在此处变成moreModules是否含有moduleId属性

if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {

modules[moduleId] = moreModules[moduleId];

}

}

if (parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);

while (resolves.length) {

resolves.shift()();

}

if (executeModules) {

for (i = 0; i < executeModules.length; i++) {

result = __

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值