JS逆向 | 这段JS混淆的样子像极了爱情。

2019-07-18 17:51:51 浏览数 (3)

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

咸鱼练手第二弹。

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

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

分析请求

老规矩先抓包,在xhr标签下等了半天没发现有异步请求,不过很快在一番骚操作下。

在Html页面请求里找到了下面的东西:

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

定位加密

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

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

本文完。

摸鱼

摸鱼

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

我先捋一捋思路:

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

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

遂,猝

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

代码语言:javascript复制
 $("equip_desc_panel").innerHTML = parse_style_info(get_equip_desc("equip_desc_value"));

下意识再搜了一次:

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

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

带 薪 摸 ( la ) 鱼 ( shi )

有助于灵感迸发

分析加密

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

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

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

点我 -----> JS逆向常见混淆总结

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

先从头逐步执行,并观察传入的值,顺带把代码复制一份并把代码里

_0x1b3f48['x63x68x61x72x43x6fx64x65x41x74']

这样的方法名翻译成正常的js代码便于理解,了解完大概解密流程,理清我们最终需要的值是怎样生成的。

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

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

还有就是在浏览器中base64编码转换使用的是

_0x1c0cdf = _0xcbc80b['atob'](_0x1c0cdf),

但是在nodejs调试的时候使用的是

Buffer.from(_0x1c0cdf,"base64").toString()

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

全文完。

1 人点赞