JS逆向-梦幻西游装备阁加密分析

来咯来咯~这次真的来喽!

咸鱼练手第二弹。

最近风声略紧,咸鱼在这声明:

本公众号所有文章仅供技术交流未经许可严禁转载,且本公众号发布的内容不得用于非法用途,如有侵权,请后台联系咸鱼删除文章。

【律师函警告】

分析请求

老规矩先抓包,找了半天没发现有异步请求,不过很快在Html页面里找到了下面的东西:

以我多年的经验来看,这个应该是把页面上的属性栏加密,页面展示的时候再按照某种解密的逻辑还原并展示的,就属这种最麻烦。

定位加密

说他麻烦,果然定位加密定位了20多分钟还没找到,感觉超出了我的能力范围。

为了能够愉快的摸鱼不再烦恼,所以我决定今天就先到这。

本文完。

不过还好在带薪摸(la)鱼(shi)的过程中,我突然有了想法,想到之前一直忽略的点。

我先捋一捋思路:

这段加密的信息在页面展示一定有一个位置标识解密之后展示的位置,在页面密文上面展示的位置正好有一个id(全局唯一),如果猜的没错的话那事情就简单多了。

【奸笑】

于是,搜就完事儿了,结果发现没找到想象中的js文件。

遂,猝。

【吐血】

不过在这个页面里找两个equip_desc_panel,跟进去看看,发现下面这段代码:

1
$("equip_desc_panel").innerHTML = parse_style_info(get_equip_desc("equip_desc_value"));

下意识再搜了一次:

果然我找到了这个看着就很像解密的东西,打上断点,刷新一下,成功进入断点。

这个定位加密的过程虽然曲折且还有点味道,但是事实告诉我们:

带薪摸(la)鱼(shi),有助于灵感迸发。

分析加密

既然成功进入断点,先追进去看看:

这段经过混淆的代码就是我们要分析的加密了。

这段混淆初看有点头大,不过混淆的方式之前一篇文章也有提过,感兴趣的朋友可以翻翻看。

了解了混淆的方式之后,先平复下心情,解这种看着很像的东西最怕烦躁。

【淡定】

先从头逐步执行,并观察传入的值,顺带把代码复制一份并把代码里_0x1b3f48['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74']这样的方法名翻译成正常的js代码便于理解,了解完大概解密流程,找到我们最终需要的值是这样生成的。

之后就是老套路缺啥找啥的阶段,不过扣代码的过程有两个坑点:

在扣代码的时候,明明整体逻辑已经扣好了,但是不返回任何值,通过打印调试发现这段代码里_0x1b3f48返回的是null值,以至于下面的for循环没有结果,所以需要注意。

还有就是在浏览器中base64编码转换使用的是_0x1c0cdf = _0xcbc80b['atob'](_0x1c0cdf),但是在nodejs调试的时候使用的是Buffer.from(_0x1c0cdf,"base64").toString()

经过一番不懈的努(tu)力(tou),成功得到结果。

煌金 wechat
扫描关注公众号,回复「1024」获取为你准备的特别推送~