淘宝新版 UA 文件代码反混淆分析(去数组下标)

       淘宝新版UA文件混淆函数清晰化处理(C#实现)

       C# 正则表达式实现对淘宝 UA 文件初步反混淆

       淘宝UA反混淆之常量替换(201605_64.js)

       淘宝新版UA文件是http://af.alicdn.com/js/cj/62.js,这个文件与原来(2015年10月)的UA文件ctionlog_js_ua.js风格迥异,代码混淆的复杂度完全不可相提并论。尽管犹如蚍蜉撼大树,我还是尝试着对这个文件做了一些初步的反混淆分析,还请各位大神指点。

       直接在浏览器中打开上述链接,就可以得到淘宝新版UA文件,该文件一眼看上去都是数组下标,这是该文件的混淆方式之一,本文主要记录将数组下标还原为变量。

       C#对淘宝新版UA文件进行反混淆

       这里我用C#来实现对淘宝新版UA文件进行反混淆,实现步骤如下:

       1. 用HttpWebResponse请求淘宝新版UA文件的链接http://af.alicdn.com/js/cj/62.js,以字符串的方式存储该链接返回的代码; 

       2. 用正则表达式获取淘宝新版UA文件62.js最外层函数的参数,然后将这些参数依次存储在数组中。这个数组下标与62.js中出现的r数组的下标对应;

       参数提取出来后,我起初使用了string[] strArray = rList.Split(new char[] { ‘,’ }); 的方式来将参数分割为数组,这样做就默认所有的元素中均不包含’,’。但事实上,62.js,63.js中有三个元素包含’,’,所以这种简单的分解方法会出错。经过某位大神的友情提醒,我才意识到这个错误,非常感谢。不过我暂时还不会做语法分析,所以我选用了比较简单的方案来处理这个问题点:

        将参数进行格式化之后,找出包含’,’的元素,用特殊字符替代,待数组分解完毕后,再将特殊数组用原始的元素替换。     

        另外一种方法是将第一步反混淆之后的代码存储并用格式化工具处理,处理完成后,元素与元素之间会变成”,”和空格,然后用C#读取本地文件, 用”, “进行区分。

       3. 根据第2步中获取的数组长度,用正则表达式从0开始依次获取r数组元素并用第2步中获取的相应数组元素进行替换。

       实现代码如下,在以下代码中,contentOut的最终执行结果即为用变量名分别替换数组元素后的结果

       尝试过的其他方案

       最初我想用js来实现反混淆,我想将相关代码写在html文件中,然后用浏览器打开该文件来进行调试。我的思路是这样的:用XMLHttpRequest请求淘宝新版UA文件的链接,获取62.js的内容,然后用正则表达式对这些内容进行反混淆。可是第一步我就失败了,获取62.js内容的代码如下:

       该文件在chrome中打开时,也无法得到正确的结果,提示:Origin ‘null’ is therefore not allowed access.


       在firefox中执行时,无法得到正确的结果,原因:CORS 头缺少 ‘Access-Control-Allow-Origin’。


       在IE中执行时,倒是没有报错,但是其获取的内容并不完整。

       关于firefox和chrome中的执行状况,我查了很多资料,也没有明白到底该怎么做,所以我最后选择了用C#来实现该功能,去除数组下标的文件的下载链接,不过C#获取的内容中有一些乱码,可能是我在请求链接时编码方式未设置正确,也可能是淘宝设置的一个坑,目前我暂时还不知道该如何处理,如果有大神愿意指导,不甚感激。



Comments

  1. By 奔放的胸毛。

    回复

    • By live

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Fork me on GitHub