From 760682bb09525117bf9c19e8bcfe30faaef8c66a Mon Sep 17 00:00:00 2001 From: luzhisheng Date: Thu, 19 May 2022 18:00:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8C=BF=E4=BA=BA=E5=AD=A6=E7=AC=AC5=E9=A2=98-?= =?UTF-8?q?hook-cookie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- img/80.png | Bin 0 -> 73764 bytes 猿人学第5题-hook-cookie, AES加密/readme.md | 160 +++++++++++++++++ 猿人学第5题-hook-cookie, AES加密/案例.js | 192 +++++++++++++++++++++ 猿人学第5题-hook-cookie, AES加密/案例2.js | 14 ++ 猿人学第5题-hook-cookie/readme.md | 58 ------- 猿人学第5题-hook-cookie/案例.js | 15 -- 6 files changed, 366 insertions(+), 73 deletions(-) create mode 100644 img/80.png create mode 100644 猿人学第5题-hook-cookie, AES加密/readme.md create mode 100644 猿人学第5题-hook-cookie, AES加密/案例.js create mode 100644 猿人学第5题-hook-cookie, AES加密/案例2.js delete mode 100644 猿人学第5题-hook-cookie/readme.md delete mode 100644 猿人学第5题-hook-cookie/案例.js diff --git a/img/80.png b/img/80.png new file mode 100644 index 0000000000000000000000000000000000000000..15bb8105cfce0da10cf2805a89cc3c20a7fa7ac6 GIT binary patch literal 73764 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 AhyVZp literal 0 HcmV?d00001 diff --git a/猿人学第5题-hook-cookie, AES加密/readme.md b/猿人学第5题-hook-cookie, AES加密/readme.md new file mode 100644 index 0000000..5329fda --- /dev/null +++ b/猿人学第5题-hook-cookie, AES加密/readme.md @@ -0,0 +1,160 @@ +## 知识点 + +油猴hook是注意 //@run-at document-start 表示页面加载之前 + +hook cookie + +Cookie之所以要新增一个包含固定字符串的判断是因为,cookie经常被修改,这样会断很多次,而我们只想让他断在固定cookie块被设置的时候,因此这么写 + +hook m + + // ==UserScript== + // @name Hook Cookie + // @namespace http://tampermonkey.net/ + // @version 0.1 + // @description pass + // @author ayf + // @run-at document-start + // @match *://match.yuanrenxue.com/* + // @grant none + // ==/UserScript== + + (function () { + 'use strict'; + Object.defineProperty(document, "cookie", { + set:function(val){ + console.log(11111) + if(val.indexOf("m") != -1){ + debugger; + } + return val; + } + }) + })(); + +hook RM4hZBv0dDon443M + + // 方案二 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。 + + // ==UserScript== + // @name Hook Cookie + // @namespace http://tampermonkey.net/ + // @version 0.1 + // @description pass + // @author ayf + // @run-at document-start + // @match *://match.yuanrenxue.com/* + // @grant none + // ==/UserScript== + + (function () { + 'use strict'; + Object.defineProperty(document, "cookie", { + set:function(val){ + console.log(11111) + if(val.indexOf("RM4hZBv0dDon443M") != -1){ + debugger; + } + return val; + } + }) + })(); + +hook window + + // ==UserScript== + // @name Hook window + // @namespace http://tampermonkey.net/ + // @version 0.1 + // @description pass + // @author ayf + // @run-at document-start + // @match *://match.yuanrenxue.com/* + // @grant none + // ==/UserScript== + + (function () { + 'use strict'; + Object.defineProperty(window, "_$ss", { + set:function(val){ + console.log(11111) + console.warn("hook _$ss", val) + debugger; + return val; + } + }) + })(); + +这里 hook "RM4hZBv0dDon443M" 找到 _0x4e96b4['_$ss'] 生成的加密参数 + +![debugger](../img/80.png) + + _0x29dd83 = _$Tk['A' + _$UH[0x32d]][_$UH[0x337] + _$UH[0x336]](_$Ww, _0x4e96b4[_0xc77418('0x6', 'OCbs')], { + 'mode': _$Tk[_$UH[0x339] + _$UH[0x33a]][_$UH[0x2e5]], + 'padding': _$Tk[_$UH[0x33b]][_$UH[0x33c] + _$UH[0x33d]] + }), + _0x4e96b4['_$' + _$UH[0x348][0x1] + _$UH[0x353][0x1]] = _0x29dd83[_$UH[0x1f]](); + +解混淆 + + _0x29dd83 = _$Tk['AES']['encrypt'](_$Ww, _0x4e96b4['_$qF'], { + 'mode': _$Tk['mode']['ECB'], + 'padding': _$Tk['pad']['Pkcs7'] + }); + + ss = _0x29dd83['toString'](); + console.log(ss); + +这里就很熟悉了 AES加密,贴一段加密代码 + + const CryptoJS = require("crypto-js"); + + let value = "123456"; //待加密的字符串 + let secret_value = "af25-87hk-a35v-5"; //密匙 16位 + let iv_value = "af25-87hk-a35v-5"; // 初始向量 initial vector 16位 + + // 密匙和向量处理 + let secret = CryptoJS.enc.Utf8.parse(secret_value); + let iv = CryptoJS.enc.Utf8.parse(iv_value); + + // 加密 + let encrypted = CryptoJS.AES.encrypt(value, secret, { + iv: iv, + // mode 支持 CBC, CFB,CTB,ECB,OFB,OFB, 默认CBC + mode: CryptoJS.mode.CBC, + + // NoPadding, zeropadding 默认Pkcs7 即 pkcs5 + padding: CryptoJS.pad.Pkcs7 + }); + + // 将加密结果转换为字符串 + encrypted = encrypted.toString(); + + // 解密,传入密文,密钥盒向量设置加密与填充模式 + let decrypted = CryptoJS.AES.decrypt(encrypted, secret, { + iv: iv, + // mode 支持 CBC, CFB,CTB,ECB,OFB,OFB, 默认CBC + mode: CryptoJS.mode.CBC, + + // NoPadding, zeropadding 默认Pkcs7 即 pkcs5 + padding: CryptoJS.pad.Pkcs7 + }); + + // 将解密结果转换为utf8字符串 + decrypted = CryptoJS.enc.Utf8.stringify(decrypted); + + console.log(value); + console.log(encrypted); + console.log(decrypted); + +_$Ww是明文, _0x4e96b4['_$qF']是密钥 + +继续看代码 + + _$Ww = _$Tk['enc']['Utf8']['parse'](_0x4e96b4['_$pr']['toString']()); + +实例代码 + + let secret = CryptoJS.enc.Utf8.parse(secret_value); + + diff --git a/猿人学第5题-hook-cookie, AES加密/案例.js b/猿人学第5题-hook-cookie, AES加密/案例.js new file mode 100644 index 0000000..6d10108 --- /dev/null +++ b/猿人学第5题-hook-cookie, AES加密/案例.js @@ -0,0 +1,192 @@ +window = global; +_0x4e96b4 = window; +document = {}; +const CryptoJS = require("crypto-js"); +_$Tk = CryptoJS; + +var _0x30bc70 = String; +function _0xaaef84(_0xaf3112, _0x2a165a, _0x532fb4, _0x10aa40, _0x41c4e7, _0x1cb4da) { + return _0x12e4a8(_0x3634fc(_0x12e4a8(_0x12e4a8(_0x2a165a, _0xaf3112), _0x12e4a8(_0x10aa40, _0x1cb4da)), _0x41c4e7), _0x532fb4); +} +var _0x25e0a5, _0x3073c8 = null; +function _0x48d200(_0x4b706e, _0x3c3a85, _0x111154, _0x311f9f, _0x5439cf, _0x38cac7, _0x26bd2e) { + return _0xaaef84(_0x3c3a85 & _0x111154 | ~_0x3c3a85 & _0x311f9f, _0x4b706e, _0x3c3a85, _0x5439cf, _0x38cac7, _0x26bd2e); +} +function _0x12e4a8(_0x7542c8, _0x5eada0) { + var _0x41f81f = (0xffff & _0x7542c8) + (0xffff & _0x5eada0); + return (_0x7542c8 >> 0x10) + (_0x5eada0 >> 0x10) + (_0x41f81f >> 0x10) << 0x10 | 0xffff & _0x41f81f; +} +function _0x3634fc(_0x5803ba, _0x1ce5b2) { + return _0x5803ba << _0x1ce5b2 | _0x5803ba >>> 0x20 - _0x1ce5b2; +} +function _0x29dd83() { + var _0xba5f8a = [0x26d]; + Array['prototype']['push']['apply'](_0xba5f8a, arguments); + return _$$c['apply'](this, _0xba5f8a); +} +function _0x3180ec(_0x401705, _0x240e6a, _0x56b131, _0x5a5c20, _0x1f2a72, _0x2bfc1, _0x19741a) { + return _0xaaef84(_0x240e6a & _0x5a5c20 | _0x56b131 & ~_0x5a5c20, _0x401705, _0x240e6a, _0x1f2a72, _0x2bfc1, _0x19741a); +} +function _0x32032f(_0x520fdf, _0x13921d, _0x1af9d5, _0x4a2311, _0xb6d40a, _0x1d58da, _0x361df0) { + return _0xaaef84(_0x13921d ^ _0x1af9d5 ^ _0x4a2311, _0x520fdf, _0x13921d, _0xb6d40a, _0x1d58da, _0x361df0); +} +function _0x11a7a2(_0x193f00, _0x1cfe89) { + _0x193f00[_0x1cfe89 >> 0x5] |= 0x80 << _0x1cfe89 % 0x20, + _0x193f00[0xe + (_0x1cfe89 + 0x40 >>> 0x9 << 0x4)] = _0x1cfe89; + try { + var _0x42fb36 = _0x4e96b4[_$UH[0x260]][_$UH[0x8]]['DONE'] * 0x4; + } catch (_0x1b1b35) { + var _0x42fb36 = 0x1; + } + try { + _0x4e96b4['$_z2'][0x0] = 'Q'; + } catch (_0x4c574d) { + try { + op = 26; + } catch (_0x58af26) { + var _0x3b7935 = 0x0; + // for (var _0x1badc3 = 0x0; _0x1badc3 < 0xf4240; _0x1badc3++) { + // _0x3b7935 = _0x3b7935 + _0x1badc3['toString'](); + // history['pushState'](0x0, 0x0, _0x3b7935); + // } + } + if (op > 0x14) { + b64pad = 1; + } else if (op < 0xa) { + _0x4e96b4['$_zw'] = [0x1, 0x8, 0x2, 0x4, 0x17, 0x2d, 0x8, 0xf, 0x51, 0x44, 0xd, 0x48, 0x46]; + } + } + var _0x1badc3, _0x38ca59, _0x431764, _0x43f1b4, _0x5722c0, _0x3e0c38 = 1732584193, _0xdb4d2c = 271733879, _0x1724c5 = 1732584194, _0x257ec6 = 271733878; + try { + if (_0x4e96b4['_$6_']) {} else { + _0x4e96b4['_$6_'] = 0x20dc5d57f; + } + } catch (_0x15bf3f) { + _0x4e96b4['_$6_'] = 0x2421603; + } + for (_0x1badc3 = 0x0; _0x1badc3 < _0x193f00['length']; _0x1badc3 += _0x42fb36) + _0x38ca59 = _0x3e0c38, + _0x431764 = _0xdb4d2c, + _0x43f1b4 = _0x1724c5, + _0x5722c0 = _0x257ec6, + _0x3e0c38 = _0x48d200(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3], 0x7, 0x7d60c), + _0x257ec6 = _0x48d200(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0x1], 0xc, _0x4e96b4['_$6_']), + _0x1724c5 = _0x48d200(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0x2], 0x11, 0x242070db), + _0xdb4d2c = _0x48d200(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0x3], 0x16, -0x3e423112), + _0x3e0c38 = _0x48d200(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x4], 0x7, -0xa83f051), + _0x257ec6 = _0x48d200(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0x5], 0xc, 0x4787c62a), + _0x1724c5 = _0x48d200(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0x6], 0x11, -0x57cfb9ed), + _0xdb4d2c = _0x48d200(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0x7], 0x16, -0x2b96aff), + _0x3e0c38 = _0x48d200(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x8], 0x7, 0x698098d8), + _0x257ec6 = _0x48d200(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0x9], 0xc, -0x74bb0851), + _0x1724c5 = _0x48d200(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0xa], 0x11, -0xa44f), + _0xdb4d2c = _0x48d200(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0xb], 0x16, -0x76a32842), + _0x3e0c38 = _0x48d200(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0xc], 0x7, 0x6b901122), + _0x257ec6 = _0x48d200(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0xd], 0xc, -0x2678e6d), + _0x1724c5 = _0x48d200(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0xe], 0x11, -0x5986bc72), + _0xdb4d2c = _0x48d200(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0xf], 0x16, 0x49b40821), + _0x3e0c38 = _0x3180ec(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x1], 0x5, -0x9e1da9e), + _0x257ec6 = _0x3180ec(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0x6], 0x9, -0x3fbf4cc0), + _0x1724c5 = _0x3180ec(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0xb], 0xe, 0x265e5a51), + _0xdb4d2c = _0x3180ec(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3], 0x14, -0x16493856), + _0x3e0c38 = _0x3180ec(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x5], 0x5, -0x29d0efa3), + _0x257ec6 = _0x3180ec(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0xa], 0x9, 0x2441453), + _0x1724c5 = _0x3180ec(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0xf], 0xe, _0x4e96b4['_$tT']), + _0xdb4d2c = _0x3180ec(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0x4], 0x14, _0x4e96b4['_$Jy']), + _0x3e0c38 = _0x3180ec(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x9], 0x5, 0x21e1cde6), + _0x257ec6 = _0x3180ec(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0xe], 0x9, -0x3cc8aa0a), + _0x1724c5 = _0x3180ec(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0x3], 0xe, -0xb2af279), + _0xdb4d2c = _0x3180ec(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0x8], 0x14, 0x455a14ed), + _0x3e0c38 = _0x3180ec(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0xd], 0x5, -0x5caa8e7b), + _0x257ec6 = _0x3180ec(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0x2], 0x9, -0x3105c08), + _0x1724c5 = _0x3180ec(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0x7], 0xe, 0x676f02d9), + _0xdb4d2c = _0x3180ec(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0xc], 0x14, -0x72d5b376), + _0x3e0c38 = _0x32032f(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x5], 0x4, -0x241282e), + _0x257ec6 = _0x32032f(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0x8], 0xb, -0x788e097f), + _0x1724c5 = _0x32032f(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0xb], 0x10, 0x6d9d6122), + _0xdb4d2c = _0x32032f(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0xe], 0x17, -0x21ac7f4), + _0x3e0c38 = _0x32032f(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x1], 0x4, -0x5b4115bc * b64pad), + _0x257ec6 = _0x32032f(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0x4], 0xb, 0x4bdecfa9), + _0x1724c5 = _0x32032f(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0x7], 0x10, -0x944b4a0), + _0xdb4d2c = _0x32032f(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0xa], 0x17, -0x41404390), + _0x3e0c38 = _0x32032f(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0xd], 0x4, 0x289b7ec6), + _0x257ec6 = _0x32032f(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3], 0xb, -0x155ed806), + _0x1724c5 = _0x32032f(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0x3], 0x10, -0x2b10cf7b), + _0xdb4d2c = _0x32032f(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0x6], 0x17, 0x2d511fd9), + _0x3e0c38 = _0x32032f(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x9], 0x4, -0x3d12017), + _0x257ec6 = _0x32032f(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0xc], 0xb, -0x1924661b), + _0x1724c5 = _0x32032f(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0xf], 0x10, 0x1fa27cf8), + _0xdb4d2c = _0x32032f(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0x2], 0x17, -0x3b53a99b), + _0x3e0c38 = _0x4b459d(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3], 0x6, -0xbd6ddbc), + _0x257ec6 = _0x4b459d(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0x7], 0xa, 0x432aff97), + _0x1724c5 = _0x4b459d(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0xe], 0xf, -0x546bdc59), + _0xdb4d2c = _0x4b459d(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0x5], 0x15, -0x36c5fc7), + _0x3e0c38 = _0x4b459d(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0xc], 0x6, 0x655b59c3), + _0x257ec6 = _0x4b459d(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0x3], 0xa, -0x70ef89ee), + _0x1724c5 = _0x4b459d(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0xa], 0xf, -0x644f153), + _0xdb4d2c = _0x4b459d(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0x1], 0x15, -0x7a7ba22f), + _0x3e0c38 = _0x4b459d(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x8], 0x6, 0x6fa87e4f), + _0x257ec6 = _0x4b459d(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0xf], 0xa, -0x1d31920), + _0x1724c5 = _0x4b459d(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0x6], 0xf, -0x5cfebcec), + _0xdb4d2c = _0x4b459d(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0xd], 0x15, 0x4e0811a1), + _0x3e0c38 = _0x4b459d(_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6, _0x193f00[_0x1badc3 + 0x4], 0x6, -0x8ac817e), + _0x257ec6 = _0x4b459d(_0x257ec6, _0x3e0c38, _0xdb4d2c, _0x1724c5, _0x193f00[_0x1badc3 + 0xb], 0xa, -1120211379), + _0x1724c5 = _0x4b459d(_0x1724c5, _0x257ec6, _0x3e0c38, _0xdb4d2c, _0x193f00[_0x1badc3 + 0x2], 0xf, 0x2ad7d2bb), + _0xdb4d2c = _0x4b459d(_0xdb4d2c, _0x1724c5, _0x257ec6, _0x3e0c38, _0x193f00[_0x1badc3 + 0x9], 0x15, -0x14792c01), + _0x3e0c38 = _0x12e4a8(_0x3e0c38, _0x38ca59), + _0xdb4d2c = _0x12e4a8(_0xdb4d2c, _0x431764), + _0x1724c5 = _0x12e4a8(_0x1724c5, _0x43f1b4), + _0x257ec6 = _0x12e4a8(_0x257ec6, _0x5722c0); + return [_0x3e0c38, _0xdb4d2c, _0x1724c5, _0x257ec6]; +} + +function _0x499969(_0x82fe7e) { + var _0x5bdda4, _0x322a73, _0xd0b5cd = '0123456789abcdef', _0x21f411 = ''; + for (_0x322a73 = 0x0; _0x322a73 < _0x82fe7e['length']; _0x322a73 += 0x1) + _0x5bdda4 = _0x82fe7e['charCodeAt'](_0x322a73), + _0x21f411 += _0xd0b5cd['charAt'](_0x5bdda4 >>> 0x4 & 0xf) + _0xd0b5cd['charAt'](0xf & _0x5bdda4); + return _0x21f411; +} + +function _0x35f5f2(_0x243853) { + var _0x139b8b, _0xa791a1 = []; + for (_0xa791a1[(_0x243853['length'] >> 0x2) - 0x1] = void 0x0, + _0x139b8b = 0x0; _0x139b8b < _0xa791a1['length']; _0x139b8b += 0x1) + _0xa791a1[_0x139b8b] = 0x0; + var _0x41a533 = 0x8 * _0x243853['length']; + for (_0x139b8b = 0x0; _0x139b8b < _0x41a533; _0x139b8b += 0x8) + _0xa791a1[_0x139b8b >> 0x5] |= (0xff & _0x243853['charCodeAt'](_0x139b8b / 0x8)) << _0x139b8b % 0x20; + return _0xa791a1; +} + +function _0x12b47d(_0x149183) { + var _0xabbcb3, _0x1145c3 = '', _0x4fce58 = 0x20 * _0x149183['length']; + for (_0xabbcb3 = 0x0; _0xabbcb3 < _0x4fce58; _0xabbcb3 += 0x8) + _0x1145c3 += _0x30bc70['fromCharCode'](_0x149183[_0xabbcb3 >> 0x5] >>> _0xabbcb3 % 0x20 & 0xff); + return _0x1145c3; +} + +function _0x1ee7ec(_0x206333) { + return _0x12b47d(_0x11a7a2(_0x35f5f2(_0x206333), 0x8 * _0x206333['length'])); +} + +function _0x2b8a17(_0x36f847) { + return unescape(encodeURIComponent(_0x36f847)); +} + +function _0x41873d(_0x5a6962) { + return _0x1ee7ec(_0x2b8a17(_0x5a6962)); +} + +function _0x37614a(_0x32e7c1) { + return _0x499969(_0x41873d(_0x32e7c1)); +} +function _0x474032(_0x233f82, _0xe2ed33, _0x3229f9) { + return _0x37614a(_0x233f82); +} + +function _0x4b459d(_0x8d8f2a, _0x406d34, _0x53e7d7, _0x26c827, _0xec41ea, _0x52dead, _0x3f66e7) { + return _0xaaef84(_0x53e7d7 ^ (_0x406d34 | ~_0x26c827), _0x8d8f2a, _0x406d34, _0xec41ea, _0x52dead, _0x3f66e7); +} +m = _0x474032(1652939100976); +console.log(m); \ No newline at end of file diff --git a/猿人学第5题-hook-cookie, AES加密/案例2.js b/猿人学第5题-hook-cookie, AES加密/案例2.js new file mode 100644 index 0000000..0fe886d --- /dev/null +++ b/猿人学第5题-hook-cookie, AES加密/案例2.js @@ -0,0 +1,14 @@ +const CryptoJS = require("crypto-js"); +_$Tk = CryptoJS; + + +_0x4e96b4['_$pr'] = new _0x4d2d2c(); + +_$Ww = _$Tk['enc']['Utf8']['parse'](_0x4e96b4['_$pr']['toString']()); +_0x29dd83 = _$Tk['AES']['encrypt'](_$Ww, _0x4e96b4['_$qF'], { + 'mode': _$Tk['mode']['ECB'], + 'padding': _$Tk['pad']['Pkcs7'] +}); + +ss = _0x29dd83['toString'](); +console.log(ss); \ No newline at end of file diff --git a/猿人学第5题-hook-cookie/readme.md b/猿人学第5题-hook-cookie/readme.md deleted file mode 100644 index 130923b..0000000 --- a/猿人学第5题-hook-cookie/readme.md +++ /dev/null @@ -1,58 +0,0 @@ -## 知识点 - -油猴hook是注意 //@run-at document-start 表示页面加载之前 - -hook cookie - -Cookie之所以要新增一个包含固定字符串的判断是因为,cookie经常被修改,这样会断很多次,而我们只想让他断在固定cookie块被设置的时候,因此这么写 - - // 方案二 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。 - - // ==UserScript== - // @name Hook Cookie - // @namespace http://tampermonkey.net/ - // @version 0.1 - // @description pass - // @author ayf - // @run-at document-start - // @match *://match.yuanrenxue.com/* - // @grant none - // ==/UserScript== - - (function () { - 'use strict'; - Object.defineProperty(document, "cookie", { - set:function(val){ - console.log(11111) - if(val.indexOf("RM4hZBv0dDon443M") != -1){ - debugger; - } - return val; - } - }) - })(); - -hook window - - // ==UserScript== - // @name Hook window - // @namespace http://tampermonkey.net/ - // @version 0.1 - // @description pass - // @author ayf - // @run-at document-start - // @match *://match.yuanrenxue.com/* - // @grant none - // ==/UserScript== - - (function () { - 'use strict'; - Object.defineProperty(window, "_$ss", { - set:function(val){ - console.log(11111) - console.warn("hook _$ss", val) - debugger; - return val; - } - }) - })(); diff --git a/猿人学第5题-hook-cookie/案例.js b/猿人学第5题-hook-cookie/案例.js deleted file mode 100644 index 18dbe18..0000000 --- a/猿人学第5题-hook-cookie/案例.js +++ /dev/null @@ -1,15 +0,0 @@ -window = global; -_0x4e96b4 = window; -const CryptoJS = require("crypto-js"); -_$Tk = CryptoJS; - - - -_$Ww = _$Tk['enc']['Utf8']['parse']('2f26186ac9b401a48a73c74798c1bd97,a1bb84cafccc2d9d8f32ecf1b65185ee,6f3ac1b837f0eed3be1242d3fd5422d2,4f515f9e5d3824733a05f18666cce280,16c50db4bca1cf96d84d334e1fb28ff9'); -_0x4e96b4['_$qF'] = CryptoJS['enc']['Utf8']['parse'](_0x4e96b4['btoa'](_0x4e96b4['_$is'])['slice'](0x0, 0x10)); -_0x29dd83 = _$Tk["AES"]["encrypt"](_$Ww, _0x4e96b4['_$qF'], { - 'mode': _$Tk['mode']['ECB'], - 'padding': _$Tk['pad']['Pkcs7'] -}); -_0x4e96b4["_$ss"] = _0x29dd83["toString"](); -console.log(_0x4e96b4["_$ss"]); \ No newline at end of file