yanchang
yanchang
发布于 2026-01-17 / 10 阅读
0
0

转载:Web逆向-如何快速定位加密参数的位置

原文链接:https://blog.csdn.net/qq_65073403/article/details/157067144?spm=1001.2014.3001.5501

加密参数的定位

直接使用关键词

1. 在浏览器中使ctrl + fctrl + shift + f来进行全局的搜索。

2. 常见的搜索关键字decrypt, decode等,以reponse中携带加密字符的key值

适用场景

1. 代码未经过混淆

2. 搜索后变量名不能太过于宽泛

使用XHR进行监听

1. 可以通Initiator进行跟栈如果效果不佳,后控制台中根urlxhr断点,来判断跟栈位置

2. 上面操作都是为了这一步,[跟栈操作](#跟栈操作)

1. 类似XHR断点但是不完全相同。

2. 一般是用于当你下滑页面的时候会发生请求,这个时候可以通事件监听进行定位。

3. 上面操作都是为了这一步,[跟栈操作](#跟栈操作)

跟栈操作

1. 优点:大力出奇迹,通过跟栈基本上可以解决99%的加密参数定位问题。

2. 缺点:麻烦繁琐,很容易在跟栈过程迷路,尤其是遇到异步,闭包等,工作量大且需要耐心和基本功。

小技巧:

1. 跟栈过程中绝不是简简单单的跟栈就可以了,你需要巧妙的利HOOK技术(下文会讲解),比如你已经确定一个变量在某一段代码中发生了变换而这个变换就是你想要的,但是你却无法定位到它变化的具体位置,使HOOK技术去对变量进HOOK来实现快速定位。

2. 一定在跟栈过程中注意==闭包==问题,你可能无法在==Local==中定位到你想要解密密钥,因为它可能藏在Closure 闭包中。

3. (可选):如果你确定某一.js文件是一个通用官方文件,你可以把它加入ignore list中因为你可以很确定这个文件代码,你可以在后端使用同样的库中算法实现。

4. 在跟栈过程中可以设watch-point来进行变量变化的跟踪,但是不HOOK好用。

HOOK技术(重点)

> 这里我讲解一下Hook的使用思路

1. 首先确定目标,比如:你发现你每Response返回的内容是一JSON给是的内容,那么你就要想JSON.parse这个函数,因为一般JSON格式的处理都会用到。

2. Hook你选定的目标函数。比如上面parse函数,这一步交AI写就可以了,主要是思路!!!

    // Object Hook方式

    const originalParse = JSON.parse()

    JSON.parse = function(text, reviver) {

        console.log("[Hook] JSON.parse called");

        console.log("Input:", text);

        debugger

        const result = originalParse.call(this, text, reviver);

        return result

    }

    // Proxy 方式

    JSON.parse = new Proxy(JSON.parse, {

        apply(target, thisArg, argumentsList) {

            console.log("[Proxy Hook] JSON.parse called");

            console.log("Input:", argumentsList[0]);

            debugger

            const result = Reflect.apply(target, thisArg, argumentsList);

            console.log("Output:", result);

            return result;

        }

    });

3. 写好Hook函数后,==判断Hook函数执行的时机(很重要)==。一定要选好Hook函数执行的时间点,执行早/晚都会影响正常执行或者无法完成预定操作。

4. 根据Hook中debugger结合栈(stack)来进行加密参数的定位。

内存漫游

还在研究当中,这个方法主要是利用[ast-hook-for-js-RE](https://github.com/JSREI/ast-hook-for-js-RE.git)这个github中的开源项目,在浏览器外面建立一个Proxy利用AST来记录变量的变化。有不少人推荐此类方法,但是笔者能力有限,还没有尝试这种新的方式。


评论