逆向日期:2024.07.31
使用工具:Node.js、油猴
本章知识:逆向网易易盾【fp】参数
文章难度:中等(没耐心的请离开)
文章全程已做去敏处理!!! 【需要做的可联系我】
AES解密处理(直接解密即可)(crypto-js.js 标准算法):在线AES加解密工具
注意 注意 注意!!!
为了保护本作者可以持续的更新知识,此次逆向出的网站源码代码不分享,有需要可以直接找我。但作者所写出的代码(非网页源代码)会在网站最低部公示。
看此文章前请先看预热阶段的文章!!!
【Python 逆向网易易盾滑块】(实战一)预热阶段
本篇文章逆向网易易盾的【fp】参数
1、打开某某网站(请使用文章开头的AES在线工具解密):Fm5MEvkUJN2pPTwS2vZbsXghwyHOyrcScCaJUwb7+kOMuzt/TW46136qDKIb3PTd
2、打开网站后,我们随便填写信息,然后打开控制台,点击发送验证码,即可触发滑块验证,然后我们随便滑动一下,可以在控制台里看到【fp】参数,直接去断点找
3、我们打开启动器,在堆栈里断点找,找了一会没找到,但发现Cookie里有【fp】的参数,直接将去Cookie里看一下
4、正在Cookie看到了这个参数,我们在Cookie里看这个参数的时候,也顺便注意一下上面的【Path】,如果参数的【Path】对应的是【/】,就说明这个【fp】参数是本地生成,不是服务器返回的。既然不是服务器返回的,那我就尝试用HooK,断住他添加到Cookie的一瞬间
对照一下参数,看看是不是一样的。
5、打开我们的油猴插件,新建一个油猴文件,把代码粘贴进去,然后修改一下要查找的Cookie的键值,保存并启用【HOOK文件将在文章末尾附加】
6、要确定已经打开了插件,并启用,然后我们把当前网站的Cookie清除并刷新页面,控制台别忘了打开,不打开控制台就断不住,清除当前网站的Cookie是因为他会有检测,当我们把值清除掉后,他就会生成新的,不然的话他就不生成了,不生成我们也就断不住了。
7、清除Cookie并刷新页面,断住了,然后我们直接去跟栈,看上一个栈是什么
8、经过跟栈,分析出他的加密位置就在【CO】里,我们把【CO】代码全部复制到本地打开,并且要
9、我们在堆栈 点击CO,然后再打上断点,然后再刷新页面,如果刷新页面没有断住,就用油猴重复上一步操作即可
10、此时我们要添加一个很重要的环境,就是window,然后根据情况把CO里面开头部分所不需要的都删掉,可以大大减少我们的工作量,最主要是删掉后不会对后面生成的参数有所影响
11、现在我们要做的就是运行本地的js,看哪里有错误,有错误我们就去解决错误,缺环境补环境,,缺变量补变量。直接运行js脚本,发现有一个错误是在第五行,这个时候我们直接去控制台运行或查看【L[0xe9]】,看看是什么,这个很明显就是一个被混淆了的值,我们将其恢复后直接添加到本地js里
12、这种混淆没什么难度,一个一个输入输出,然后替换一下即可,这种类似的我就不演示了,你们自行替换即可,我们直接跳过,来到下一步操作
13、当我们把那些混淆都处理完成后,我们再次运行本地js,可以看到出现了错误,显示的是【Cl】不存在,那我们就在控制台把【Cl】打上断点,然后运行,控制台自然会在【Cl】断住,,这个时候我们就可以把鼠标放到【Cl】上,会自动弹出一个链接,我们点击一下,他会自动跳转到【Cl】这个运行函数
14、可以看到,我们直接跳转过来了,我们把代码全部复制到本地js里,然后把混淆的代码手动恢复一下,然后再去运行本地js,看什么地方有错误,就去补充什么地方
15、此处要注意一下,这里有一个try,把这个try的代码都给删掉,不懂try的用法可以去百度一下,如果不删除,代码报错后是不会显示错误,仍然会继续执行,会造成和网页生成的参数的方法不一样,因为他报错后会跳过部分代码的执行,就会造成参数没有执行某一步,是没有删除还是没有添加,谁都不知道
16、处理完成后,我们再次运行本地js,发现【CK】未定义,你有没有发现,【CK】是在try里面的,如果我不删除try,可想而知,代码会自动跳过这个错误,不执行此段代码,那你往后执行的命令就全部都会出现问题
17、找到了【CK】,直接复制粘贴,这一步步的我就不在操作了。
18、在操作的时候也要注意几个事项,我们在写方法的时候,不要把方法都放在一起,因为有很多方法是重名的,只要我们把规范整理好就行,也不要去想这修改人家的方法名字,修改方法名字是最大的错误,因为有些方法是会自调用,就是自己调用自己,如果你修改了方法名字,那你的逆向难度将会上升一个等级,所有不要想着去修改人家的东西,我们尽可能的去遵顼别人的执行方法。
19、其他也没有什么可演示的,都是重复性去断点 复制粘贴,但难度还是有的,别大意,多注意堆栈的变化,包括一些随机性的错误,里面是有坑的,细心一点总没错
【附上代码】
🟢油猴脚本 - HOOK大法
// ==UserScript==
// @name Cookie HOOOK大法
// @namespace Cookie HOOOK大法
// @version 0.1
// @description 控制台追踪Cookie的变化
// @author 小木_.
// @match *://*/*
// @grant none
// @run-at document-start
// ==/UserScript==
// 【Cookie 捕捉】
var cookie_cache = document.cookie;
Object.defineProperty(document, 'cookie', {
get: function () {
return cookie_cache;
},
set: function (val) {
// ****************** 要查找的cookie对象值
if (val.indexOf('gdxidpyhxdE') !== -1) {
console.log('[J] - 捕获到设置[*Cookie] - debugger -> ', val)
debugger;
}
var cookie = val.split(";")[0];
var ncookie = cookie.split("=");
console.log('[J] - 捕获到设置[*Cookie] -> '+ `[${ncookie[0]}]==[${ncookie[1]}]`);
// ****************** 是否添加cookie 此处可控制是否添加cookie
var flag = true;
var cache = cookie_cache.split("; ");
cache = cache.map(function (a) {
if (a.split("=")[0] === ncookie[0]) {
flag = true;
return cookie;
}
return a;
})
cookie_cache = cache.join("; ");
if (flag) {
cookie_cache += cookie + "; ";
}
return cookie_cache;
},
});