【js逆向】JS 逆向参数与代码混淆

news/2024/11/6 18:23:09/文章来源:https://www.cnblogs.com/o-O-oO/p/18522744

原创 TtTeam

一、引言

随着互联网技术的不断发展,JavaScript(以下简称 JS)在网页开发中扮演着越来越重要的角色。许多网站为了保护自身的数据和业务逻辑,采用了各种技术手段对 JS 代码进行保护,其中包括参数加密和代码混淆。这给 JS 逆向工程带来了很大的挑战。JS 逆向工程在安全测试、数据挖掘、自动化测试等领域具有重要的应用价值。因此,研究 JS 逆向参数问题和代码混淆的解决方法具有重要的现实意义。

二、JS 逆向工程概述

2.1 JS 逆向工程的定义

JS 逆向工程是指通过分析和理解已有的 JS 代码,来揭示其内部的工作原理、算法和业务逻辑的过程。

2.2 JS 逆向工程的重要性

安全测试:可以发现网站中的安全漏洞,如 SQL 注入、跨站脚本攻击等。

数据挖掘:可以获取网站中的数据,如商品价格、用户评论等,为数据分析和市场研究提供支持。

自动化测试:可以模拟用户行为,对网站进行自动化测试,提高测试效率和质量。

三、JS 逆向参数问题

3.1 参数加密

常见的参数加密方式

    对称加密:使用相同的密钥对参数进行加密和解密。非对称加密:使用公钥进行加密,私钥进行解密。哈希算法:将参数进行哈希运算,得到固定长度的哈希值。

参数加密带来的挑战

    难以确定加密算法和密钥:加密算法和密钥通常是隐藏在代码中的,需要通过逆向分析来确定。加密后的参数难以理解:加密后的参数通常是一串无意义的字符,难以理解其含义和用途。

3.2 动态参数生成

常见的动态参数生成方式

    时间戳:根据当前时间生成参数。随机数:生成随机数作为参数。业务逻辑:根据业务逻辑生成参数,如用户 ID、订单号等。

动态参数生成带来的挑战

    难以预测参数值:动态参数的值通常是在运行时生成的,难以预测其具体值。参数与业务逻辑紧密相关:动态参数通常与业务逻辑紧密相关,需要理解业务逻辑才能确定参数的生成方式。

四、代码混淆

4.1 代码混淆的定义

代码混淆是指通过对代码进行变换和处理,使其变得难以理解和分析的技术手段。

4.2 常见的代码混淆方式

变量名混淆:将变量名替换为无意义的字符或随机字符串。

函数名混淆:将函数名替换为无意义的字符或随机字符串。

控制流混淆:通过改变代码的控制流结构,使其变得难以理解。

字符串加密:将字符串进行加密处理,使其在代码中以加密形式存在。

代码压缩:将代码进行压缩,去除空格、换行符等,使其变得难以阅读。

4.3 代码混淆带来的挑战

代码可读性降低:混淆后的代码变得难以理解,增加了分析的难度。

调试困难:混淆后的代码可能会破坏调试工具的正常工作,使得调试变得困难。

反混淆难度大:反混淆需要对混淆算法有深入的了解,并且需要花费大量的时间和精力。

五、JS 逆向参数问题的解决方法

5.1 静态分析

分析代码结构:通过分析代码的结构和逻辑,确定参数的生成方式和加密算法。

查找关键函数:查找与参数生成和加密相关的关键函数,分析其实现原理。

分析加密库:如果使用了加密库,可以通过分析加密库的代码来确定加密算法和密钥。

5.2 动态调试

使用调试工具:使用浏览器的开发者工具或专门的调试工具,对代码进行动态调试,跟踪参数的生成和加密过程。

断点调试:在关键代码处设置断点,观察参数的值和变化过程。

内存分析:通过分析内存中的数据,查找参数的加密密钥和加密后的参数值。

5.3 反加密算法

已知加密算法的反加密:如果已知加密算法,可以通过编写反加密函数来还原加密后的参数值。
未知加密算法的破解:对于未知的加密算法,可以通过分析加密后的参数值的特征,尝试破解加密算法。

六、代码混淆的解决方法

6.1 反混淆工具

使用反混淆工具:目前有一些专门的反混淆工具,可以对混淆后的代码进行反混淆处理,提高代码的可读性。

手动反混淆:对于一些简单的混淆方式,可以通过手动分析和修改代码来进行反混淆。

6.2 静态分析

分析混淆算法:通过分析混淆后的代码,尝试确定混淆算法的原理和实现方式。

还原代码结构:根据分析结果,尝试还原代码的结构和逻辑,使其变得易于理解。

6.3 动态调试

跟踪代码执行过程:通过动态调试,跟踪代码的执行过程,观察混淆后的代码在运行时的行为。

分析内存数据:通过分析内存中的数据,查找未被混淆的代码片段或关键数据。

七、实际案例分析

7.1 案例一:参数加密的解决

问题描述:某网站的登录接口使用了参数加密,加密后的参数难以理解,无法直接进行登录操作的模拟。

解决方法:

    静态分析:通过分析登录接口的代码,确定使用了对称加密算法,并找到了加密函数的调用位置。动态调试:使用浏览器的开发者工具,在登录操作时设置断点,观察参数的加密过程,确定了加密密钥。反加密算法:根据加密算法和密钥,编写了反加密函数,成功还原了加密后的参数值,实现了登录操作的模拟。

7.2 案例二:代码混淆的解决

问题描述:某网站的 JS 代码经过了严重的混淆,变量名和函数名都被替换为无意义的字符,代码结构难以理解。

解决方法:

    反混淆工具:使用了一款反混淆工具,对混淆后的代码进行了反混淆处理,提高了代码的可读性。静态分析:通过分析反混淆后的代码,确定了代码的结构和逻辑,找到了关键函数的位置。动态调试:在关键函数处设置断点,跟踪代码的执行过程,进一步理解了代码的业务逻辑。

八、未来发展趋势

8.1 加密算法和混淆技术的不断升级

随着安全意识的提高,网站开发者将不断升级加密算法和混淆技术,使得 JS 逆向工程变得更加困难。

8.2 反逆向技术的发展

为了应对 JS 逆向工程,可能会出现一些新的反逆向技术,如代码自毁、动态加密等。

8.3 人工智能在 JS 逆向工程中的应用

人工智能技术可以帮助分析和理解混淆后的代码,提高 JS 逆向工程的效率和准确性。

九、结论

JS 逆向参数问题和代码混淆给 JS 逆向工程带来了很大的挑战。通过静态分析、动态调试、反混淆工具使用等方法,可以有效地解决这些问题。然而,随着加密算法和混淆技术的不断升级,JS 逆向工程也将面临新的挑战。未来,需要不断探索新的技术和方法,以应对不断变化的安全形势。同时,也需要在合法合规的前提下进行 JS 逆向工程,避免侵犯他人的知识产权和隐私。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827776.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Xshell】高级用法: “隧道转发”

原创 大龙山悟道 IT运维不跑路xshell隧道转发类型 类型一:本地拨出 Local(Outgoing)作用:将本地计算机指定的某个端口连接到远程服务器的一个指定端口上。 应用场景:当从本地机器安全地访问位于远程服务器上的服务(如数据库、web服务等)时使用。 工作原理:通过SSH连接,用…

【安全运维】检测即代码(DAC) 详细步骤

原创 Zafkie1 SecLink安全空间引言 DAC(Detection As Code),检测即代码是一种战略方法,可将安全检测机制无缝集成到软件开发生命周期中。通过将安全控制视为代码,组织可以在整个SIEM运维过程中自动部署、配置和维护安全措施。 或许很多人听说过DAC的概念,但是并没有一步步地…

有道领世视频课程下载工具,如何在电脑端下载有道领世视频课程到本地?

一. 安装有道领世课程下载器 1.获取学无止下载器 https://www.xuewuzhi.cn/ydshengxue_downloader 2.下载安装后,然后点击桌面快捷方式运行即可。 注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。 二. 使用说明 1.学…

chapter15

relocation.py参数第一题问题用种子 1、2 和 3 运行,并计算进程生成的每个虚拟地址是处于界限内还是界限外?如果在界限内,请计算地址转换。 种子为1时:种子为2时:种子为3时:第二题问题使用以下标志运行:-s 0 -n 10。为了确保所有生成的虚拟地址都处于边界内,要将-l(界…

23设计模式详解

参考博客 https://baijiahao.baidu.com/s?id=1758410771062793648&wfr=spider&for=pc 设计模式(Design pattern) """ 对软件开发中【普遍存在(反复出现)的问题】,而提出的【解决方案】。每一个设计模式系统地命名、解释和评价了面向对象系统中一…

DearPyGui环境配置

DearPyGui 是一个基于Python的图形用户界面(GUI)工具包,它以简单易用而著称。这个库利用GPU加速渲染和高效的C/C++底层代码,确保了出色的性能和稳定性。DearPyGui支持异步函数,能够绘制大量数据点而不影响帧率,还内置了一个节点编辑器和实时开发调试工具。它适用于Window…

oasys系统代码审计

oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架,集成了jpa、mybatis等框架。简述: oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开…

科大讯飞离线lunix tts demo使用

项目中需要用到后台服务端用文本生成语音,网上大部分都是通过ai大模型推理出来的,还有写其他方式的,效果和生成时间都比较不理想,但是讯飞生成的只需要零点几秒,不愧是行业NO1,下面说下怎么使用。 1、下载官方demo。 2、在官方demo目录下,执行source 32bit_make.sh 或64…

高效数据集成:从旺店通到金蝶云

旺店通旗舰奇门数据集成到金蝶云星空:柏为销售出库单07.25 在现代企业的运营中,数据的高效流转和准确对接是确保业务顺畅运行的关键。本文将分享一个实际案例——如何通过轻易云数据集成平台,将旺店通旗舰奇门的数据无缝集成到金蝶云星空系统中。具体方案名称为“柏为销售出…

对比山海鲸报表和Tableau,哪款报表软件更好用?

在数据分析和报表制作的领域,企业往往面临着选择合适工具的难题。尤其是当市场上有很多功能强大的工具时,如何从中挑选出最适合自己需求的报表软件成为了一个关键问题。今天,我们将对比两款报表工具——山海鲸报表和Tableau,看看它们各自的特点和优势,帮助你做出明智的选择…

团子东子开奖了,这泼天的富贵!

秋招已经接近尾声了,最近各家公司的薪资也陆续公布了,今天在逛某客时,被一个 25 届 C9 硕的薪资羡慕到了,一起来感受下这泼天的富贵吧。 这个同学今年秋招总共拿到了 3 个 Offer,分别是:小米:28K*15,总包 45W,sp,北京。 美团:30K*15.5,总包 47W,sp,上海。 京东:…

odoo中对多条数据按条件进行分类汇总 read_group的用法总结并抽取出公式

今天在工作中遇到一个这样的问题。要求:做一个打印模板实现下面图中的分类汇总 py3o://for="o in object.delivery_containers_line.read_group(domain=[(delivery_order_id,=,object.id)], fields=[customer_id, delivery_order_id, sales_order_id, supplier_id,purcha…