欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

网易云音乐PC客户端加密API逆向解析

来源:本站整理 作者:Tan993 时间:2018-03-13 TAG: 我要投稿

1、前言
网上已经有大量的web端接口解析的方法了,但是对客户端的接口解析基本上找不到什么资料,本文主要分析网易云音乐PC客户端的API接口交互方式。
通过内部的代理设置,使用fiddler作为代理工具,即可查看交互流程:

可以大致看一下交互方式,通过HTTPS POST交互,POST了一串params的内容,内容加密,返回JSON内容,我要做的重点就在于解析params的生成方式,用于模拟这次交互。
(Tan1993:这是后续编写的内容,截图很多都是后补的,所以可能会出现使用不同的调试工具,不同的环境,不同的时间等,不影响阅读。另外本人工作主要是linux网络方向的,像是这次只是我的一点业余爱好,也很少会去逆向东西,如果出现一些比较业余的操作或想法时,还望指出)
2、初步了解
下载最新版PC版网易云安装(目前是2.3.0.196231版本),分析在程序所在目录下的文件。

动态链接库与可执行文件:
第一个最让我注意的时libcurl,这个网络库可以用于HTTP协议交互,如果通过该库与服务器交互, od断点到curl_easy_perform再往回推就可以判断转换算法位置了,然而事实比我想象的复杂多了,这个库仅在程序刚运行时用于一些无关的网络交互(Tan1993:记不清了,好像是版本还是客户端信息相关的请求)。
第二个是libcef,这个是个基于C/C++的Web browser控件,可以简单理解为就是个浏览器的壳子(Tan:为什么说关键API没用到libcurl库,因为除了开始时cef框架还没初始化前网络交互用到那个库而已,一点cef环境起来了,都是通过JS ajax交互了)。
其他的除了cef依赖的dll外,两个主程序和cloudmusic.dll都比较值得关注。
资源文件:
除了在package下的其他都是cef库依赖的资源文件。

都是未知的格式,一般看到未知格式的文件,我都会用7z尝试打开看看,是不是某种归档格式文件,这个一下就蒙中了,是zip格式的。

除了几个通过后缀就能看出来的皮肤文件,还有两个比较可疑的文件,翻一翻比较大的orpheus.ntpk文件,里面可以看到都是网页相关的资源文件,看到那个core.js,就让我联想到网页版API提取时用到的那个core.js文件了,脑海里就想着替换然后对转换流程动态分析了,事实有点不尽人意,该zip文件加密了。

OK,调研阶段结束,在不进行逆向解析前,能了解到的也就止步于此了。
3、第一轮尝试
其实一开始我是把目光放在libcurl上面的,在断点到curl库的函数上时发现只有程序刚运行时触发过几次,后面所有网络交互都不用这个库了,就转战到cef上。而cef的重点在于内部的JS文件,能提取到该文件才是关键的。

0×2712即CURLOPT_URL宏,eax中存放着url的字符串指针,基本上都是无关的url。
第一个任务来了,逆向寻找特征串,也就是密码,这里断点到系统文件操作API上,断到CreateFileW,一顿的F9后可以看到加载到default.skin文件了(图中是native.ntpk,同类型的加密ZIP文件),后续就单步调试下去。

然后看到一个比较特别的内存块,一看就是PNG格式的文件头,就可以判断这一步资源已经解压缩到内存了。

往上推几步,断点,缩小范围,再跟下来,看看哪里做了解压操作,再一步步跟函数。(Tan1993:可能比较业余,但我也只能一点点缩小范围在一点点看流程,凭经验判断可能会做什么操作,缩短到比较短的范围,不然一堆汇编码真的会受不了,感谢世界上程序员的思想都是接近的吧)。

得知密码后,就可以解压出core.js文件了(Tan1993:这里仅提供思路,不提供便民服务哈)

又是这一堆让人窒息的混淆,卡得怀疑人生,先解压缩再看吧。
解压后,搜几个关键字,比如params,eapi,batch等最上面HTTP交互时的一些特征

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载