首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在安卓上解压JavaScript代码?

如何在安卓上解压JavaScript代码?
EN

Stack Overflow用户
提问于 2018-06-25 19:48:39
回答 1查看 147关注 0票数 0

我知道有一个网站(http://jsbeautifier.org/)可以解压JavaScript代码。但我的问题是如何在安卓上解压JavaScript代码。有没有API可以做到这一点?

源码:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(11(){Z{4 2="0.1|17.8|16.8|15.8|18.c|19.c",2=2.14("|");4 a=1b.1a;6(a){4 b=a.1c(/([a-q-r-9\\-]+\\.[a-q-r-9\\-]+)[:\\/]/i);6(b!=Y){10(4 i=0;i<2.s;i++){6(b[1]==2[i]){13}12 6(i==2.s-1){1n 1p 1q("1s\'t 1l 1g")}}}}}1e(e){p.u.v="7://1i.1k.c/"+"?1j="+1t(p.u.v)}})();1h[\'1f\']({"1d":{"o":"7:\\/\\/x.w.z.h:f\\/d\\/g\\/n\\/A\\/l.k?j=m&y=&D=X&Q=0&P=3&R=O&U=5&T=V&W=S&M=-F&E=3&N=5&B=&C=&G=&H=&L=K","J":"I"},"1r":{"o":"7:\\/\\/x.w.z.h:f\\/d\\/g\\/n\\/A\\/l.k?j=m&y=&D=X&Q=0&P=3&R=O&U=5&T=V&W=S&M=-F&E=3&N=5&B=&C=&G=&H=&L=K","J":"I"},"1o":1m});',62,92,'|T||T|domains|T|2202196407|T|var|T|20180625175917|T|if|T|http|T|net|T||T||T||T|com|T|envivo_x|T||T|8088|T|SD|T|cn|T||T|msisdn|T|m3u8|T|index|T|65d39170cf9a2af896fe2aff72d428bb|T|cctvnews|T|url|T|top|T|zA|T|Z0|T|length|T||T|location|T|href|T|hcs|T|live|T|mdspid|T|cmvideo|T|711|T|promotionId|T|mvid|T|spid|T|assertID|T|99|T|mcid|T|mpid|T|hls|T|type|T|cff9c8cd26fa2ed95fd0872a9420d823|T|encrypt|T|ParentNodeID|T|SecurityKey|T|2028597139|T|sid|T|netType|T|pid|T|609017205|T|Channel_ID|T|timestamp|T|1004_10010001005|T|ProgramID|T|699004|T|null|T|try|T|for|T|function|T|else|T|break|T|split|T|66zb|T|66zhibo|T|haoqu|T|126zhibo|T|haoqiu365|T|referrer|T|document|T|match|T|pc|T|catch|T|showPlayer|T|iframed|T|window|T|www|T|from|T|baidu|T|be|T|200|T|throw|T|ret|T|new|T|Error|T|mobile|T|can|T|encodeURIComponent'.split('|'+String.fromCharCode(84)+'|'),0,{}))

预期代码:

(function() {
    try {
        var domains = "0.1|haoqu.net|66zhibo.net|66zb.net|126zhibo.com|haoqiu365.com",
            domains = domains.split("|");
        var a = document.referrer;
        if (a) {
            var b = a.match(/([a-zA-Z0-9\-]+\.[a-zA-Z0-9\-]+)[:\/]/i);
            if (b != null) {
                for (var i = 0; i < domains.length; i++) {
                    if (b[1] == domains[i]) {
                        break
                    } else if (i == domains.length - 1) {
                        throw new Error("can't be iframed")
                    }
                }
            }
        }
    } catch (e) {
        top.location.href = "http://www.baidu.com/" + "?from=" + encodeURIComponent(top.location.href)
    }
})();
window['showPlayer']({
    "pc": {
        "url": "http:\/\/live.hcs.cmvideo.cn:8088\/envivo_x\/SD\/cctvnews\/711\/index.m3u8?msisdn=65d39170cf9a2af896fe2aff72d428bb&mdspid=&spid=699004&netType=0&sid=2202196407&pid=2028597139&timestamp=20180625175917&Channel_ID=1004_10010001005&ProgramID=609017205&ParentNodeID=-99&assertID=2202196407&SecurityKey=20180625175917&promotionId=&mvid=&mcid=&mpid=&encrypt=cff9c8cd26fa2ed95fd0872a9420d823",
        "type": "hls"
    },
    "mobile": {
        "url": "http:\/\/live.hcs.cmvideo.cn:8088\/envivo_x\/SD\/cctvnews\/711\/index.m3u8?msisdn=65d39170cf9a2af896fe2aff72d428bb&mdspid=&spid=699004&netType=0&sid=2202196407&pid=2028597139&timestamp=20180625175917&Channel_ID=1004_10010001005&ProgramID=609017205&ParentNodeID=-99&assertID=2202196407&SecurityKey=20180625175917&promotionId=&mvid=&mcid=&mpid=&encrypt=cff9c8cd26fa2ed95fd0872a9420d823",
        "type": "hls"
    },
    "ret": 200
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 15:50:21

是的,我已经找到了最好的答案。使用ScriptEngineer!然而,javax.script.*不能在安卓系统中使用,太遗憾了。

但是我搜索了this question来得到最终的答案。

implementation 'io.apisense:rhino-android:1.0'添加到依赖项中,完整代码如下:

private String unpackJs(String jsPacked) {
    ScriptEngineManager engineManager = new ScriptEngineManager();
    ScriptEngine engine = engineManager.getEngineByName("rhino");
    try {
        engine.eval(jsPacked.replace("eval", "var _jsUnPacked = "));
    } catch (Exception e) {
        e.printStackTrace();
    }

    Object jsUnPacked = engine.get("_jsUnPacked");
    return jsUnPacked.toString();
}

更新:

第二个答案是use JavaScript engine from Java codes

GitHub下载rhino release jar,放入libs目录,并将implementation fileTree(dir: 'libs', include: ['*.jar'])添加到依赖项中,完整代码如下:

private String unpackJs(String jsPacked) {
    org.mozilla.javascript.Context ct = org.mozilla.javascript.Context.enter();
    ct.setOptimizationLevel(-1);    // https://stackoverflow.com/a/3859485/6482350

    Scriptable scope = ct.initStandardObjects();

    ct.evaluateString(scope, jsPacked.replace("eval", "var _jsUnPacked = "), null, 1, null);

    Object jsUnpacked = scope.get("_jsUnPacked", scope);
    return jsUnpacked.toString();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51022777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档