开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 589|回复: 16
打印 上一主题 下一主题
收起左侧

[已解决] js逆向求助

 关闭 [复制链接]
结帖率:82% (9/11)
跳转到指定楼层
受到警告 楼主
发表于 2024-12-23 15:54:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式   安徽省宣城市
490精币
目标站:aHR0cHM6Ly93d3cuc2xoYmN1LmNvbTo2MDAxLw==
参数:登陆的 xxx-API-XXX
https://www.15ko4v.com:6002/_next/static/wasm/5bd33e776bcea985.wasm
这个加密参数 我用nodejs 导出实现了 写的接口有点慢 这种wasm能改成js纯算法吗


最佳答案

查看完整内容

https://125.confly.eu.org/forum.php?mod=viewthread&tid=14700343&highlight=wasm

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (3/3)

签到天数: 7 天

沙发
发表于 2024-12-23 15:54:21 | 只看该作者   安徽省宣城市
回复

使用道具 举报

结帖率:93% (42/45)

签到天数: 7 天

板凳
发表于 2024-12-23 16:38:32 | 只看该作者   福建省福州市
加密参数
nodejs实现
接口慢
wasm

这四个词汇为什么混在一起谈了, 到底想表达什么呢, 是nodejs生成加密参数慢吗
回复

使用道具 举报

结帖率:82% (9/11)
地板
 楼主| 发表于 2024-12-23 16:42:06 | 只看该作者   安徽省宣城市
1425113841 发表于 2024-12-23 16:38
加密参数
nodejs实现
接口慢

对他是wasm的我用nodejs实现写成接口调用 但是nodejs生成好慢
回复

使用道具 举报

结帖率:93% (42/45)

签到天数: 7 天

地下
发表于 2024-12-23 16:47:58 | 只看该作者   福建省福州市
dwk1818 发表于 2024-12-23 16:42
对他是wasm的我用nodejs实现写成接口调用 但是nodejs生成好慢

慢吗, 有多慢, 测试过耗时在哪里吗, 生成加密的那一部分上传来看看

补充内容 (2024-12-23 16:50):
nodejs的核心就是V8, V8还慢的话还有什么比V8快吗, 现在的浏览器js引擎都是V8
回复

使用道具 举报

结帖率:82% (9/11)
6
 楼主| 发表于 2024-12-23 17:04:56 | 只看该作者   美国
1425113841 发表于 2024-12-23 16:47
慢吗, 有多慢, 测试过耗时在哪里吗, 生成加密的那一部分上传来看看

补充内容 (2024-12-23 16:50):

[JavaScript] 纯文本查看 复制代码
// WebAssembly 模块导出和相关方法
var o = function () {
    return {
        "./wasm_api_sign_bg.js": {
            __wbg_now_513c8208bd94c09b: function () {
                return Date.now();
            },
            __wbg_random_9f33d5bdc74069f8: function () {
                return Math.random();
            },
            __wbg_floor_a68aa7c1b572044e: function (e) {
                return Math.floor(e);
            },
            __wbindgen_throw: function (e, c) {
                console.error("Throwing error: ", e, c);
            }
        }
    };
};

// 使用 fetch 获取 WebAssembly 文件
let i = fetch("https://www.15ko4v.com:6002/_next/static/wasm/5bd33e776bcea985.wasm"); 

// 确保 f 变量初始化
let f = 0; 

// 处理内存操作的函数
function a(n, e, t, rs) {
    let r = n.length,
        o = e(r);
    const u = c(rs);
    let i = 0;
    for (; i < r; i++) {
        const e = n.charCodeAt(i);
        if (e > 127) break;
        u[o + i] = e;
    }
    if (i !== r) {
        0 !== i && (n = n.slice(i)),
        o = t(o, r, r = i + 3 * n.length);
        const e = c().subarray(o + i, o + r);
        i += _(n, e).written;
    }
    f = i;
    return o;
}

// 获取 WebAssembly 内存中的 Int32Array 数据
function w(r) {
    let l = new Int32Array(r.memory.buffer);
    return l;
}

// 获取 WebAssembly 内存中的 Uint8Array 数据
function c(r) {
    return new Uint8Array(r.memory.buffer);
}

// 使用 TextDecoder 解码
let u = new (typeof TextDecoder === "undefined" ? require("util").TextDecoder : TextDecoder)("utf-8", {
    ignoreBOM: true,
    fatal: true
});

// 解码函数
function is(n, e, r) {
    return u.decode(c(r).subarray(n, n + e));
}

// 主动调用的函数,封装 WebAssembly 加载与调用逻辑,并返回解码结果
function processWasm(apiPath) {
    return i.then(function(response) {
        return WebAssembly.instantiateStreaming(response, o()); // 使用 fetch 的返回值传给 instantiateStreaming
    }).then(function (e) {
        let r = e.instance.exports;
        const u = r.__wbindgen_add_to_stack_pointer(-16); // 处理栈指针
        const c = a(apiPath, r.__wbindgen_malloc, r.__wbindgen_realloc, r); // 处理数据
        const d = f;
        const _ = a("prod", r.__wbindgen_malloc, r.__wbindgen_realloc, r); // 处理生产环境数据
        const l = f;

        // 调用 WebAssembly 模块中的 `sign` 函数
        r.sign(u, c, d, _, l);

        // 获取 WebAssembly 内存中的数据
        let t = w(r)[u / 4 + 0];
        let o = w(r)[u / 4 + 1];

        // 解码并返回结果
        return is(t, o, r);  // 返回解码后的字符串
    }).catch(function (err) {
        console.error("WebAssembly Instantiation Error:", err);
        throw err;  // 如果出错,抛出错误
    });
}

// 调用 processWasm 函数,传入自定义的 API 路径
processWasm("/site/api").then(function(result) {
    // 处理返回的解码结果
    console.log("Decoded result: ", result);
}).catch(function(err) {
    // 处理错误
    console.error("Error in processing WebAssembly:", err);
});
回复

使用道具 举报

结帖率:82% (9/11)
7
 楼主| 发表于 2024-12-23 20:07:50 | 只看该作者   安徽省宣城市
1425113841 发表于 2024-12-23 16:47
慢吗, 有多慢, 测试过耗时在哪里吗, 生成加密的那一部分上传来看看

补充内容 (2024-12-23 16:50):

// WebAssembly 模块导出和相关方法
var o = function () {
    return {
        "./wasm_api_sign_bg.js": {
            __wbg_now_513c8208bd94c09b: function () {
                return Date.now();
            },
            __wbg_random_9f33d5bdc74069f8: function () {
                return Math.random();
            },
            __wbg_floor_a68aa7c1b572044e: function (e) {
                return Math.floor(e);
            },
            __wbindgen_throw: function (e, c) {
                console.error("Throwing error: ", e, c);
            }
        }
    };
};

// 使用 fetch 获取 WebAssembly 文件
let i = fetch("https://www.15ko4v.com:6002/_next/static/wasm/5bd33e776bcea985.wasm");

// 确保 f 变量初始化
let f = 0;

// 处理内存操作的函数
function a(n, e, t, rs) {
    let r = n.length,
        o = e(r);
    const u = c(rs);
    let i = 0;
    for (; i < r; i++) {
        const e = n.charCodeAt(i);
        if (e > 127) break;
        u[o + i] = e;
    }
    if (i !== r) {
        0 !== i && (n = n.slice(i)),
        o = t(o, r, r = i + 3 * n.length);
        const e = c().subarray(o + i, o + r);
        i += _(n, e).written;
    }
    f = i;
    return o;
}

// 获取 WebAssembly 内存中的 Int32Array 数据
function w(r) {
    let l = new Int32Array(r.memory.buffer);
    return l;
}

// 获取 WebAssembly 内存中的 Uint8Array 数据
function c(r) {
    return new Uint8Array(r.memory.buffer);
}

// 使用 TextDecoder 解码
let u = new (typeof TextDecoder === "undefined" ? require("util").TextDecoder : TextDecoder)("utf-8", {
    ignoreBOM: true,
    fatal: true
});

// 解码函数
function is(n, e, r) {
    return u.decode(c(r).subarray(n, n + e));
}

// 主动调用的函数,封装 WebAssembly 加载与调用逻辑,并返回解码结果
function processWasm(apiPath) {
    return i.then(function(response) {
        return WebAssembly.instantiateStreaming(response, o()); // 使用 fetch 的返回值传给 instantiateStreaming
    }).then(function (e) {
        let r = e.instance.exports;
        const u = r.__wbindgen_add_to_stack_pointer(-16); // 处理栈指针
        const c = a(apiPath, r.__wbindgen_malloc, r.__wbindgen_realloc, r); // 处理数据
        const d = f;
        const _ = a("prod", r.__wbindgen_malloc, r.__wbindgen_realloc, r); // 处理生产环境数据
        const l = f;

        // 调用 WebAssembly 模块中的 `sign` 函数
        r.sign(u, c, d, _, l);

        // 获取 WebAssembly 内存中的数据
        let t = w(r)[u / 4 + 0];
        let o = w(r)[u / 4 + 1];

        // 解码并返回结果
        return is(t, o, r);  // 返回解码后的字符串
    }).catch(function (err) {
        console.error("WebAssembly Instantiation Error:", err);
        throw err;  // 如果出错,抛出错误
    });
}

// 调用 processWasm 函数,传入自定义的 API 路径
processWasm("/site/api").then(function(result) {
    // 处理返回的解码结果
    console.log("Decoded result: ", result);
}).catch(function(err) {
    // 处理错误
    console.error("Error in processing WebAssembly:", err);
});
回复

使用道具 举报

结帖率:74% (25/34)

签到天数: 1 天

8
发表于 2024-12-23 21:26:52 | 只看该作者   伊朗

难道是我找错加密地方了?,加密的是不是在这个模块里
回复

使用道具 举报

结帖率:82% (9/11)
9
 楼主| 发表于 2024-12-23 22:11:11 | 只看该作者   安徽省宣城市
137240129 发表于 2024-12-23 21:26
难道是我找错加密地方了?,加密的是不是在这个模块里

不是的在这里  
__wbindgen_add_to_stack_pointer(-16)
搜上面的
b方法
回复

使用道具 举报

结帖率:82% (9/11)
10
 楼主| 发表于 2024-12-23 22:26:39 | 只看该作者   安徽省宣城市
137240129 发表于 2024-12-23 21:26
难道是我找错加密地方了?,加密的是不是在这个模块里

搜这个
__wbindgen_add_to_stack_pointer(-16)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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