🌈据说,看我文章时 关注、点赞、收藏 的 帅哥美女们 心情都会不自觉的好起来。
前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:猿人学WEB题目专解 ,提供猿人学WEB题目总计20题的解题思路与方法,如有讲述错误,请不吝赐教。
想看往期历史文章,可以浏览此博文: 历史文章目录
,后续所有文章发布都会同步更新此博文~
猿人学第20题
题目网址
题目详情
界面是新的颜色,让我们计算 加和。
题目思路
老样子,进入 request
函数,参数入口挺直观的:
打上断点,点击下一页,就找到了我们的核心函数:
看得出来,这次是引用的“加强版”的 wasm
,上一次简单版的 wasm
还是在第15题。
人懒了,先再像第6题一样试一次 RPC 吧。
使用 RPC 远程过程调用解决
上次说到,为什么会有想用这个的想法呢?原因有几个:
- 使用 RPC 远程过程调用很简单。
- 函数入口明确,可以直接调用出结果。
- 懒得逆向 / 逆向恐惧 / 不会逆向 等原因。
- 没有用过 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 =>{