JavaScript逆向之Hook技术

Hook技术:

背景:

​ 在js逆向的过程种,当我们遇到加密参数,可以使用关键字全局搜素,跟栈,还有一种就是hook技术。跟栈就是比较麻烦,需要我们一个个找,hook技术就比较厉害了,可以直接帮我定位加密参数的位置。

网站:

import base64

# # 解码
result = base64.b64decode('aHR0cHM6Ly9sb2dpbjEuc2NyYXBlLmNlbnRlci8='.encode('utf-8'))
print(result)

基础知识:

目前市面上主要使用 Tampermonkey插件,我们可以自己写一个插件就可以定位到相应的位置

JavaScript逆向之Hook技术_第1张图片

JavaScript逆向之Hook技术_第2张图片

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

JavaScript逆向之Hook技术_第3张图片

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://*/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
})();

​ 大家到时候需要改的是两个位置,第一个是 @match 这个是脚本生效的位置,第二个是脚本代码(即 // Your code here… )

JavaScript逆向之Hook技术_第4张图片

为什么这个表单没有出现 用户名 和 密码等表单数据,因为他将密码和用户名打包了,然后进行魔种加密了,我们 需要分析这个token是如何生成的。

JavaScript逆向之Hook技术_第5张图片

注意看上面的token 应该是被base64了,因为 只出现了大小写和数字,下面给出base64编码表:

Base64 编码表
码值 字符 码值 字符 码值 字符 码值 字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

我们会发现 编码后的数据可以包含 A-Z、a-z、0-9 和两个额外字符的任意组合。

然后在js种base64一般是通过 btoa函数进行实现的,而且我们的用户名和密码也不能出现中文

脚本代码
(function() {
    'use strict';
function hook(object, attr){
        var func = object[attr]
        object[attr] = function(){
            console.log('hooked', object, attr)
            var ret = func.apply(object, arguments)
            debugger
            return ret
        }
    }
    hook(window, 'btoa')
})();

这个脚本是传入两个参数,第一个是一个对象 ,第二个是函数名 即window 对象的 btoa 方法,

解释:就是 btoa函数出现的会断住,大家修改只需要 修改后面的关键字即可。

JavaScript逆向之Hook技术_第6张图片

然后就断住了。

JavaScript逆向之Hook技术_第7张图片

找到点击时间触发对应的js文件,进去

JavaScript逆向之Hook技术_第8张图片

JSON.stringify()

jsonString将成为一个包含转换后的JSON字符串的变量:

var data = { name: "John", age: 30, city: "New York" };
var jsonString = JSON.stringify(data);
console.log(jsonString); //{"name":"John","age":30,"city":"New York"} 
console.log(data) //{ name: 'John', age: 30, city: 'New York' }

JavaScript逆向之Hook技术_第9张图片

剩下的交给大家了。

你可能感兴趣的:(网络爬虫,javascript,爬虫,python)