JS 逆向定位神器:史上最实用的 Hook 脚本

【作者主页】:小鱼神1024

【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等

大家都清楚,很多网站会把关键参数打包得像国宝大熊猫一样严密,我们的任务,就是要把这些参数的加密逻辑搞得明明白白。这次的神器就是 JS Hook 脚本:一招在手,天下我有!

随机变量固定

检验算法准确性必不可少的一环:

Date.now = function now() {
  return 1700000000000
};
Date.parse = function () {
  return 1700000000000
};
Date.prototype.valueOf = function () {
  return 1700000000000
};
Date.prototype.getTime = function () {
  return 1700000000000
};
Math.random = function random() {
  return 0.5
};

Cookie Hook

想知道 Cookie 里那些关键参数是哪里冒出来的吗?用下面的代码,锁定那些“神秘”的小 Cookie 们:

var tmpCookie = "";
Object.defineProperty(document, "cookie", {
  set: function (value) {
    if (typeof value === "string" && value.includes("a1")) {
      console.log("Hook捕获到cookie设置->", value);
      debugger;
    }
    tmpCookie = value;
    return value;
  },
  get: function () {
    return tmpCookie;
  },
});

Header Hook

用这个小魔法,瞄准请求头中的关键参数,比如 Authorization,察觉到就断点:

var originalSetRequestHeader = window.XMLHttpRequest.prototype.setRequestHeader;
window.XMLHttpRequest.prototype.setRequestHeader = function (header, value) {
  if (header === "Authorization") {
    debugger;
  }
  return originalSetRequestHeader.apply(this, arguments);
};

Hook 过 debugger

constructor 构造函数中的 debugger
var _constructor = constructor;
Function.prototype.constructor = function (string) {
  if (string == "debugger") {
    return null;
  }
  return _constructor(string);
};
eval 构造函数中的 debugger
(function () {
  "use strict";
  var eval_ = window.eval;
  window.eval = function (x) {
    eval_(x.replace("debugger;", "  ; "));
  };
  window.eval.toString = eval_.toString;
})();

URL Hook

这一招专治 URL 里的“鬼鬼祟祟”。任何带有 comment 的 URL 通通站住:

var originalOpen = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function (method, url) {
  if (typeof url === "string" && url.includes("comment")) {
    debugger;
  }
  return originalOpen.apply(this, arguments);
};

JSON.stringify Hook

让 JSON.stringify 无法藏身,所有的序列化行动皆在我们掌控中:

JSON.stringify_ = JSON.stringify;
JSON.stringify = function () {
  if (arguments[0] && arguments[0]["time"]) {
    debugger;
  }
  let result = JSON.stringify_.apply(this, arguments);
  return result;
};

JSON.parse Hook

解析 JSON 字符串时,不让任何小可爱 ab 躲过我们的视线:

JSON.parse_ = JSON.parse;
JSON.parse = function () {
  if (typeof arguments[0] === "string" && arguments[0].includes("ab")) {
    debugger;
  }
  return JSON.parse_.apply(this, arguments);
};

canvas hook

它常用于二维码场景

let create_element = document.createElement.bind(doument);

document.createElement = function (_element) {
  if (_element === "canvas") {
    debugger;
  }
  return create_element(_element);
};

你还知道其他常用 Hook 方法吗?在评论区留言吧!

创作不易,动动您发财的小手,点赞关注一波,支持我创作更多对您有帮助的文章!

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值