How to unpack JavaScript codes on Android?

DysaniazzZ

I know a website(http://jsbeautifier.org/) can unpack JavaScript codes. But my question is how to unpack JavaScript codes on Android. Is there an API can do this?

origin codes:

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,{}))

expected codes:

(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
});
DysaniazzZ

Yeah, I have found the best answer. Use ScriptEngineer! However, javax.script.* is not available in Android, what a pity.

But I searched for this question to get the final answer.

Add implementation 'io.apisense:rhino-android:1.0' to dependencies, and the complete codes are below:

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();
}

UPDATED:

The second answer, use JavaScript engine from Java codes:

Download rhino release jar from GitHub, put it to libs directory, and add implementation fileTree(dir: 'libs', include: ['*.jar']) to dependencies, and the complete codes are below:

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();
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How to beautify/refactoring this JavaScript codes?

From Dev

How to recognize MICR codes in Android

From Dev

How to combine key codes to work together in javascript

From Dev

How to combine key codes to work together in javascript

From Dev

How to properly type javascript codes in NetBeans 7.4?

From Dev

How to debug android codes after loops in Eclipse

From Dev

How do int color codes in android work?

From Dev

How to debug android codes after loops in Eclipse

From Dev

How to interpret GCM response codes for Android app?

From Dev

Python: unpack android backup?

From Dev

Python: unpack android backup?

From Dev

How to fix this unpack issue?

From Dev

How to unpack a msgpack file?

From Java

How to unpack an .asar file?

From Java

How to unpack pkl file?

From Dev

How to unpack mnist dataset?

From Dev

how to unpack array into variables

From Dev

How to unpack this list comprehension

From Dev

how to unpack the list of elements

From Dev

How to unpack mnist dataset?

From Dev

How to unpack Option in Future?

From Dev

How to unpack and print a tuple

From Dev

How can I get these two javascript codes to work together?

From Dev

How to write JavaScript codes that are only runnable on web browsers?

From Dev

How can I get these two javascript codes to work together?

From Dev

How can I integrate these two simple javascript codes?

From Dev

How to run 2 javascript codes in order to get correct result

From Dev

How the codes work for loading image from Gallery Android

From Dev

How to do requests in Unity for android/IOS and get HTTP response codes