JS逆向教程第一发

2023-11-15

JS逆向教程第一发

项目简介

  • 本文适合爬虫新手初步接触js逆向时进行阅读,初步接触JS逆向,并不是很熟悉逆向操作的,可以以本文为参考,初步入门,如果有大佬,也欢迎批评指正
  • 本文以企名科技这个网站为例,初步介绍JS逆向的基本操作

环境准备

  • 此次项目涉及到JS的调试验证,所以需要有Chrome浏览器,Nodejs(js的运行环境),WebStorm(IDE)
  • nodejs直接在官网下载安装即可,安装完毕之后输入node --version,出现版本号即为安装成功。
  • WebStorm安装后需要激活,百度激活教程非常多,大家自行搜索,如果需要,也可以评论或者私信我来获取教程。

分析过程

首先,进入网站https://www.qimingpian.cn/finosda/project/pinvestment:

image-20220629101910570

查看源代码:

image-20220629221222859

发现全部都是js文件调用,直接通过源代码是无法获取到数据的。打开开发者工具,进行抓包,选择Fetch/XHR和文档,来查看网站发送的请求:

image-20220629221702807

可以看到存在productListVip和industryFiledVip两个文件,盲猜第一个文件是页面的标签列表,第二个文件为页面的公司数据*-.-*,点开第一个文件发现存在数据encrypt_data,但是是经过加密过的数据,所以需要对js文件进行分析:

image-20220629222458665

首先,我们可以盲猜该数据就是我们需要得到的数据,那么我们就可以奔着对该数据进行解密的目的去进行js调试,

首先,既然js文件中存在对该数据加密的代码,那么必然存在对该数据进行解密的代码,因为最后要显示再html上嘛,如果没有解密,又是如何进行显示的呢?

所以,我们可以再source面板中找到页面使用的js代码文件:

image-20220629223105597

选择我们需要调试的js文件,根据之前的页面源代码查看,我们可以首先选择app.c68…这个js文件进行调试,源代码页面右边有“XHR/提取断点”,其作用就是在页面进行请求数据时,对其进行拦断。如果代码堆叠在一行,可以点击代码页面左下角的{}符号进行格式化。

我们设置XHR断点:

image-20220630104057459

当请求数据网址中包含industryFiledVip时即为截断,刷新页面,可以发现调试已经开始:image-20220630104154944

我们可以一直往下执行,如果发现可疑的代码,可以将鼠标放到该变量上面可以查看该变量的值:

image-20220630104435185

也可以直接在控制台输出该变量的值:

image-20220630104340930

此时,我们经过调试,可以定位到下图中的语句存在可疑的数据:

image-20220630104642356

输出该参数,查看数据:

image-20220630104711359

可以发现,该数据似乎就是我们所需要的industryFiledVip文件中的encrypt_data参数,此时我们的目标就很明确了,就是去找对该参数进行解密的函数。

此时进行函数调用执行,查看该语句中调用的函数:

image-20220630105139569

此时我们可以看见存在一个s(e)函数,其中存在对json进行解析的代码,这时我们在控制台输出这个s(e)函数执行的结果:

cB16KLeZTyOh4sq

此时,我们可以清晰的看见,这个函数的返回值就是我们想要的数据,即之前的加密数据进行解密后的结果,所以这个函数内部的o()函数的作用一定是对加密数据进行解密,而且其中的参数只有一个是经过函数执行的结果,其余都是写死的。

这时我们打开WebStorm,新建一个js文件,将涉及到的函数全部复制到js文件中:

image-20220630110512884

image-20220630110545381

image-20220630110806904

image-20220630110918695

最后将entry_data带入到函数中进行执行运算,即可得到自己想要的数据,可继续进行下一步操作:

image-20220630111042633

至此,本次较为简单的js逆向即为结束,欢迎大家进行批评指正。(*.*)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS逆向教程第一发 的相关文章

  • 将构造函数传递给 Array.map?

    我怎样才能做这样的事情 var a 1 2 3 4 a map Date constructor 此代码在 Google V8 上引发错误 SyntaxError Unexpected number 我也尝试过 a map Date con
  • 有没有办法根据渲染的字符串创建 DOM 对象?

    有没有办法从整个字符串而不只是innerHTML 创建DOM 对象 我有一个完整呈现的 DOM 形式的字符串
  • 不使用 PHP 提交联系表单

    我还是一名学生 今天我们的讲师告诉我们 无需使用 mailto 函数即可提交联系我们表单的唯一方法是使用 PHP 我发誓去年另一位讲师向我们展示了一种仅使用 javascript 的方法 是否可以使用基本表单和 javascript 提交反
  • 使用 Jquery 附加链接

    我正在尝试根据您所在的页面添加指向我的页面的链接 我使用 Squarespace 来构建这个网站 因此对我来说最简单的方法是使用 Javascript 或 Jquery 我认为我缺少的这个语法有问题 我已经尝试用 来打破引号 但这不起作用
  • 如何以 Rails 方式处理 JavaScript 事件(例如“link_to :remote”)?

    我正在使用 Ruby on Rails 4 我想以 Rails 方式处理 JavaScript 事件 也就是说 例如 假设我有以下内容 link to destroy article path article method gt delet
  • 如何翻转 Twitter Bootstrap 的工具提示

    我正在使用 Twitter 的 Bootstrap 来实现工具提示 目前 工具提示显示在链接上方 我希望工具提示出现在链接下方 我该怎么做呢 我正在触发工具提示 它明确指出 底部 但它不想为我工作 tooltip tooltip place
  • 将事件添加到 Google Maps API InfoWindow 内的元素

    我想在 Google Maps API v3 InfoWindow 内放置一个带有输入字段和提交按钮的表单 提交后 我想调用一个函数 该函数使用输入字段中输入的地址启动方向服务 这是我的代码 我目前只测试方向事件是否被触发 我已经编写了完整
  • 将字符串(是一个函数)转换回 Javascript 中的函数

    我在下面将此函数作为字符串 我如何将其转换回函数 我正在从 JQuery 事件中提取事件处理程序 我想将它们存储为字符串 然后将它们转换回来 因为它们将保存在 mySQL 中 function if GActiveClick return
  • Next.js:如何将 source-map-explorer 与 Next.js 一起使用

    我想分析我的 Next js 构建源地图浏览器 https www npmjs com package source map explorer 有人可以帮我编写脚本吗 对于 React CRA 我使用以下脚本 build analyze n
  • Intro.js 2页然后返回首页

    我在用intro js http introjs com 为我的网站创建一个小介绍 我希望游览从第 1 页 主页 2 另一页 然后回到第 1 页 主页 我已经成功地从第 1 2 页开始 但不确定如何让它返回到第 1 页 我对 javascr
  • 在电子生成器反应电子应用程序后,在 Windows 中出现空白屏幕

    在电子生成器反应电子应用程序后 Windows 中出现空白屏幕 这是package json 在电子生成器反应电子应用程序后 Windows 中出现空白屏幕 name SmallBusinessManagement version 0 1
  • 在 Chrome 中加载analytics.js时出现307重定向

    我正在构建一个网络应用程序并使用 Google Analytics analytics js 进行分析 我最近注意到 Chrome 中的分析功能无法正常工作 我使用单独模块中的标准代码片段加载分析并通过 requirejs 包含 我已验证该
  • 我们如何使用 thymeleaf 绑定对象列表的列表

    我有一个表单 用户可以在其中添加任意数量的内容表对象这也可以包含他想要的列对象 就像在 SQL 中构建表一样 我尝试了下面的代码 但没有任何效果 并且当我尝试绑定两个列表时 表单不再出现 控制器 ModelAttribute page pu
  • Onblur 事件在另一个 div 的 onclick 之前触发

    如上所述 我有一个按钮 单击该按钮将打开子菜单 对于子菜单中的每个选项 都有三个元素 我认为实际上还有更多元素 但为了简单起见 将其保留为 3 我将焦点放在子菜单的主 div 白色 框架 上 Onblur 这个 div 然后我隐藏子菜单 这
  • 如何使用 Jquery .animate() 函数创建连续滚动内容? [复制]

    这个问题在这里已经有答案了 可能的重复 在jquery中实现圆形滚动条 https stackoverflow com questions 812049 implementing circular scroller in jquery 我想
  • 在React组件中使用的字符串变量中插入html

    我正在为我的投资组合网站构建一个反应应用程序 目前我已经用 JSX 编写了应用程序 因此我可以添加以下内容 class Project extends React Component render return div h1 this pr
  • Babel/RequireJS + typeof“RangeError:超出最大调用堆栈大小”

    我有一个非常基本的 JS 错误 我很羞愧无法解决它 我正在使用 ES6 和 Babel 进行开发 并且正在做一些实验 请注意 我在 Babel 中使用了这些参数 presets es2015 plugins transform es2015
  • 使用 javascript/jquery 从数据库格式化日期的正确方法

    我正在调用包含日期时间数据类型的数据库 日期看起来像这样 2005 05 23 16 06 00 000 当用户从列表中选择某个项目时 我想在表格中显示它 我调用我的控制器操作并返回所有时间的 Json 并将它们放入表中 问题是日期完全错误
  • 如何调试 Node.js 应用程序?

    如何调试 Node js 服务器应用程序 现在我主要使用警报调试打印语句如下 sys puts sys inspect someVariable 一定有更好的调试方法 我知道谷歌浏览器 http en wikipedia org wiki
  • 错误:模块“html”不提供视图引擎(Express)

    我正在尝试设置一个简单的路由应用程序 但在渲染页面时不断遇到错误 Error Module html does not provide a view engine 奇怪的是我已经在 app js 文件中指定了视图引擎 但仍然收到错误 app

随机推荐

  • 高斯牛顿法求非线性最小二乘的步骤和c++代码实现

    slam图优化的本质是一个非线性优化问题 Gauss Newton求解步骤 1 线性化误差函数 2 构建线性系统 3 求解线性系统 4 更新解 并不断迭代直至收敛 一个简单的代码实现 一维参数xy 高维变为对应的矩阵即可 include
  • 如何用cublas计算逆矩阵?

    cublas的文档中提供了一个用LU分解求逆矩阵的方法 需要用到两个函数 cublas
  • yum Error downloading packages: xxx [Errno 256] No more mirrors to try.

    问题 解决 yum clean all执行后再执行yum makecache 清除缓存以及重新下载相关包信息缓存到本地
  • C语言之自定义函数的实现

    自定义函数的作用 方便管理代码 编写程序时思路清晰 代码复用 同一段代码可以在不同位置多次执行 函数声明 使用 返回值类型 函数名 类型 变量名 类型 变量名 例如 int sum int num1 int num2 实际上 在函数声明时
  • 【Leetcode】154. 寻找旋转排序数组中的最小值 II

    题目描述 已知一个长度为 n 的数组 预先按照升序排列 经由 1 到 n 次 旋转 后 得到输入数组 例如 原数组 nums 0 1 4 4 5 6 7 在变化后可能得到 若旋转 4 次 则可以得到 4 5 6 7 0 1 4 若旋转 7
  • php脚本中利用mail函数发送邮件及问题归纳

    最近在学php脚本语言 书中有一个实例 服务器端将浏览器发送的信息通过php脚本 利用mail函数发送到一个邮箱 自己讲书中实例代码上传至服务器 在浏览器上填写表单 并提交后 邮箱迟迟收不到邮件 1 php中mail函数发送邮件失败问题 邮
  • 2021-10-19,Oracle VM VirtualBox中安装增强功能失败

    问题 Oracle VM VirtualBox中安装增强功能失败 根据给出的信息提示进行解决 This system is currently not set up to build kernel modules Please instal
  • 静态博客提升访问速度:内嵌CSS,异步加载js,压缩HTML

    在谷歌搜索的功能速度 实验性 中推荐使用工具PageSpeed Insights查看我的网页访问速度情况 PageSpeed Insights 分数很低 只有33分 优化建议的第一条是移除阻塞渲染的资源 里面列出了非异步加载的css和js文
  • 公告

    作为一个稳定 高效 安全的区块链底层平台 FISCO BCOS一方面致力于保障系统稳定性 兼容性 鲁棒性 易用性 另一方面专注于提升区块链底层平台的性能 可扩展性 自FISCO BCOS v3 0开始 社区更是秉着开源 开放 联合共建的原则
  • 最长公共子序列算法_解决最长公共子序列问题的算法和过程

    最长公共子序列算法 最长的公共子序列 Longest common Subsequence Let X and Y be two subsequences and by LCS algorithm we can find a maximum
  • 机器学习笔记——概率生成模型

    假设有两类数据 每一类都有若干个样本 概率生成模型认为每一类数据都服从某一种分布 如高斯分布 从两类训练数据中得到两个高斯分布的密度函数 具体的是获得均值和方差两个参数 测试样本输入到其中一个高斯分布函数 得到的概率值若大于0 5 则说明该
  • nestjs:判断字符串是否是邮箱格式

    问题 如标题 参考 js判断邮箱格式是否正确 掘金 解决 function checkIsMail mail string const regex a zA Z0 9 a zA Z0 9 a zA Z0 9 2 4 return regex
  • c++之全局变量

    全局变量需要我们在头文件声明 在cpp文件定义 请记住尽量这么做 保持操作的规范性 全局变量的使用 一般为两种 一种是不包含头文件 一种是包含了头文件 1 不包含头文件 例如我在test02 h中声明了全局变量 接下来在cpp中定义 如果想
  • 九十六、kettle版本8.2连接数据库的中文乱码问题

    在学习使用kettle 从Excel导数据到MySQL数据库的过程中踩了不少坑 总结一下以做前车之鉴 希望能给大家提供一点帮助 关于中文乱码目前找到了两种也可以叫三种方法 因为版本不同而方法可能不同 目前我使用第一种防范解决了中文乱码问题
  • React:状态提升案例-烧开水

    1 定义Boilingverdict组件 function Boilingverdict props if props celsius gt 100 return h1 水烧开了 h1 else return h1 水凉凉 h1 expor
  • ffmpeg基础一:解封装

    参考 零声学院 1 解封装流程 2 打开文件或媒体 获取文件或媒体的媒体信息AVFormatContext AVFormatContext是描述一个媒体文件或媒体流的构成和基本信息的结构体 AVFormatContext ifmt ctx
  • python绘制动态变化的图_用Jupyter Noteb中的matplotlib绘制动态变化图形

    我一直在寻找一个很好的解决方案 其中一个线程正在泵送数据 我们希望Jupyter笔记本不断更新图形 而不阻止任何事情 在查阅了十几个相关答案后 以下是一些发现 小心 如果你想要一个实时的图表 不要使用下面的魔术 如果笔记本使用以下内容 则图
  • 一个在PDO数据绑定上踩的坑

    不经常用PDO 一直不知道数据绑定的时候的一个细节 不可使用同一个变量名为不同的符号进行数据绑定 因为这样的话会导致在执行execute 时 不同符号都绑定了同一个值 最后一个赋予这个变量名的值 比如 letters array a b c
  • mysql商品实现多退少补_(转)mysql处理高并发,防止库存超卖

    原文链接 http blog csdn net caomiao2006 article details 38568825 今天王总又给我们上了一课 其实mysql处理高并发 防止库存超卖的问题 在去年的时候 王总已经提过 但是很可惜 即使当
  • JS逆向教程第一发

    JS逆向教程第一发 项目简介 本文适合爬虫新手初步接触js逆向时进行阅读 初步接触JS逆向 并不是很熟悉逆向操作的 可以以本文为参考 初步入门 如果有大佬 也欢迎批评指正 本文以企名科技这个网站为例 初步介绍JS逆向的基本操作 环境准备 此