奕玖科技 > 新闻中心 > 建站指南

如何有效地进行前端js逆向?

来源: 奕玖科技 瘦死的猪 | 2025/7/24 9:48:59

有效地进行前端JS逆向需要结合工具使用、调试技巧和系统化的分析方法。以下是关键步骤和技巧总结:

20230116638094709862372372.jpg

1. 基础准备

  • 掌握JavaScript基础:熟悉变量、函数、闭包、异步编程等核心概念5。

  • 熟练使用浏览器调试工具(Chrome DevTools/Firefox Developer Tools):

    • Sources面板:格式化代码(点击{})、设置断点(XHR/事件/条件断点)1。

    • Network面板:捕获加密请求,分析参数(如tokensign)19。

    • Console面板:动态执行函数或Hook关键方法9。


2. 逆向核心流程

(1) 定位加密入口

  • 全局搜索:在Sources面板按Ctrl+Shift+F搜索参数名(如"nonce"password:)1。

  • 调用栈追踪:通过Network请求的Initiator标签回溯加密逻辑触发点19。

  • XHR断点:针对特定URL拦截请求,分析参数生成过程4。

(2) 调试与分析

  • 代码格式化:美化压缩代码以提高可读性1。

  • 断点类型:

    • 事件断点:监听clicksubmit等DOM事件1。

    • 条件断点:在加密函数内设置条件(如param === "target")1。

  • Scope面板:查看局部变量、闭包中的关键值(如密钥、盐值)1。

(3) 模拟执行

  • 扣取JS代码:直接提取加密函数(如MD5、RSA),通过execjs(Python)调用17。

  • RPC通信:复杂混淆或浏览器依赖场景下,使用Sekiro等工具桥接1。

  • 无头浏览器:PlayWright/Selenium模拟完整渲染流程1。


3. 实战技巧

(1) Hook技术

  • 拦截关键函数:如btoaencrypt,通过Tampermonkey注入脚本监听输入输出1,6。

(function() {
  Var originBtoa = window.btoa;
  window.btoa = function(data) {
    console.log("base64 input:", data);
    return originBtoa(data);
  }
})();
  • 对象属性Hook:使用Object.defineProperty监听对象属性变化2。

(2) 反混淆方案

  • 控制流平坦化:使用AST工具(如Babel)还原代码逻辑1。

  • 字符串解密:动态执行提取真实字符串(如数组化字符串)1。

(3) 反调试对抗

  • 绕过debugger

    • 右键选择“一律不在此处暂停”或设置条件断点(如false)。

    • HookFunction.Constructor拦截debugger语句:

    var _constructor = Function.prototype.constructor;
    Function.prototype.constructor = function(d) {
      if (d == "debugger") return null;
      return _constructor(d);
    };

定时器干扰:清除所有setInterval

for (var i = 1; i < 99999; i++) window.clearInterval(i);

4. 常见加密类型与对策

  • 哈希算法(MD5/SHA1):扣取标准实现(如汽车之家MD5案例)1。

  • RSA加密:提取公钥,使用rsa库模拟加密(如苏宁易购登录)1。

  • 动态参数:

    • 时间戳:同步生成。

    • 随机数:固定盐值或重放Math.random()1。

  • 自定义编码:HookcharCodeAt分析变异Base64/移位编码1。


5. 高级场景

  • 微信小程序逆向:

    • 解密.wxapkg包,反编译源码后导入微信开发者工具调试10。

  • Webpack代码抠取:

    • 提取目标模块,补全依赖后通过__webpack_require__调用8。


6. 注意事项

  • 合法性:遵守robots.txt,避免高频请求1。

  • 维护成本:网站JS更新后需重新分析1。

  • 性能权衡:简单加密扣代码,复杂方案用RPC/无头浏览器1。


通过以上方法,可以系统化地突破前端加密。实际案例中需灵活组合工具与技巧,如汽车之家登录的MD5逆向1或对抗反调试6。更多实战代码可参考腾讯云开发者社区的教程1。


栏目导航
相关文章
文章标签
关于我们
公司简介
企业文化
资质荣誉
服务项目
高端网站定制
微信小程序开发
SEO排名推广
新闻动态
行业新闻
技术学院
常见问题
联系我们
联系我们
人才招聘
联系方式
Q Q:24722
微信:24722
电话:13207941926
地址:江西省抚州市赣东大道融旺国际3栋
Copyright©2008-2022 抚州市奕玖科技有限公司 备案号:赣ICP备2022010182号-1