欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS逆向之?webpack?打包站點(diǎn)實(shí)戰(zhàn)原理分享

 更新時(shí)間:2022年06月01日 10:11:22   作者:夢(mèng)想橡皮擦  
本文主要介紹了JS逆向之webpack打包站點(diǎn)實(shí)戰(zhàn)原理分享,webpack是前端程序員用來(lái)進(jìn)行打包JS的技術(shù),打包之后的代碼特征非常明顯,更多相關(guān)知識(shí)需要的小伙伴可以參考下面文章詳細(xì)內(nèi)容

webpack 原理說(shuō)明

webpack 是前端程序員用來(lái)進(jìn)行打包 JS 的技術(shù),打包之后的代碼特征非常明顯,例如下述代碼。

(window.webpackJsonp = window.webpackJsonp || []).push([[0], []]);

有經(jīng)驗(yàn)之后,當(dāng)看到出現(xiàn) app.版本號(hào).js,chunk-libs.版本號(hào).js> 就能大概猜到 JS 是使用了 webpack 加密。

學(xué)習(xí)過(guò)程中,我們順手解決一個(gè) webpack 的加密站點(diǎn),地址如下所示:https://passport.gm99.com/

添加了包含關(guān)鍵字 login/login3 的斷點(diǎn)之后,通過(guò)開(kāi)發(fā)者工具調(diào)試得到下述代碼段。

當(dāng)通過(guò)調(diào)試進(jìn)入 a.encode() 函數(shù)內(nèi)部之后,發(fā)現(xiàn)了大量的 webpack 打包 JS 的痕跡,例如下圖紅框部分。

其實(shí)發(fā)現(xiàn)加密邏輯之后,可以直接用 Python 進(jìn)行復(fù)寫(xiě)代碼也是可以的。

這里面出現(xiàn)的關(guān)鍵字包含如下內(nèi)容。

  • n = function(t,e,n)
  • n.exports = s
  • .call(e,i,e,t)

然后翻閱到 JS 文件頭部,簡(jiǎn)化代碼得到如下內(nèi)容,到這里 webpack 的痕跡。

!(function (t) {
  function e(s) {
    return t[s].call(n.exports, n, n.exports, e), (n.loaded = !0), n.exports;
  }
})();

如果在細(xì)研究一下,webpack 打包之后的代碼執(zhí)行規(guī)則也非常簡(jiǎn)單。

!(function (t) {
  function e(s) {
    // 代碼省略
    return t[s].call(n.exports, n, n.exports, e), (n.loaded = !0), n.exports;
  }
  e(0); // 調(diào)用下面的 0
  e(1); // 調(diào)用下面的 1
})({
  0: function (t, e, i) {
    // 這里有一大堆打碼
  },
  1: function (t, e) {
    t.exports = jQuery;
  },
});

扣 JS 代碼

接下來(lái)我們就實(shí)戰(zhàn)扣取一下可執(zhí)行的 JS 代碼。

第一步:創(chuàng)建一個(gè) JS 文件,名稱(chēng)任意編寫(xiě)如下代碼,將函數(shù) e 暴露出來(lái)。

var _e;
!(function (t) {
  var i = {};
  function e(s) {
    if (i[s]) return i[s].exports;
    var n = (i[s] = {
      exports: {},
      id: s,
      loaded: !1,
    });
    return t[s].call(n.exports, n, n.exports, e), (n.loaded = !0), n.exports;
  }
  _e = e;
})();

接下來(lái)分區(qū)域扣取 JS 代碼,這里依據(jù) function() 進(jìn)行區(qū)分即可。

所有不全之后的代碼,可以去 gitcode 進(jìn)行下載。

接下來(lái)運(yùn)行生成的靜態(tài)文件,測(cè)試可執(zhí)行函數(shù),就能得到對(duì)應(yīng)的數(shù)據(jù)了。

到此這篇關(guān)于JS逆向之 webpack 打包站點(diǎn)實(shí)戰(zhàn)原理分享的文章就介紹到這了,更多相關(guān)JS webpack 打包 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論