js逆向-2-跟栈
wy云js加密逆向
登录的时候会加密我们输入的电话号码,我们需要得到这个Params的加密方法
首先点击登录之后抓取数据包,点击第一个,并打上断点
然后点击发送验证码就会断住
这里的arguments里面就有我们想要的值,然后继续跟栈
这里显示a的值通过o[0]获取的,然后继续跟进栈
显示a=i[0],然后继续跟进
这里可以看到g02x.data就是我们想要的值,这个值是通过e1x获取的,e1x是通过上一个栈传入的
var gD2x = e1x.request
继续跟进
发现这里有 d1x的参数,d1x里面的data刚好是我们想要的值
d1x是通过rn4r获取到的,
var d1x = {
request: this.rn4r,
headers: this.bfe3x
};
rn4r是通过i1x复制的,这个i1x是通过上一个栈传入的,function(i1x),然后继续跟进
然后得到e1x.data就是我们要找的值,e1x也是通过上一个栈传入的,所有继续跟进
这里就找到了e1x.data的值,发现是通过bVk5p.encText得到的,
所以这个代码就是我们想要的加密代码
var bVk5p = window.asrsea(JSON.stringify(i1x), bsc6W(["流泪", "强"]), bsc6W(RU1x.md), bsc6W(["爱心", "女孩", "惊恐", "大笑"]));
e1x.data = j1x.cr1x({
params: bVk5p.encText,
encSecKey: bVk5p.encSecKey
})
调试里面的参数如下
这里的010001就是默认的rsa的加密的mode,如果是rsa加密就会先new一个对象,接下来就去找这段加密代码里面没有的东西,首先就是 window.asrsea并没有,鼠标放在上面进行跳转就能知道代码所在的文件
这个js文件有很多行,但是一般的rsa加密大约有2000左右的行数,直接复制这个js文件代码到编辑器,折叠所有的层次
然后全局搜索我们刚刚跳转的代码所在的位置
这里的行数为13325,直接倒数2000行,然后复制这些代码到浏览器新建的js脚本
运行并没有报错,然后在源代码获取
window.asrsea里面的各个参数,最后直接浏览器调试
然后本地调试会报错
直接在代码最前面加上
window =this;即可运行成功,如果是node环境就要加上window =global
总结
这里就要跟栈,就必须去找数据的来源判断是否是上一个栈传入的,然后一个一个跟,直到看到最后的加密地方。