js逆向之如何扣代码

一、js代码形式

(1)自执行函数一:

!function(arr){
    
}([
    function a(){},
    function b(){},
    function c(){},
    // ... 一系列函数
    function z(){}
])

执行示例

!function(arr){
    function useModule(whichModule) {
        // 利用 call 或 apply 调用函数
        arr[whichModule].call(null, "hello world!");
    }
    // 加载并运行了下面数组中的第1个函数
    useModule(0)

}([
    function a(param){console.log("1",param)},
    function b(){console.log("2")},
    function c(){console.log("3")},
    // ... 一系列函数
    function z(){console.log("4")}
])

(2)自执行函数二:

!function(obj){
    
}({
    a: function(){},
    b: function(){},
    c: function(){},
    // ... 一系列函数
    z: function(){}
})

执行示例

!function(abj){
	//函数加载器 
    function useModule(whichModule) {
        // 利用 call 或 apply 调用函数
        abj[whichModule].call(null, "hello world!");
    }
    // 加载并运行了下面数组中的第1个函数
    useModule("a")
    useModule(3)
}({
    a: function(param){console.log("a",param)},
    b: function(){},
    3: function(param){console.log(3,param)},
    // ... 一系列函数
    z: function(){}
})

二、如何扣代码

在这里插入图片描述

先把自执行函数函数加载器 先扣下来,再扣 函数集。其他不相干代码不用扣

三、进阶js扣代码

var result;
!function () {
    var __webpack_modules__ = {

        111:function (e,t,n) {
            console.log("我是函数",111)
            function func(){
                result = "加密函数"
                console.log('我是函数111的函数abc')
            };
            func();
            n(222);
        },
        222:function (e,t,n) {
                console.log("我是函数",222)
                n(333);
            },
        333:function (e,t,n) {
            console.log("我是函数",333)
        }

    }
    ,__webpack_module_cache__ = {};
    function __webpack_require__(e) {
        // console.log(__webpack_modules__[e])
        var t = __webpack_module_cache__[e];
        if (void 0 !== t)
            return t.exports;
        var n = __webpack_module_cache__[e] = {
            id: e,
            loaded: !1,
            exports: {}
        };
        return __webpack_modules__[e](n, n.exports, __webpack_require__),
            n.loaded = !0,
            n.exports
    }
    __webpack_require__.n = function(e) {
        var t = e && e.__esModule ? function() {
                return e.default
            }
            : function() {
                return e
            }
        ;
        return __webpack_require__.d(t, {
            a: t
        }),
            t
    }
    ,
    __webpack_require__.d = function(e, t) {
        for (var n in t)
            __webpack_require__.o(t, n) && !__webpack_require__.o(e, n) && Object.defineProperty(e, n, {
                enumerable: !0,
                get: t[n]
            })
    }
    ,
    __webpack_require__.g = function() {
        if ("object" == typeof globalThis)
            return globalThis;
        try {
            return this || new Function("return this")()
        } catch (e) {
            if ("object" == typeof window)
                return window
        }
    }(),
    __webpack_require__.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    ,
    __webpack_require__.r = function(e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
            Object.defineProperty(e, "__esModule", {
                value: !0
            })
    }
    ,
    __webpack_require__.nmd = function(e) {
        return e.paths = [],
        e.children || (e.children = []),
            e
    }

    __webpack_require__(111);

}();
console.log(result);
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云霄IT

感谢感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值