JS逆向补环境框架

学习JS逆向是一个痛并快乐着的过程,每份JS就像是一个盲盒玩具,精心的拆解研究内部结构,抽丝剥茧似的逼近真像,还有与前端斗智斗勇的躲坑大挑战,这充分体现了“与天斗、与地斗、与人斗”的各种其乐无穷,快乐就要伴随着失去,就是日渐凋零的头发,哎,我的头发。

开头发了一通牢骚与感慨,说点正题吧,JS逆向两种思路,补环境与算法还原,为了所剩无几的头发我选择了补环境。但是每份JS需要的环境又不一样,于是萌生了一个想法就是搞一个通用的框架可以模拟浏览器,这里还请魔改浏览器的大神们不要BS,我也就是一个小萌新。经过一段时间的折腾,目前框架已经初见端倪,老规矩不废话,先上图,看看效果。

1.zp_token

2.某团sig

3.rs5

 

 上完效果图,再说说我的框架,基本上补齐了大部分的需求。还是上图

 

 

 

 基本上改补的都补齐了,指纹部分模拟了字体、浏览器、canvas、浏览器插件

目前可以实现黑盒过瑞数5代,感兴趣的小伙伴们可以私聊

JavaScript逆向分析过程中,充运行环境(即“环境”)是一个关键步骤。由于目标代码通常依赖于特定的执行环境,例如浏览器中的`window`、`document`对象或某些全局函数和变量,直接在非浏览器环境中(如Node.js或调试器中)运行这些代码可能导致错误或无法正常执行。 ### 环境的基本方法 为了确保目标JavaScript代码能够顺利执行,需手动模拟其依赖的运行环境。常见的环境方法包括: - **模拟全局对象**:在非浏览器环境下,需要手动定义`window`、`document`等对象,以防止代码因引用未定义而报错。 - **重写内置函数**:部分代码可能使用了`navigator`、`location`等浏览器API,应根据实际需求进行模拟或覆盖。 - **拦截网络请求**:使用工具如`Proxy`或`fetch`钩子来捕获和分析网络请求,有助于追踪加密参数生成逻辑[^3]。 ### 实践技巧 1. **识别关键依赖**:通过静态分析确定目标代码所依赖的全局变量和函数,例如加密函数是否依赖于某个特定的上下文变量。 2. **逐步调试与断点设置**:在关键函数入口处设置断点,观察调用栈和变量变化,帮助理解加密逻辑流程[^3]。 3. **动态替换函数实现**:可以将原生函数替换成自定义版本,以便记录参数或返回值,辅助分析复杂逻辑。 ### 示例:构造基础运行环境 以下是一个简单的环境示例,模拟浏览器全局对象并支持基本的DOM操作: ```javascript // 模拟 window 和 document 对象 const jsdom = require("jsdom"); const { JSDOM } = jsdom; const dom = new JSDOM(`<!DOCTYPE html><html><body></body></html>`); global.window = dom.window; global.document = dom.window.document; // 模拟 navigator 和 location global.navigator = { userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36" }; global.location = { href: "https://example.com", hostname: "example.com" }; // 现在可以安全地加载和执行目标JS代码 ``` ### 自定义函数拦截与调试 若目标代码中存在类似如下结构的函数: ```javascript function f() { // 此处省略n行 } ``` 可将其替换为带有日志输出的版本,用于跟踪输入输出: ```javascript const originalF = f; f = function(...args) { console.log('Function f called with:', args); const result = originalF.apply(this, args); console.log('Function f returned:', result); return result; }; ``` 此类技术适用于对加密参数生成函数进行监控和调试[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值