打印本文 关闭窗口 | |
网易云音乐PC客户端加密API逆向解析席绢 | |
作者:佚名 文章来源:本站原创 点击数 更新时间:2018/12/16 18:09:11 文章录入:admin 责任编辑:admin | |
|
|
和位移计较一堆异或,现到C的代码中的这个仍是很好复,就不全粘贴了这个比力长。 ibcef第二个是l,Web browser控件这个是个基于C/C++的,:为什么说环节API没用到libcurl库能够简单理解为就是个浏览器的壳子(Tan,初始化前收集交互用到阿谁库罢了由于除了起头时cef框架还没,情况起来了一点cef,ajax交互了)都是通过JS 。 ×110长度刚好差了0,用于校验的数据除了0×100,10的头部还有0×。 正题回到,其实是太疾苦了从注册来跟代码。的内容比力多一个是注册,一层的一层叠,rp的C言语版本的cef库并且法式用的是C++ wa,候仍是有点不同的和源码对照跟的时。个很是好的方式这时候我想到一,一个死轮回那就是制造。 是2.3.0.196231版本)下载最新版PC版网易云安装(目前,在目次下的文件阐发在法式所。 提到了上面就,跟踪回调函数的麻烦方案我放弃了从注册一步步,晓得一个死轮回而是在JS中,.serialData函数不断的挪用channel,核满载时等法式单,试器附加法式只需要将调,点暂停点一,了(JS到机械码代码按我理解该当在堆上根基上就是这个函数相关营业流程的代码,该在法式代码段上而加密的代码应,忽略掉良多JS的代码所以我定位的时候能够,关的代码位置找到真正相) 这一步其实到,来看发送前未加密的内容以及布局我能够通过近程devtools,曾经复现的加密方式同时我也能够通过,据加密发送出去对分歧营业数。据前往内容也是加密的我发觉有一部门请求数,的值来节制能否需要前往加密内容的但这个是能够在客户端节制e_r。 跟过来一步步,Tan1993:不是很领会CSP库发觉用的是SHA1数字签名算法(,列操作系统制定的底层加密接口但这个是为Windows系,HA不太一样和我理解的S,的那部门称为公钥我姑且将法式内部,验数据进行校验)与文件头部的校。 的时libcurl第一个最让我留意,于HTTP和谈交互这个收集库能够用,与办事器交互若是通过该库,orm再往回推就能够判断转换算法位置了od断点到curl_easy_perf,想象的复杂多了然而现实比我,的收集交互(Tan1993:记不清了这个库仅在法式刚运转时用于一些无关,端消息相关的请求)仿佛是版本仍是客户。 b端接口解析的方式了网上曾经有大量的we,析根基上找不到什么材料可是对客户端的接口解,C客户端的API接互体例本文次要阐发网易云音乐P。 暗码后得知,(Tan1993:这里仅供给思绪就能够解压出core.js文件了,民办事哈不供给便) 风趣的事将一件,挪用web的api接口时发觉不克不及合用其时我测验考试在一台国外IP的办事器上,到数据获取不,S代码发觉逻辑纷歧样然后我又跟了一便J,特征串(在你们看不到的处所此中发觉了一个很成心思的,的法式员)总有狡猾: 推几步往上,点断,范畴缩小,下来再跟,领会压操作看看哪里做,步跟函数再一步。3:可能比力业余(Tan199,小范畴在一点点看流程但我也只能一点点缩,能会做什么操作凭经验判断可,较短的范畴缩短到比,码真的会受不了否则一堆汇编,思惟都是接近的吧)感激世界上法式员的。 部门代码截了一,ic.dll中的二进制数据用于点窜cloudmus,载地址与基址算的偏移是按照内存加,移点窜即可间接固定偏。 一下交互体例能够大致看, POST交互通过HTTPS,arams的内容POST了一串p,加密内容,ON内容前往JS,params的生成体例我要做的重点就在于解析,此次交互用于模仿。 格局snprintf到字符串即可轮回转换完后再按照”%02X”。加密算法事实是什么道理我没有过多去理解这个,译汇编码只是直。 DevTools虽然cef自带,也无法在法式里调出来可是曾经被屏障掉了,上alert调试环节参数所以我想在JS文件中加。ore.js文件然后我点窜了c,码压缩归去按本来的密。本就起不来但法式根,么呢为什,ntpk文件看看原版的.,文件一路合成了这个ntpk文件格局很较着还有一些奇异的工具和zip。会对一些可能被窜改的档案末尾对整个文件加盐生成一个hash值用于校验按照经验判断很可能时雷同于数字签名的工具(Tan1993:之前我也,签名体例让我又进修了不少)可是后续跟完网易云的数字。 代码环节,的JS代码像如许混合,调试器跟踪若是欠亨过,看懂很难,rialData该当时比力环节的转换函数目前能能够看出也只要channel.se,文件都找不到函数定义可是搜刮了整个JS,到哪个奇异的处所了不晓得是不是混合。 使命来了第一个,找特征串逆向寻,是暗码也就,文件操作API上这里断点到系统,teFileW断到Crea,skin文件了(图中是native.ntpk一顿的F9后能够看到加载到default.,ZIP文件)同类型的加密,步伐试下去后续就单。 构体里有个很成心思的字段在看源码的过程中发觉结,bug端口一个de,了一下调研,很有用了这个端口,vTools能够近程De,么alert如许还用什。 晓得私钥的环境下因为我是无法在不,件进行签名的再次对该文,用于校验的公钥一并替代所以我只能把法式内部的,应的查验数据再生成一个对,系统验证从而通过,1993:其实可能改分主流程点窜会更简单也说不定或者间接把验证部门的代码跳转逻辑点窜掉(Tan,公钥从头生成校验数据)但我一起头选择的是替代。 反过来解析后来测验考试,上没看出来看了一早,么难以逆转的问题简单描述一下为什。 .js文件而且能够alert弹出对话框到这一步其实我曾经能够替代掉core,运转时数据了显示一些JS,框并不是那么好用虽然alert弹。 以看到加密前的内容通过alert我可,发了哪些数据也就是具体,是什么样子的以及加密后,rialData)时发觉是[native code]很可惜的是当我测验考试alert(channel.se,显示这个的吧(对JS并不长短常领会)按我小我理解该当是系统二进制函数才会,库函数思疑是,询无果但查,+代码(凭我对cef粗拙的理解)后来想了想会不会是JS挪用了C+,查了一下我测验考试去,能够的公然是,转换的代码仍是在主法式中那么很有可能这部门加密,头疼了这就很,来到JS这个自在的世界刚从主法式逆向离开出,编码的情况了又要回到看汇。 后面的eax然后在得知,bxe,cxe,推本来的edx逆,太可能感受不,有纪律的一个内存块可是mem并不是没,做了些巧妙的偏移并且数组索引时也,如a1是偶数时b1是a1的一半现实上内存块确实有不少纪律(比, ^ b1)c1是a1,移可能会相得益彰并且和索引时的偏,说不定仍是能解的若是能看出窍门,Tan1993:小我没学过加密学有乐趣的小伙伴也能够研究一下(,部门概念只略懂一) f依赖的dll外其他的除了ce,sic.dll都比力值得关心两个主法式和cloudmu。 便调试为了方,中的core.js文件我需要替代掉资本文件,不只仅加密压缩了可是该资本文件,他内容具有还有一些其,ip文件本身以外其他部门内容的感化所以此次跟代码就是为了领会除了z。 LL版本按照D,cef源码版本我找到了对应的,时是整个布局体的cef注册回调,布局体纷歧样导致偏移位置有差别必需找到对应的版本避免新版本。 eFileW函数上仍是断到Creat,用系统加密办事供给法式 (CSP)库的函数其实第一轮跟代码的时候我就曾经发觉了部门调。 任何的参考材料因为并没有找到,究了一周时间断断续续也研。了方针以外除了实现,少收成的仍是有不,趣的加密算法好比比力有,名方式数字签,f库ce,逆向的思绪还有一些。 解密的算法也解析出来比力可惜的是没有把,制前往数据能否加密明显不是好方式同时在客户端节制e_r的值来控,制对部门API前往加密数据官方只需要忽略这个参数强,相关性所以才把这个参数放到客户端的吗?)一般的客户端也没有任何影响(莫非有平台。 较出格的内存块然后看到一个比,G格局的文件头一看就是PN,源曾经解压缩到内存了就能够判断这一步资。 压后解,环节字搜几个,rams好比pa,piea,TTP交互时的一些特batch等最上面H征 载歌曲的小Demo写个模仿客户端下,加密的数据的下载接口本来发送和领受都是,器验证明现下载了就能够通过办事,告一段落解析到此,良多内容值得研究虽然过程中还有,后会继续挖掘若是无机会以。 化前把布局体改掉若是要在挪用初始,Hook点窜要么API ,文件点窜要么静态,无用代码来改这个布局体了文件点窜的话只能舍弃一些,影响的赋值语句我选了一个不,址赋9222改成给这个地。 能看出来的皮肤文件除了几个通事后缀就,较可疑的文件还有两个比,heus.ntpk文件翻一翻比力大的orp,网页相关的资本文件里面能够看到都是,ore.js看到阿谁c,用到的阿谁core.js文件了就让我联想到网页版API提取时,对转换流程动态阐发了脑海里就想着替代然后,不尽人意现实有点,文件加密了该zip。 这是后续编写的内容(Tan1993:,都是后补的截图良多,用分歧的调试东西所以可能会呈现使,的情况分歧,时间等分歧的,响阅读不影。linux收集标的目的的别的本人工作次要是,的一点业余爱仿佛是此次只是我,去逆向工具也很少会,业余的操作或设法时若是呈现一些比力,指出还望) 知的格局都是未,知格局的文件一般看到未,测验考试打开看看我城市用7z,归档格局文件是不是某种,就蒙中了这个一下,p格局的是zi。 .serialData在主法式的位置这一轮次要目标是找到channel,ef的理解按照我对c,法式启动时该当是在,分回调函数注册了一部,找到回调函数入口能够从注册的时候,serialData动作时然后等触发channel.,跟代码跟下来从回调函数。 际上实,lData的汇编码也很是多channel.seria,了很多多少部门流程也分,其实是降不下来这部门工作量,防止静态阐发的代码可是良多可能是为了,运转时生成的部门特征串是,特征串都是固定的可是由于这部门,了一两天来看那一堆汇编码来算出特征串所以是能够不消去细心揣摩的(然而我花,烦恼很是,逆推就好早晓得就,实话但说,也会很难光逆推,有必然理解次要是要) 成console.log来进行了这时候所有JS调试号令都能够改,了很多多少便利。 在libcurl上面的其实一起头我是把目光放,发觉只要法式刚运转时触发过几回在断点到curl库的函数上时,互都不消这个库了后面所有收集交,cef上就转战到。于内部的JS文件而cef的重点在,件才是环节的能提取到该文。 拜候DevTools了此刻我就能够通过近程。页时一片空白可当我打开网,cef粗略的领会这时候又凭仗我对,目次下在法式,ols相关的资本并没有devto,官网曾经没有这么老的资本文件档案了其实只需把资本文件补上就能够了(,版本的devtools资本文件这个仍是我网上找的3.1916) |
|
打印本文 关闭窗口 |