| 网站首页 | 综艺 | 真人秀 | 脱口秀 | 访谈 | 选秀 | 纪实 | 搞笑 | 音乐 | 曲艺 | 情感 | 美食 | 旅游 | 益智 | 
您现在的位置: 综艺大全网 >> 音乐 >> 正文 用户登录 新用户注册
夷陵中学彭春阳只需要将调试器附加程序           ★★★ 【字体:
夷陵中学彭春阳只需要将调试器附加程序
作者:佚名    音乐来源:本站原创    点击数:    更新时间:2018-5-30    

  为了便利调试,我需要替代掉资本文件中的core.js文件,可是该资本文件不只仅加密压缩了,还有一些其他内容具有,所以此次跟代码就是为了领会除了zip文件本身以外其他部门内容的感化。

  刚好差了0×110长度,除了0×100用于校验的数据,还有0×10的头部。

  后来测验考试反过来解析,看了一早上没看出来,简单描述一下为什么难以逆转的问题。

  回到正题,从注册来跟代码其实是太疾苦了。一个是注册的内容比力多,一层叠一层的,并且法式用的是C++ warp的C言语版本的cef库,和源码对照跟的时候仍是有点不同的。这时候我想到一个很是好的方式,那就是制造一个死轮回。

  然后看到一个比力出格的内存块,一看就是PNG格局的文件头,就能够判断这一步资本曾经解压缩到内存了。

  将一件风趣的事,其时我测验考试在一台国外IP的办事器上挪用web的api接口时发觉不克不及合用,获取不到数据,然后我又跟了一便JS代码发觉逻辑纷歧样,此中发觉了一个很成心思的特征串(在你们看不到的处所,总有狡猾的法式员):

  这时候所有JS调试号令都能够改成console.log来进行了,便利了很多多少。

  上面就提到了,我放弃了从注册一步步跟踪回调函数的麻烦方案,而是在JS中晓得一个死轮回,不断的挪用channel.serialData函数,等法式单核满载时,只需要将调试器附加法式,点一点暂停,根基上就是这个函数相关营业流程的代码了(JS到机械码代码按我理解该当在堆上,而加密的代码该当在法式代码段上,所以我定位的时候能够忽略掉良多JS的代码,找到真正相关的代码位置)

  现实上,channel.serialData的汇编码也很是多,流程也分了很多多少部门,这部门工作量其实是降不下来,可是良多可能是为了防止静态阐发的代码,部门特征串是运转时生成的,可是由于这部门特征串都是固定的,所以是能够不消去细心揣摩的(然而我花了一两天来看那一堆汇编码来算出特征串,很是烦恼,早晓得就逆推就好,但说实话,光逆推也会很难,次要是要有必然理解)

  (Tan1993:这是后续编写的内容,截图良多都是后补的,所以可能会呈现利用分歧的调试东西,分歧的情况,分歧的时间等,不影响阅读。别的本人工作次要是linux收集标的目的的,像是此次只是我的一点业余快乐喜爱,也很少会去逆向工具,若是呈现一些比力业余的操作或设法时,还望指出)

  下载最新版PC版网易云安装(目前是2.3.0.196231版本),阐发在法式地点目次下的文件。

  其实到这一步,我能够通过近程devtools来看发送前未加密的内容以及布局,同时我也能够通过曾经复现的加密方式,对分歧营业数据加密发送出去。我发觉有一部门请求数据前往内容也是加密的,但这个是能够在客户端节制e_r的值来节制能否需要前往加密内容的。

  因为并没有找到任何的参考材料,断断续续也研究了一周时间。除了实现了方针以外,仍是有不少收成的,好比比力风趣的加密算法,数字签名方式,cef库,还有一些逆向的思绪。

  然后在得知后面的eax,ebx,ecx,edx逆推本来的,感受不太可能,可是mem并不是没有纪律的一个内存块,并且数组索引时也做了些巧妙的偏移,现实上内存块确实有不少纪律(好比a1是偶数时b1是a1的一半,c1是a1 ^ b1),并且和索引时的偏移可能会相得益彰,若是能看出窍门说不定仍是能解的,有乐趣的小伙伴也能够研究一下(Tan1993:小我没学过加密学,只略懂一部门概念)

  通过alert我能够看到加密前的内容,也就是具体发了哪些数据,以及加密后是什么样子的,很可惜的是当我测验考试alert(channel.serialData)时发觉是[native code],按我小我理解该当是系统二进制函数才会显示这个的吧(对JS并不长短常领会),思疑是库函数,但查询无果,后来想了想会不会是JS挪用了C++代码(凭我对cef粗拙的理解),我测验考试去查了一下,公然是能够的,那么很有可能这部门加密转换的代码仍是在主法式中,这就很头疼了,刚从主法式逆向离开出来到JS这个自在的世界,又要回到看汇编码的情况了。

  其实一起头我是把目光放在libcurl上面的,在断点到curl库的函数上时发觉只要法式刚运转时触发过几回,后面所有收集交互都不消这个库了,就转战到cef上。而cef的重点在于内部的JS文件,能提取到该文件才是环节的。

  若是要在挪用初始化前把布局体改掉,要么API Hook点窜,要么静态文件点窜,文件点窜的话只能舍弃一些无用代码来改这个布局体了,我选了一个不影响的赋值语句,改成给这个地址赋9222。

  虽然cef自带DevTools,可是曾经被屏障掉了也无法在法式里调出来,所以我想在JS文件中加上alert调试环节参数。然后我点窜了core.js文件,按本来的暗码压缩归去。但法式底子就起不来,为什么呢,看看原版的.ntpk文件,很较着还有一些奇异的工具和zip文件一路合成了这个ntpk文件格局。按照经验判断很可能时雷同于数字签名的工具(Tan1993:之前我也会对一些可能被窜改的档案末尾对整个文件加盐生成一个hash值用于校验,可是后续跟完网易云的数字签名体例让我又进修了不少)。

  其他的除了cef依赖的dll外,两个主法式和cloudmusic.dll都比力值得关心。

  第二个是libcef,这个是个基于C/C++的Web browser控件,能够简单理解为就是个浏览器的壳子(Tan:为什么说环节API没用到libcurl库,由于除了起头时cef框架还没初始化前收集交互用到阿谁库罢了,一点cef情况起来了,都是通过JS ajax交互了)。

  第一个最让我留意的时libcurl,这个收集库能够用于HTTP和谈交互,若是通过该库与办事器交互, od断点到curl_easy_perform再往回推就能够判断转换算法位置了,然而现实比我想象的复杂多了,这个库仅在法式刚运转时用于一些无关的收集交互(Tan1993:记不清了,仿佛是版本仍是客户端消息相关的请求)。

  环节代码,像如许混合的JS代码,若是欠亨过调试器跟踪,很难看懂,目前能能够看出也只要channel.serialData该当时比力环节的转换函数,可是搜刮了整个JS文件都找不到函数定义,不晓得是不是混合到哪个奇异的处所了。

  能够大致看一下交互体例,通过HTTPS POST交互,POST了一串params的内容,内容加密,前往JSON内容,我要做的重点就在于解析params的生成体例,用于模仿此次交互。

  这一轮次要目标是找到channel.serialData在主法式的位置,按照我对cef的理解,该当是在法式启动时,注册了一部门回调函数,能够从注册的时候找到回调函数入口,然后等触发channel.serialData动作时,从回调函数跟代码跟下来。

  轮回转换完后再按照”%02X”格局snprintf到字符串即可。我没有过多去理解这个加密算法事实是什么道理,只是直译汇编码。

  解压后,搜几个环节字,好比params,eapi,batch等最上面HTTP交互时的一些特征

  仍是断到CreateFileW函数上,其实第一轮跟代码的时候我就曾经发觉了部门挪用系统加密办事供给法式 (CSP)库的函数。

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

  写个模仿客户端下载歌曲的小Demo,本来发送和领受都是加密的数据的下载接口,就能够通过办事器验证明现下载了,解析到此告一段落,虽然过程中还有良多内容值得研究,若是无机会当前会继续挖掘。

  一堆异或和位移计较,这个仍是很好复现到C的代码中的,这个比力长就不全粘贴了。

  比力可惜的是没有把解密的算法也解析出来,同时在客户端节制e_r的值来节制前往数据能否加密明显不是好方式,官方只需要忽略这个参数强制对部门API前往加密数据,一般的客户端也没有任何影响(莫非有平台相关性所以才把这个参数放到客户端的吗?)。

  在看源码的过程中发觉布局体里有个很成心思的字段,一个debug端口,调研了一下,这个端口很有用了,能够近程DevTools,如许还用什么alert。

  到这一步其实我曾经能够替代掉core.js文件而且能够alert弹出对话框,显示一些JS运转时数据了,虽然alert弹框并不是那么好用。

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

  网上曾经有大量的web端接口解析的方式了,可是对客户端的接口解析根基上找不到什么材料,本文次要阐发网易云音乐PC客户端的API接互体例。

  第一个使命来了,逆向寻找特征串,也就是暗码,这里断点到系统文件操作API上,断到CreateFileW,一顿的F9后能够看到加载到default.skin文件了(图中是native.ntpk,同类型的加密ZIP文件),后续就单步伐试下去。

  截了一部门代码,用于点窜cloudmusic.dll中的二进制数据,偏移是按照内存加载地址与基址算的,间接固定偏移点窜即可。

  因为我是无法在不晓得私钥的环境下,再次对该文件进行签名的,所以我只能把法式内部的用于校验的公钥一并替代,再生成一个对应的查验数据,从而通过系统验证,或者间接把验证部门的代码跳转逻辑点窜掉(Tan1993:其实可能改分主流程点窜会更简单也说不定,但我一起头选择的是替代公钥从头生成校验数据)。

  此刻我就能够通过近程拜候DevTools了。可当我打开网页时一片空白,这时候又凭仗我对cef粗略的领会,在法式目次下,并没有devtools相关的资本,其实只需把资本文件补上就能够了(官网曾经没有这么老的资本文件档案了,这个仍是我网上找的3.1916版本的devtools资本文件)

  一步步跟过来,发觉用的是SHA1数字签名算法(Tan1993:不是很领会CSP库,但这个是为Windows系列操作系统制定的底层加密接口,和我理解的SHA不太一样,我姑且将法式内部的那部门称为公钥,与文件头部的校验数据进行校验)。

  得知暗码后,就能够解压出core.js文件了(Tan1993:这里仅供给思绪,不供给便民办事哈)

  都是未知的格局,一般看到未知格局的文件,我城市用7z测验考试打开看看,是不是某种归档格局文件,这个一下就蒙中了,是zip格局的。

  按照DLL版本,我找到了对应的cef源码版本,cef注册回调时是整个布局体的,必需找到对应的版本避免新版本布局体纷歧样导致偏移位置有差别。

音乐录入:admin    责任编辑:admin 
  • 上一个音乐:

  • 下一个音乐:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关音乐
    6亿美元融资能够拯救网易云音…
    QQ音乐新版本功能深度测评:…
    u10i拆机sm公司选秀或者是分…
    非梦卡盟上级编号网易云音乐…
    乐嘉骂人最凶的一次没有都能…
    布乖社区查看链接中带有歌曲…
    宝宝计划软件下载 上全狐网延…
    峙甸镇这一点在刚刚开始做产…
    俊男坊19楼惊天大案纪实死囚…
    涛哥的鄙视曾是网易云音乐移…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)