JS逆向无限debugger,混淆

先在api接口里看回来的数据有咩有混淆(启动器里看)

是一个类对象的方法  直接搜索decrypt(

设置-------代码折叠

浏览器指纹绕过

curl_cffi: 支持原生模拟浏览器 TLS/JA3 指纹的 Python 库_Resphalios的博客-优快云博客

无限debugger的解决方案

测试浏览器相等

(function () {}).constructor === Function   返回tucu的话就可以直接过dug

Function.prototype.constructor =function(){}

1,禁用所有的断点-----》开启所有断点不启用

2,禁用一处断点----》找到关键位置然后设置永不再此断

3,条件断点-------》也是在关键点找到后加一个条件 可以直接加fales让他不执行着

4,中间人工具替换特征字符串   feddler去写js替换
5,reres 替换本地修改过的文件

6,重写关键函数 -----》先把断点打在bug函数的下面,等断点出现后在控制台重写bug函数,让他置空

混淆

JavaScript 压缩
混淆 + 加密
1. 接口加密技术:
针对某些接口进行加密 -> url 参数 校验 编号 编码 (token sign 签名算法加密)

2. JavaScript压缩 混淆 加密技术:
JavaScript特点:
1. 客户端 ->必须要在用户浏览器加载并运行的
2. 公开透明的 浏览器获取JavaScript源代码

2.1 代码压缩:

2.2 代码混淆

2.3 代码加密 eval

3. 接口加密:
3.1 完全开放接口

3.2 接口参数加密:
接口校验方式 -> base64 Hex编码 MD5 AES DES RSA 等等 加密技术
sign -> 服务器和客户端校验 -> url path MD5加密 URL参数 base64编码 sign(aabbccvv)
-> request url 某个参数 请求头某个参数
服务器 -> 对比 客户端sign 服务器生成 sign 是否一致

www.baidu.com?word='xxxbbdbdd'(加密?)

提交?

4. JS混淆中混淆手段:
变量混淆:

字符串混淆

属性加密

僵尸代码

控制流平坦化(for  和 switch语句 )



多态变异

反格式化

特殊编码

静态图片 -> 假的 详情页 图片地址 https://www.img.com?abbcv假的sfhjasgfah
首页的图片里面 小图 图片地址 (xxxxxx/dasgasga/asfasfgas/sagfas.png)

JavaScript-obfuscator 对代码实现的混淆
https://obfuscator.io/ ES8 免费


npm init 初始化工作区域
npm install --save-dev javascript-obfuscator 下载混淆包


5. JavaScript 加密:
Emscripten:
asm.js
文本
WebAssembly:
二进制字节码

const code = `
let hello = '1' + 1
console.log('hello', hello)
`

const options = {
    compact: false,  // 是否压缩
    // mangled 变量名替换成普通的 简写字符
    // hexadecimal 替换为16进制字符串
//    identifierNamesGenerator: 'hexadecimal'
    // 代码体积变小
    // 拼接了前缀
//    identifiersPrefix: 'germey'
    // 指定是否混淆全局变量 或者函数名称
    renameGlobals: true
}

const obfuscator = require('javascript-obfuscator')
function obfuter(code, options){
    return obfuscator.obfuscate(code, options).getObfuscatedCode()
}
console.log(obfuter(code, options))


 

 eval:加密可以直接把这一串丢到控制台打印出结果也可以去掉eval再打印得到原来的代码

Emscripten :WebAssembly都是c或者c++重写

 JavaScript混淆-开源项目

UglifyJS:  https://github.com/mishoo/UglifyjS2

terser:   https://github.com/terser/terser

 javascript-obfuscator: https://github.com/javascript-obfuscator/javascript-obfuscator

jsfuck:   https://github.com/aemkei/jsfuck

AAEncode:   https://github.com/bprayudha/jquery.aaencode

JJEncode :  https://github.com/ay86/jEncrypt

加密分析步骤

颜文字类 

可以用请求里的一些字符打xhr断点,去堆站找最底下一条,找到混淆的代码,到控制台输出,若果有错就可以直接到里面去,如过没报错就先删除最后一个符号,让他报错,或者删除最后一个在.tostring

 

 eval打包类

 

还原代码

响应的加密

先全局搜索

1,decode

2,decry

3.JSON.pares  

4,写油猴脚本去hook JSON

css做的常见反爬

1.利用字体

应对措施:

(1)下载woff文件,转为tff文件

(2)用百度字体编辑器打开tff文件,确定其unicode与实际值的映射关系

  (3) 将下载的HTML内容按照映射关系替换

(4)解析HTML并获取正确的数据

注意tff文件的动态生成

2.背景

3.伪类

4利用元素定位

5.利用字符切割

爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
<think>好的,我现在需要处理用户关于JavaScript逆向工程技术和方法的查询。首先,我得理解用户的具体需求是什么。他们可能想了解如何分析或反编译JavaScript代码,用于安全测试、调试或学习目的。接下来,我需要回忆自己掌握的相关知识,并确保信息准确。 首先,用户的问题涉及技术方法,所以应该分步骤介绍常见的技术。比如,代码格式化、调试工具的使用、AST分析、Hook技术等。每个方法需要简要说明其原理和应用场景,同时结合示例代码或工具名称会更具体。 然后,用户提到了系统级指令,要求生成相关问题。我需要根据回答内容,设计几个相关的问题,例如工具推荐、反混淆方法、AST应用、Hook技术的检测等。这些问题应该覆盖用户可能进一步感兴趣的方面。 还要注意引用格式。用户提供的引用内容似乎与数据库锁定和后训练处理相关,可能与当前主题关联不大。但根据规则,需要在回答中适当添加引用标识。可能需要检查是否有相关引用可以自然融入,比如在代码混淆部分提到相关研究,但若引用内容不相关,可能需要灵活处理,或者仅在示例末尾添加引用。 另外,确保使用中文回答,LaTeX格式正确。数学公式或变量需要用$...$包裹,独立公式用$$...$$。例如,在解释加密算法时,如果有数学表达式,需要正确应用格式。 最后,结构要清晰,分点列出技术方法,每个方法下简要说明,然后给出示例代码(如Hook技术),并附上相关问题。同时检查是否有遗漏的重要技术,如网络请求分析、动态执行追踪等,确保覆盖全面。 现在整理思路,按步骤组织内容,确保每个部分符合用户的要求,同时保持回答真实可靠。需要避免技术错误,比如正确描述AST的作用,调试工具的使用方法等。最后生成相关问题,帮助用户深入探索。</think>### JavaScript逆向工程技术及方法 JavaScript逆向工程常用于分析加密算法、网络请求协议或代码逻辑,主要方法包括以下步骤: #### 1. **代码格式化与静态分析** - 使用工具(如Chrome DevTools的Pretty Print)将压缩代码转换为可读格式 - 通过AST(抽象语法树)分析工具(Esprima/Babel)解析代码结构 - 示例:$$ \text{混淆代码} \xrightarrow{反混淆} \text{可读代码} $$ #### 2. **动态调试技术** - 在浏览器调试器中设置断点,观察调用堆栈和变量变化 - 使用`debugger`语句拦截执行流程 ```javascript // Hook函数示例 const _original = window.XMLHttpRequest.prototype.send; window.XMLHttpRequest.prototype.send = function(body) { console.log("拦截请求体:", body); return _original.apply(this, arguments); }; ``` #### 3. **网络请求追踪** - 使用Charles/Fiddler捕获HTTPS请求 - 分析加密参数生成过程(如时间戳、签名算法)[^1] #### 4. **内存数据提取** - 通过Memory面板获取堆快照 - 使用`JSON.stringify()`强制转换加密对象 #### 5. **反混淆处理** - 识别常见混淆模式(十六进制编码、控制流平坦化) - 使用自动化工具(jsnice.org)还原变量名 #### 6. **WebAssembly分析** - 使用WABT工具链反编译wasm模块 - 通过Emscripten生成的胶水代码分析数据交互
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值