前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Re】JS 逆向快速入门实战指南

【Re】JS 逆向快速入门实战指南

原创
作者头像
sidiot
发布2024-08-10 16:18:33
3463
发布2024-08-10 16:18:33
举报
文章被收录于专栏:技术大杂烩

声明

本博文所讨论的技术仅用于研究学习,旨在增强读者的信息安全意识,提高信息安全防护技能,严禁用于非法活动。任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。

流量分析,数据接口均已做脱敏处理,若造成侵权,请立即联系博主删除!

逆向目标

目标:将数据包中的密文进行解密;

链接:GTCx6Xsvc3waRj6PF1Gpo4Fz1M8VtxspCDiBP5JbMQPRRSmH9tQJ;

简介:为了提高传输数据的安全性,防止中间人攻击等,会对重要的数据进行加密,如下图所示,本篇博文我们就来逆向解密这些数据;

解密分析

虽然流量包里的数据是加密的,但是在浏览器的页面中却是明文显示,说明是通过 JS 来进行解密,因此我们通过搜索 JS 里的关键解密函数,来进行解密分析。

Ctrl + Shift + F 快速搜索 decrypt(,找到关键解密函数,如下图所示:

return 这里打个断点进行调试,发现最终返回的是明文数据,如下图所示,说明这个函数正是我们要找的解密函数。

将这块解密代码复制出来,如下所示:

代码语言:javascript
复制
data = ''

function f(data) {
    var e = y.a.AES.decrypt(data, z, {
        iv: y.a.enc.Utf8.parse(j.substr(0, 16)),
        mode: y.a.mode.ECB,
        padding: y.a.pad.Pkcs7
    });
    return JSON.parse(e.toString(y.a.enc.Utf8))
}

由于这里用的是标准的 AES 加密算法,因此偷懒直接使用第三方库 crypto-js 来解密。

先安装第三方库 crypto-js

代码语言:javascript
复制
nmp install crypto-js

然后导入第三方库 crypto-js,并替换原代码中的 y.a,代码如下所示:

代码语言:javascript
复制
const CryptoJs = require('crypto-js')

function f(data) {
    var e = CryptoJs.AES.decrypt(data, z, {
        iv: CryptoJs.enc.Utf8.parse(j.substr(0, 16)),
        mode: CryptoJs.mode.ECB,
        padding: CryptoJs.pad.Pkcs7
    });
    return JSON.parse(e.toString(CryptoJs.enc.Utf8))
}

但是,我们发现变量 zj 还没定义,从现在的位置往上寻找,发现 zj 正在此处:

将变量 zj 定义之后,尝试运行代码 console.log(f(data)),运行结果如下所示:

至此,我们就成功地完成了解密分析。

后记

本博文通过实际案例的解密过程,展示了如何运用逆向工程技术来破解数据加密,并理解其背后的逻辑。阅读完本博文之后,希望读者能够对如何通过分析 JavaScript 代码来解密 API 接口中的加密数据有一个清晰的理解。

以上就是博文 JS 逆向快速入门实战指南 的所有内容了,希望本篇博文对大家有所帮助!欢迎大家持续关注我的博客,一起分享学习和成长的乐趣!✨

严正声明:本博文所讨论的技术仅用于研究学习,旨在增强读者的信息安全意识,提高信息安全防护技能,严禁用于非法活动。任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 声明
  • 逆向目标
  • 解密分析
  • 后记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档