js逆向之Webpack案例1

网站:YUhSMGNITWxNMEV2TDNkM2R5NW5iVGs1TG1OdmJTOCUzRA==

目标:拿到加密密码的代码

分析方法:

01.image-20220820163621076

02.向上看到底是模块化的还是普通的

//1.webpackfunction(x){
    function xxx(y){    #这个是模块加载器,这个y传入的可以是索引和对象的key,参数表示的是列表或对象的形参
        x[y].call(参数) 
    }
}( [function(){},
    function(){},
    function(){}
   ] );传入的可以是列表也可以是对象
//或者是对象
({
    1:function(){},
    2:function(){},
    3:function(){}
})  //括号里面的是自执行时传给x的实参

//2.普通的
function(){}
function(){}

image-20220821174338077我们需要encode函数, encode是对象n的一个成员方法, 那我们就需要对象n,所以我们需要包含这个对象的方法!

2 image-20220820165125204

蓝色部分是上述加密代码所在的函数里面,所以可以看出此次密码的加密是模块化的

03.所以加密的函数其实只是传入的列表或对象里的其中一项,所以此时需要找到模块加载器,也就是自执行代码中出现call或者apply的函数,也就是要扣代码,所以扣代码的步骤:

"""
1.构造一个自执行方法
2.找到这个加载器(加载模块的方法) #通过复制然后删除其他不必要的代码只留所谓的模块加载器
!function(t) {
    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
    }
}()  如果不确定可以放到console中运行一下以此判断整理得到的函数是否是没有错误的
3.找到调用的模块
也就是要找密码的加密方法,进入到a.encode()这个方法,
得到的是:
       n.prototype.encode = function(t, e) {
                var i = e ? e + "|" + t : t;
                return encodeURIComponent(this.jsencrypt.encrypt(i))
            } 然后通过断点看一看它们表示的是什么,如果开头断不住,可以试一下断return 

"""

image-20220820195046194

可以观察到这个方法返回的仍然是调用了一个方法,其中i是通过拼接到的字符串,所以仍要进入到方法当中找到调用的方法!

image-20220820195546875

进入之后指向的是所选部分,至于为什么知道它不是调用的函数是因为放上去时显示的并不是方法

可以发现实际调用的方法就是4:function(){}中,所以我们要找的要调用的模块就是这个,只要复制4:function(t,e,i){}放到自执行函数的对象里面即可。

最后整理后得到的是:

image-20220821182529271

image-20220821183052493

image-20220821183227431

然后传入参数就可得到一开始找到的o

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值