JS加密/解密之HOOK实战

JS加密/解密之HOOK实战_第1张图片

之前的章节有介绍过Javascript的Hook相关的基础知识,相信大部分人也知道了什么是Hook,今天我们来讲一下Hook实战,实际的运用。

0x1.事上练

// 程序员们基本都喜欢简单精辟 直入主题 不喜欢咬文嚼字 我们先直接上代码
var _log = console.log;
console.log = function(...args) {
    _log(1);
    _log(...args);
    _log(2);
}
console.log(132);

上边代码我相信很多朋友都可以一眼看得懂,大概就是hook了原生的js打印函数,在打印的前后加上1和2。

如果有看不懂上述代码的,可以自己复制到浏览器多运行几次断点调试一步步看一下。

0x2简述要点

其实像js hook的这类技术,搞java的朋友一定特别眼熟,是不是有点像aop。

js的这个hook技术其实也可以用于日志打印,比如,在每次console.log的时候打印出当前日期,这样分析日志的时候可以精准的知道这个报错,这个信息是在什么时候产生的。代码如下

var _log = console.log;
console.log = function(...args) {
  var format = function() {
      const now = new Date();
      const year = now.getFullYear();
      const month = ('0' + (now.getMonth() + 1)).slice(-2);
      const day = ('0' + now.getDate()).slice(-2);
      const hours = ('0' + now.getHours()).slice(-2);
      const minutes = ('0' + now.getMinutes()).slice(-2);
      const seconds = ('0' + now.getSeconds()).slice(-2);
      const formattedTime = year + '年' + month + '月' + day + '日 ' + hours + '时' + minutes + '分' + seconds + '秒';
      return formattedTime;
  }
    _log('[' + format() + ']:',...args);
}
console.log('jsjiami_com 国内首家免费js在线加密站');

运行上述代码后,你会很惊奇的发现,后面每次运行console.log函数都会自动在前边加上当前时间。

当然了将hook技术用来做日志仅仅知识他作用的冰山一角。

你可能感兴趣的:(javascript,前端,开发语言)