前言
- 可以关注我哟,一起学习,主页有更多练习例子
- 如果哪个练习我没有写清楚,可以留言我会补充
- 如果有加密的网站可以留言发给我,一起学习共享学习路程
- 如侵权,联系我,删
- 此文仅用于学习参考,请勿于商用,后果自负
- 这次来一个难的
网址:
aHR0cHM6Ly9kdW4uMTYzLmNvbS90cmlhbC9qaWdzYXc=
端口:aHR0cHM6Ly9jLmR1bi4xNjMuY29tL2FwaS92Mi9nZXQ/cmVmZXJlcj0=
加密参数
逆向过程:
抓包调试
进入堆栈,一步一步往前调,找到第一次出现的地方
多观察右边变量,如果有fb继续往前调堆栈,找到第一次出现的地方,在我找的时候发现fp没有了,反而出现了一个叫fingerprint的,经过对比值发现,fingerprint就是fp的值
接下来我们重点关注fingerprint,继续往前调,又又又又又发现一个gdxidpyhxde和fingerprint一样,居然在window属性中
画外音一下子:你们就知道我找的有多费劲了吧,藏在window属性中我都能找到
目前找到了就好说了,只要确定gdxidpyhxde是如何生成的就好了
寻找gdxidpyhxde生成的地方
既然知道在window中属性中就好说了,咱们hook一下window中第一次出现这个属性值的地方
JShook代码:
(function() {
'use strict';
Object.defineProperty(window, 'gdxidpyhxde', { // 修改goldlog为你需要查询的window属性
get: function() {
// debugger;
return "";
},
set: function(value) {
debugger;
return value;
},
});
// Your code here...
})();
完美hook到,继续往前调,干这一行就得有耐心
继续往前,发现是传参过来的,继续向前
走到这一步我奔溃了,看下图,这居然又是cookie中的值,继续hook cookie
走起,心累,多少次我想放弃
一步一步继续往上调
发现是传参,继续有点耐心
我们找到了真正生成的地方
打了几次断点会发现一会就没了,发现js是动态的,我们那clearles抓包本地映射一下
js 本地映射
打开clearles抓包,下载网上的js文件到本地
按我的设置,就ok了,在js中随便加一点
然后刷新页面,我们看是否替换成功
有自己的标志说明替换成功了,接下来开始调试
js逆向调试
在文件关键位子写上debugger,方便自己调试
这个没法教这个就得自己调
挑一部该一步,把固定值替换一下,我们会发现上面就是在生成数组然后下面组装
在这一步拼接
好嘞我们知道位置了开始代码吧
这一步我扣了很久很久,我放弃了,我直接全拿下来了,然后删除一下不必要的没有关联报错的
结论
在这进行捕捉
如果你的报错程序阻塞,请看我结论第一图中的添加返回
逆向CB函数
咱们书说简短,承接上回
上回书说到fp的逆向,现在继续说说下一个函数,CB
CB走不了全局搜索,咱依然挑栈,一步一步往上调
哟呵,哟呵,哟呵,看样都是这一个方法计算出来的
需要我说什么吗?扣呗
方法里面有很多嵌套别的方法,自己认认真真扣一次,会有进步的,缺啥补啥!!缺啥补啥
这是第一个缺啥补啥,很费时间,因为是自己之前映射的本地js文件,咱们扣的时候可以吧一些混淆的固定值,修改进去方便自己看代码
js逆向就是一个耐心的过程,这个自己扣,就不放我扣的了,有需要联系我,仅供学习交流使用
结论
完结撒花,如果哪我没写清楚看不懂,留言