js逆向破解 —— 懂车帝视频链接

背景

话说下午有一朋友发我一链接懂车帝某视频,让我帮忙看一下这个网页中视频链接是怎么获取的。我断断续续地花了两三个小时,最后终于把它给拿下了。在整个分析的过程中,我觉得还算是有点意思,所以写下这便博客,记录一下。

初步分析

话不多说,撸起袖子就是干。我打开了网页,并打开了 开发者工具 ,并在 network选项卡中清除掉请求,重新刷新页面。
elements模块 src就有这个视频的链接,应该不是这么简单吧,不然也不至于问我。所以,我去doc源码中找相关的字段,看有没有。js逆向破解 —— 懂车帝视频链接_第1张图片
一找,果然没有。所以,那一段html文本是通过js动态渲染进页面的。
js逆向破解 —— 懂车帝视频链接_第2张图片
全局搜索后,发现是在这个js中进行动态渲染的。所以,去这个js文件中找相关的代码块。

js逆向破解 —— 懂车帝视频链接_第3张图片刚好这里就有,果然,this.videoList要重点关注一下。

断点调试

根据videoList, 加上断点调试呀!

js逆向破解 —— 懂车帝视频链接_第4张图片

js逆向破解 —— 懂车帝视频链接_第5张图片
COMMAND+R刷新,Chrome就是这点好,会在断点的地方停住。好,来看看,现在发生了什么了。

js逆向破解 —— 懂车帝视频链接_第6张图片
说明这个时候,src链接已经计算出来了,正是我想要的。那太好了。接着我又往上看,发现了i中的src就是那个值,也已经计算出来了。

js逆向破解 —— 懂车帝视频链接_第7张图片
到目前为止,加密函数就是base64decode 入口参数就是t.main_url,故现在的目标一方面是找到base64decode,另一方面是找到t.main_url从何而来。发现这个函数并无特别之处,直接运行这个函数就可以得到相应的链接了。

js逆向破解 —— 懂车帝视频链接_第8张图片
继续回溯,发现t.main_url参数是从这里注入的

js逆向破解 —— 懂车帝视频链接_第9张图片
继续回溯,发现t.main_url参数是从这里来的

js逆向破解 —— 懂车帝视频链接_第10张图片
此时真相大白了,现在去console控制台验证下是不是我发现的那样。

js逆向破解 —— 懂车帝视频链接_第11张图片
点开链接,果然就是我想要的那个链接。到现在,我以为已经搞定了,所以就跟朋友说了一下思路,并把关键步骤给他截图了。

一波未平,一波又起

可是,没过多久,我那朋友说,t.main_url这个参数也是通过一个js加载的,对方服务器通过正确的请求并返回值,返回值里面就有main_url这个值。但是,这个js请求有2个参数r, s全局找不到,估计也是加密了。什么,What the fuck? 二次加密???这个网站有点意思哦,我倒要看看是怎么加密的。话说,首先定位请求的js,果然,这两串数字有点长,而且毫无规律。
js逆向破解 —— 懂车帝视频链接_第12张图片

真相大白

根据&logo_type进行全局搜索,发现这里最可疑,我猜n就应该是刚才那个链接。
js逆向破解 —— 懂车帝视频链接_第13张图片
打上断点,再次刷新,看看。
js逆向破解 —— 懂车帝视频链接_第14张图片
说明,在这里,这个加密链接已经计算出来了。加密函数是o.crc32 注入参数是 r.config.remoteURL 和 r.config.videoID所拼接起来的字符串。

js逆向破解 —— 懂车帝视频链接_第15张图片
这个r.config.remoteURL 好说,是个常量。
在这里插入图片描述
这个在哪里呢,全局搜一下试试看
js逆向破解 —— 懂车帝视频链接_第16张图片
两个注入的参数已经搞定了,现在就是来研究下这个加密函数了。加密函数其实也不难,好好分析一下。

js逆向破解 —— 懂车帝视频链接_第17张图片
第一处和第三处删掉,第二处因为t.pathname几乎是个常量,直接替换掉。在console验证下,看是否是刚才所推论的那样。

js逆向破解 —— 懂车帝视频链接_第18张图片
js逆向破解 —— 懂车帝视频链接_第19张图片
至此,这个加密参数算是破解成功了。

总结

这个例子其实拿来练习js逆向破解挺好的,稍微有点耐心,就可以推出来。首先是通过url或者网页源码来选一个标志性的关键词,去js中定位代码块,然后发现可疑的地方。打上断点,然后js断点调试,利用好 Call Stack 可以事半功倍。断点调试的目的,一是定位加密的函数,二是回溯函数入口参数是从哪里来。最后的话,分析下加密函数代码块,做适当的修改。同时利用console可以很好地验证刚才的推想。总之,js逆向调试破解,是个不归路,多加练习,慢慢才会找到感觉的。

你可能感兴趣的:(js逆向)