简单逆向一款网易云音乐歌词下载器

x
用微信扫描二维码
分享至好友和朋友圈

  先简单介绍这个下载器的功能,首先得到某首歌曲的ID,然后输入ID,即可得到歌词然后可以进行保存操作能够显示歌曲名和歌手信息。保存文件时默认保存文件名为“歌曲名 - 歌手”的格式。并且为外文歌词增加了双语歌词。

  

  

  那么怎么获取歌曲ID呢?右键你的歌曲,复制链接到任意一个地方就可以看到有id = xxx 这样的后缀了,这个后缀就是ID。如图:

  

  粘贴后是:http://music.163.com/#/m/song?id=717724

  717724就是这首歌曲的ID。

  我比较好奇的是它调用了什么API可以实现这样的功能,于是进行一下逆向。首先查壳。

  

  没有壳,但是很可能是.net程序,用OD载入,程序自动运行,由此可知其一定是.net程序。

  .net程序是有神器可以反汇编的,接下来我们就用dnSpy对其进行反汇编。

  

  打开程序的APP资源后整个程序代码一览无余。很容易就发现URL的位置。

  显然它调用了这个API:http://music.163.com/api/song/lyric?os=pc&id=“歌曲ID”&lv=-1&kv=-1&tv=-1 得到了大部分歌曲的信息,如图:

  

  我们还可以注意到下面有个url2: http://music.163.com/api/song/detail/?id=歌曲ID&ids=歌曲ID , 这个API是干嘛的呢?他将url2给了httpHelper()这个函数然后又将函数返回的值给了getInfo(),那这两个函数的功能是什么?

  

  看起来是得到了这个接口的response,我们看看接下来它传入的函数:

  

  这是个void函数,进行了两个关键操作:

  

  this.song = array2[0];

  this.singer = array2[1];

  

  看来作者调用这个接口只是为了得到歌曲名字和歌手。

  这张图下面的函数sortLyric,是作者为了格式化歌词所写的代码。

  代码思路很清晰,学习完后或许以后我有时间可以利用它做一个下载歌词的网站。

  若您需要这款软件,稍后我会把它放到极致分享上(alltoshare.com).感谢原作者,本教程仅供学习。

  欢迎关注微信公众号:幻象客

  https://www.huanxiangke.com

  欢迎进入极致分享:

  https://alltoshare.com

特别声明:本文为网易自媒体平台“网易号”作者上传并发布,仅代表该作者观点。网易仅提供信息发布平台。

跟贴 跟贴 0 参与 0
© 1997-2019 网易公司版权所有 About NetEase | 公司简介 | 联系方法 | 招聘信息 | 客户服务 | 隐私政策 | 广告服务 | 网站地图 | 意见反馈 | 不良信息举报

幻象客

发布一些启迪思维的文章

头像

幻象客

发布一些启迪思维的文章

65

篇文章

12

人关注

列表加载中...
请登录后再关注
x

用户登录

网易通行证/邮箱用户可以直接登录:
忘记密码