上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12下一页
返回列表 发新帖

js逆向求助

[复制链接]

该用户从未签到

4

主题

14

回帖

27

积分

助理工程师

积分
27

油中3周年挑战者 lv2

发表于 2024-2-1 15:57:15 | 显示全部楼层 | 阅读模式
悬赏200油猫币已解决

本帖最后由 krystal 于 2024-2-1 16:08 编辑

整不出来啊各位好哥哥帮忙看一下(金币奉上)🤡

网站地址:https://www.jsjiami.com/
触发条件:
微信图片_20240201155114.png
逆向接口:https://www.jsjiami.com/auth_v_1_0/v7/js/js_obfuscator.json
干了一天没出来的参数:sojsonData


关键加密位置
PixPin_2024-02-01_15-55-23.png

最佳答案

查看完整内容

var _0x58b14a = (Math.random() * 100).toString(32); var _0x40fdd5 = so.trim(so("#source").val()); //代码 const result="js|" + _0x58b14a + "|" + _0x40fdd5.length key在 t.prototype.getKey = function (t) { if (!this.key) { if (this.key = new it, t && "[object Function]" === {}.toString.call(t)) return void this.key.generateAsync(this.default_key_si ...
  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5202

    回帖

    6082

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6082

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2024-2-1 15:57:16 | 显示全部楼层
    var _0x58b14a = (Math.random() * 100).toString(32);
        var _0x40fdd5 = so.trim(so("#source").val()); //代码
    const result="js|" + _0x58b14a + "|" + _0x40fdd5.length

    key在
                t.prototype.getKey = function (t) {
                    if (!this.key) {
                        if (this.key = new it, t && "[object Function]" === {}.toString.call(t)) return void this.key.generateAsync(this.default_key_size, this.default_public_exponent, t);
                        this.key.generate(this.default_key_size, this.default_public_exponent)
                    }
                    return this.key
                }
    size 1024
    public 010001
    取加密后算出
    0bb81715e88746562c30593eab993e0937a97cb1748cec427d7cfefa06353dff9c86444cb28e972e5bfc10629327bbc7382ca86fe331b046acff12a65e02c37f4d0e03b7ddaff9b9bdc08e02ab8930783bb3db8cf0999d8af6a70cbe2dc9a1d386020d186e8b85538959fdd965c1e3abeece75d8a963ffc70c93bcbe5de217f7
    走一层位运算
        function c(t) {
            var e, i, r = "";
            for (e = 0; e + 3 <= t.length; e += 3) i = parseInt(t.substring(e, e + 3), 16), r += h.charAt(i >> 6) + h.charAt(63 & i);
            for (e + 1 == t.length ? (i = parseInt(t.substring(e, e + 1), 16), r += h.charAt(i << 2)) : e + 2 == t.length && (i = parseInt(t.substring(e, e + 2), 16), r += h.charAt(i >> 2) + h.charAt((3 & i) << 4)); 0 < (3 & r.length);) r += "=";
            return r
        }
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    294

    主题

    3907

    回帖

    3828

    积分

    管理员

    积分
    3828

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-2-1 16:04:52 | 显示全部楼层
    好像有通杀的,但是我不知道,等大佬来解答
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5202

    回帖

    6082

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6082

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2024-2-1 16:35:25 | 显示全部楼层
    标准ob,先用babel走ast解掉混淆,剩下直接覆盖本地文件无脑调就行了
    也不建议用这个
    直接用ob官方库比这个更好
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    4

    主题

    14

    回帖

    27

    积分

    助理工程师

    积分
    27

    油中3周年挑战者 lv2

    发表于 2024-2-1 16:38:41 | 显示全部楼层
    李恒道 发表于 2024-2-1 16:35
    标准ob,先用babel走ast解掉混淆,剩下直接覆盖本地文件无脑调就行了
    也不建议用这个
    直接用ob官方库比这个 ...

    gg真快 我哭死
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5202

    回帖

    6082

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6082

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2024-2-1 16:39:27 | 显示全部楼层
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5202

    回帖

    6082

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6082

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2024-2-1 16:46:27 | 显示全部楼层

    写太多了
    感兴趣可以正经看一下ast解混淆的那本书
    然后多看一些其他大佬的ast代码
    熟悉了之后普通ob几乎秒开
    -------------------------------------------------
    我刚开始入门好像就是搞得他家ast

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    4

    主题

    14

    回帖

    27

    积分

    助理工程师

    积分
    27

    油中3周年挑战者 lv2

    发表于 2024-2-1 16:51:26 | 显示全部楼层
    李恒道 发表于 2024-2-1 16:46
    写太多了
    感兴趣可以正经看一下ast解混淆的那本书
    然后多看一些其他大佬的ast代码

    好的好的
    回复

    使用道具 举报

    该用户从未签到

    15

    主题

    9

    回帖

    48

    积分

    初级工程师

    积分
    48
    发表于 2024-2-1 23:13:35 | 显示全部楼层
    AST狗都不玩
    但是我玩
    回复

    使用道具 举报

    该用户从未签到

    4

    主题

    14

    回帖

    27

    积分

    助理工程师

    积分
    27

    油中3周年挑战者 lv2

    发表于 2024-2-2 10:01:53 | 显示全部楼层

    可以了 之前漏了个分隔符

    本帖最后由 krystal 于 2024-2-2 10:32 编辑
    李恒道 发表于 2024-2-1 16:35
    标准ob,先用babel走ast解掉混淆,剩下直接覆盖本地文件无脑调就行了
    也不建议用这个
    直接用ob官方库比这个 ...
    1. import axios from "axios";
    2. import qs from "qs";
    3. import querystring from "querystring";
    4. import { JSEncrypt } from "./lib/JSEncrypt";

    5. var encrypt = new JSEncrypt();
    6. encrypt.setPublicKey(
    7.   "-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCM2eQ5SNpL7Lbv9Uh6UPY/kk5Hpm1fwjPriMd2n3aACGQKus3L3xYnsd67BThXFh7+khiTZ0Ixm9HX03EbS8N6oggeoordvWN6oIS75RRhJFqHZhCdf18W27FmOoBp5tlQXPt0z7tdi3KG4D+4464tsbyybvESDCG3yWVeK0HB9wIDAQAB-----END PUBLIC KEY-----"
    8. );
    9. let urlParam = (Math.random() * 100).toString(32);
    10. let source = 'console.log("Hello")'.replace(/(^\s*)|(\s*$)/g, "");
    11. let result = "js|" + urlParam + "|" + source.length;

    12. var sojsondata = encrypt.encrypt(result);

    13. let sojsonhost = encrypt.encrypt("www.jsjiami.com" + "|" + +Date.now());

    14. function request(urlParam, source, sojsondata, sojsonhost) {
    15.   var data = querystring.stringify({
    16.     source,
    17.     rotateStringArrayEnabled: "true",
    18.     compact: "true",
    19.     controlFlowFlattening: "true",
    20.     deadCodeInjection: "true",
    21.     imark: "true",
    22.     basic: "true",
    23.     controlFlowFlatteningThreshold: "0.7",
    24.     deadCodeInjectionThreshold: "0.5",
    25.     stringArrayEncoding: "rc4",
    26.     stringArrayThreshold: "0.7",
    27.     allRename: "false",
    28.     selfDefending: "false",
    29.     platform: "0",
    30.     stringArrayShuffle: "true",
    31.     splitStrings: "true",
    32.     stringArrayStorageItemNum: "3",
    33.     stringArrayStorageItemNum: "3",
    34.     simplify: "true",
    35.     numbersToExpressions: "true",
    36.     best: "true",
    37.     niub: "false",
    38.     autojs: "false",
    39.     encodeVersion: "jsjiami.com.v7",
    40.     basicName: "1",
    41.     selenium: "0",
    42.     unicodeEscapeSequence: "false",
    43.     debugProtection: "false",
    44.     disableConsoleOutput: "false",
    45.     domains: "",
    46.     reservedStrings: "",
    47.     reservedNames: "",
    48.   });

    49.   let url =
    50.     "https://www.jsjiami.com/auth_v_1_0/v7/js/js_obfuscator.json?v=" + urlParam;

    51.   var config = {
    52.     method: "POST",

    53.     headers: {
    54.       authority: "www.jsjiami.com",
    55.       method: "POST",
    56.       scheme: "https",
    57.       Accept: "application/json, text/javascript, */*; q=0.01",
    58.       path: "/auth_v_1_0/v7/js/js_obfuscator.json?v=" + urlParam,

    59.       "accept-language": "zh-CN,zh;q=0.9",
    60.       "cache-control": "max-age=0",
    61.       origin: "https://www.jsjiami.com",
    62.       pragma: "no-cache",
    63.       referer: "https://www.jsjiami.com/",
    64.       "sec-ch-ua":
    65.         '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
    66.       "sec-ch-ua-mobile": "?0",
    67.       "sec-ch-ua-platform": '"Windows"',
    68.       "sec-fetch-dest": "empty",
    69.       "sec-fetch-mode": "cors",
    70.       "sec-fetch-site": "same-origin",
    71.       Cookie:
    72.         "Hm_lvt_75b5ae4b288fcf7d181cec6859c9754f=1706764075,1706770756,1706779344,1706838286; Hm_lpvt_75b5ae4b288fcf7d181cec6859c9754f=1706838286",
    73.       sojsondata,
    74.       sojsonhost,
    75.       "user-agent":
    76.         "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    77.       "x-requested-with": "XMLHttpRequest",
    78.       "content-type": "application/x-www-form-urlencoded",
    79.     },
    80.     data,
    81.     url,
    82.   };

    83.   axios(config)
    84.     .then(function (response) {
    85.       console.log(response.data);
    86.     })
    87.     .catch(function (error) {
    88.       console.log(error);
    89.     });
    90. }
    91. request(urlParam, source, sojsondata, sojsonhost);
    复制代码

    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表