webpack逆向

webpack扣代码

参考:https://app.yinxiang.com/fx/970ae39c-9964-4aae-aa96-7e81fee4ef8f

案例

网址:aHR0cHM6Ly93d3cuY29pbmdsYXNzLmNvbS8=

接口:aHR0cHM6Ly9jYXBpLmNvaW5nbGFzcy5jb20vYXBpL2V0Zi9mbG93

image.png

  1. 先定位接口以及返回的数据

接口上面已给出,响应数据一看就有加密。

image.png

  1. 使用XHR断点进行debugger

image.png

一步一步调试,找到解密的关键代码

image.png

  1. webpack打包

通过debugger调试,把这个解密的js拉到开头,可以看出典型的webpack打包

image.png

跟进到eZ里面去

image.png

  1. 找到webpack加载器

这里需要跟进到加载器,将加载器扣出来。

image.png

根据堆栈信息,可以找到加载器的入口

image.png

将加载器复制出来,保存为本地js

image.png

  1. 调试webpack,扣对应使用的js文件,补环境。

新建load.js, 将加载器全部复制出来

image.png

通过加载器代码可发现h为加载器函数,使用全局变量导出 加载器函数。

image.png

调试, 发现报错

image.png

打断点到self这里,看下是什么。

image.png

这里可发现self就是window。

直接补环境即可。

image.png

继续执行,发行正常运行。

image.png

接下来定位到解密的js,看到上面的 解密的关键代码 那块的图;找到对应的js文件和执行解密的代码块,看是使用的那个模块。

image.png

定位到解密的关键代码块,往上找加载了什么模块。

我这里将这个js全部复制到vscode里面,通过关键字搜索,定位到了解密代码块,vscode也有提示这个代码块是属于那个模块的。

image.png

可以看出来是2214模块

再使用加载器,调试下这个模块。

window.my_load(2214)

image.png

image.png

image.png

通过输出结果,发现2214这个模块没有加载进来。

好,刚才我们已经定位到这个js了,直接全扣出来。

新建个文件 wp_model.js, 将那个js全部复制到文件中image.png

再将该js导入到load.js里面,再次执行。

image.png

image.png

好,发现还缺少另一个模块 67294。

直接通过开发者工具搜索,67294:,找到对应的模块加载js,将其扣入wp_model.js中,再次执行load.js直到把所有使用到的模块补全。

image.png

image.png

这个案例用到了这两个模块(其实我们扣多了,有更简化的方案,这里不赘述);

image.png

直到输出没有报错,表示已经完成🎉。

  1. 使用全局变量导出解密函数
    前面我们已经找到了解密关键代码块对应的function,这里直接用全局变量给他导出。

image.png

也就是这个function。

找到我们wp_model.js中对应的位置,使用window全局变量挂到自定义一个变量上去。即可使用。

比如window.my_decrypt = function(t) ….

image.png

这里可以看到需要传入t参数,t参数怎么来呢?直接在浏览器上debugger到这里,复制t 这个obj就行。

image.png

image.png

至此恭喜你完成解密。🎉


 上一篇
webpack自吐 webpack自吐
webpack自吐示例网站:aHR0cHM6Ly9zcGEyLnNjcmFwZS5jZW50ZXIv 示例接口:aHR0cHM6Ly9zcGEyLnNjcmFwZS5jZW50ZXIvYXBpL21vdmllLw== token值js动态生
2025-01-03
下一篇 
记一次OOM 记一次OOM
现象最近报表解析告警群,频繁出现kafka堆积告警。topic某个partition消费不动,其他partition消费正常,异常奇怪;同时消费者服务其中一个pod先挂掉,引发rebalance,导致其他pod也rebalance,同时挂掉
2023-03-13
  目录