【猿人学WEB题目专解】猿人学第20题

文章介绍了如何利用RPC远程过程调用来避免逆向工程,解决一个涉及WASM文件的加和计算问题。作者提供了详细的代码示例,展示如何注入RPC框架并处理消息。此外,还讨论了直接处理WASM文件的方法,包括使用wabt转换WASM到Wat格式进行分析,并通过浏览器调试工具跟踪函数调用,最终通过MD5加密得到解题答案。
摘要由CSDN通过智能技术生成

🌈据说,看我文章时 关注、点赞、收藏帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:猿人学WEB题目专解 ,提供猿人学WEB题目总计20题的解题思路与方法,如有讲述错误,请不吝赐教。

想看往期历史文章,可以浏览此博文: 历史文章目录,后续所有文章发布都会同步更新此博文~

人生苦短,我用python

题目网址

猿人学第20题

题目详情

在这里插入图片描述
界面是新的颜色,让我们计算 加和

题目思路

老样子,进入 request 函数,参数入口挺直观的:
在这里插入图片描述
打上断点,点击下一页,就找到了我们的核心函数:
在这里插入图片描述
看得出来,这次是引用的“加强版”的 wasm ,上一次简单版的 wasm 还是在第15题。
人懒了,先再像第6题一样试一次 RPC 吧。

使用 RPC 远程过程调用解决

上次说到,为什么会有想用这个的想法呢?原因有几个:

  1. 使用 RPC 远程过程调用很简单。
  2. 函数入口明确,可以直接调用出结果。
  3. 懒得逆向 / 逆向恐惧 / 不会逆向 等原因。
  4. 没有用过 RPC 远程过程调用,想尝试。

这次很明确,函数入口明确 + 懒得逆向。
window.sign 函数调用前,加断点断住,然后在控制台注入 RPC 框架代码:

function Hlclient(wsURL) {
   
    this.wsURL = wsURL;
    this.handlers = {
   };
    this.socket = {
   };
    if (!wsURL) {
   
        throw new Error('wsURL can not be empty!!')
    }
    this.connect()
    this.handlers["_execjs"]=function (resolve,param){
   
        var res=eval(param)
        if (!res){
   
            resolve("没有返回值")
        }else{
   
            resolve(res)
        }

    }
}

Hlclient.prototype.connect = function () {
   
    console.log('begin of connect to wsURL: ' + this.wsURL);
    var _this = this;
    try {
   
        this.socket["ySocket"] = new WebSocket(this.wsURL);
        this.socket["ySocket"].onmessage = function (e) {
   
            try{
   
                let blob=e.data
                blob.text().then(data =>{
   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值