C妈妈加密返回值逆向分析

内容仅供参考学习


 

目标

网址:https://www.chanmama.com/promotionDetail/0IHXaJ1y7lRNaZyiTsKa6vHtvaZDe6zy/live
直播记录接口返回值加密


 

分析

 

  • 打开调试工具,先截获一个请求:
     
     
    C妈妈加密返回值逆向分析_第1张图片
     

  • 进入Initiator
     
     
    C妈妈加密返回值逆向分析_第2张图片
     

  • 一般情况通过这边进入函数中挨着找解密位置
     

  • 我们这边用二般方法:搜索
     
     
    C妈妈加密返回值逆向分析_第3张图片
     

  • 遇到解密我们一般可以直接搜索decrypt,加密的话就是encrypt了
     

  • 点击第一个app.xxxx.js
     
     
    C妈妈加密返回值逆向分析_第4张图片
     
    C妈妈加密返回值逆向分析_第5张图片
     

  • 打上断点后,重新触发一次请求
     
     
    C妈妈加密返回值逆向分析_第6张图片
     

  • 此时只能看到e为返回的加密值,我们在return最末那边打上个断点,看看中间操作是否为解密
     
     
    C妈妈加密返回值逆向分析_第7张图片
     

  • 到了这里我们就可以知道我们找的地方是正确的了


 

剥离 JS 加密代码

 

  • 由于这是个webpack格式,所以第一步寻找分发器,这个就不过多介绍了
     
     
    C妈妈加密返回值逆向分析_第8张图片
     

  • 找到分发器位置后,开始寻找_这个对象在哪里生成或者说被赋值的, 下面的x也在这边:
     
     
    C妈妈加密返回值逆向分析_第9张图片
     

  • 后面就是把分发器自执行函数整个扣下来:

    (function(t) {
    省略
        var m = u;
        c.push([0, "chunk-vendors"]),
        n()
    }
    )({字典内容先不抠过来})
    

 

  • 然后定义一个全局变量,给它赋值分发器外层的函数,这样我们后面可以通过全局变量来调用我们需要的方法
     
     
    C妈妈加密返回值逆向分析_第10张图片
     
  • 后面我们在分发器那边console.log一下,看看缺哪些东西,然后补在我们之前空着的字典里就行了就行了
     
     

     
  • 最终模拟解密就行了
function decrypt(e){
    return  App = app("3452"),
            Decrypt = app("acff"),
            n = App.enc.Utf8.parse("cmmgfgehahweuuii"),
            a = App.AES.decrypt(e, n, {
                mode: App.mode.ECB,
                padding: App.pad.Pkcs7,
            }),
            i = O(a),
            r = Decrypt.ungzip(i, {
	            to: "string"
	        }),
            r
}


 


欢迎朋友们V一起交流: zcxl7_7

你可能感兴趣的:(爬虫逆向分析,javascript,爬虫,webpack)