逆向-找到加密位置
网易云音乐例子
[https://music.163.com/#/song?id=1325905146](https://music.163.com/#/song?id=1325905146)
点击播放按钮,找到其接口 然后观察参数都是加密的
浏览器工具
使用控制台的 Initiator 工具,一般从上往下找方法 比如点击最上面的 (anoymous),他就会跳到这一行
点击左边的行号就可以断点,用于观察当前内存中变量的数据值
再次点击播放按钮,程序就卡在这了
搜索变量 Ctrl+Shift+F
方法1-瞎试
还是点第一个方法进来,断点 然后点击播放按钮,鼠标放到 arguments 上,查看参数(此时已经加密完了)
打开Call Stack,看看谁调用的他
鼠标放在 e 上,发现也加密了
继续从 Call Stack中找上一个,又是加密的
继续从 Call Stack中找上一个,又是加密的
继续从 Call Stack中找上一个,又是加密的(以此类推)
突然发现一个不一样的
所以问题一定出现在 1 中的 红框内
然后在该函数第一行断点
然后重新点击播放,调试代码。会发现该处的url和最开始看到的请求url很像
很明显,ids就是歌曲id
然后一步一步往下走,
然后往下走
给对象增加了一个字段,为空
然后url变化了
然后生成了新的变量
往下执行
方法2
该方法不一定那么灵,但有时出奇效 复制参数名 进入到 Source,Ctrl+F,查找
然后在他前面设置断点
然后点击播放按钮
查找值的时候使用Search
所有资源文件检索
查找你看到代码中的方法在哪
比如现在知道 window.asrsea是在加密,我想知道它里面干了什么
方案1
选中方法名,鼠标划上去
方案2
使用Console 点击f d(d,e,f,g)就进去了
python中执行js代码
前提安装 NodeJs python文件
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')
# 在引入之前.加入上述代码
import execjs
# 最常用的一套方案.
f = open("测试.js", mode="r", encoding="utf-8")
js_code = f.read()
# 先加载js代码
js = execjs.compile(js_code)
r = js.call("fn", 2, 6) # fn(2, 6)
print(r)
function fn(a, b){
var s = "呵呵_哈哈_吼吼"; // 如果这段代码里有中文
return s.split("_");
}