shermie js rpc
1.0.0
bin 디렉터리를 입력하고 명령줄에서 다음 명령을 실행합니다. (cli.exe를 다운로드하려면 내 다른 문서로 이동하세요: https://learnku.com/articles/67419)
. / cli . exe Websocket . php
1. 브라우저에서 Websocket 연결을 생성합니다. (먼저 Websocket.js 파일을 브라우저에 삽입합니다.)
2. 클라이언트 객체에서 호출해야 하는 js 함수를 등록합니다.
# 假设我们需要通过http调用btoa这个函数,第一个参数随便命名,第二个参数是函数执行的内容,需要自己定义执行内容
let client = ( new WebsocketClient ( "ws://127.0.0.1:9501" ) ) . start ( ) ;
client . registeCall ( "btoa" , function ( resolve , params ) {
let result = btoa ( params ) ;
resolve ( result ) ;
} ) ;
# 会输出一个访问地址,比如这样
[ 2022 / 4 / 24 18 : 16 : 01 ] [ info ] 连接到服务器成功
[ 2022 / 4 / 24 18 : 16 : 52 ] [ info ] 注册函数btoa成功
[ 2022 / 4 / 24 18 : 16 : 52 ] [ info ] 访问地址:http: //127.0.0.1:9501/call?group=ef8d3da2-dca4-4236-ba99-82f76a5e1901&action=btoa&input=
# 参数说明
group:客户端分组ID (不用管)
action:注册的需要调用的函数(不用管)
input:调用这个函数传入的参数(需要输入)
http://127.0.0.1:9501/call?group=df777a58-ff44-41bb-81ce-935b6bea9c25&action=btoa&input="abc"
를 전달하세요. is: window.btoa("ss")
실행 결과 종종 암호화된 매개변수는 특정 js 파일의 함수에 의해 생성됩니다. 우리가 해야 할 일은 중단점을 통해 암호화된 매개변수가 생성된 위치를 찾은 다음, 스크립트를 동적으로 삽입하고 이를 호출하기 위해 외부 코드를 사용하는 것입니다. 이미 키 코드를 찾았으므로 두 단계로 수행되는 스크립트를 동적으로 삽입하기만 하면 됩니다.
ws에 연결하는 로직에 키 암호화 기능을 추가하고, 이를 새로운 js 파일로 저장한 후, 암호화된 js 파일을 찾으면 브라우저의 오버라이드나 피들러를 사용하여 교체해야 합니다.
function sign(){
// w函数存在其他地方
return w(x+y);
}
변형한 후
function sign() {
// 动态注入js文件
(function () {
var newElement = document.createElement("script");
newElement.setAttribute("type", "text/javascript");
newElement.setAttribute("src", "https://github.com/kxg3030/js-rpc/blob/main/Websocket.js");
document.body.appendChild(newElement);
function startWs() {
var client = (new WebsocketClient("ws://127.0.0.1:9501")).start();
client.registeCall("a", function (resolve, params) {
// 重点!在这里我们主动调用w函数并传入参数
resolve(w(params));
})
}
setTimeout(startWs, 1000)
})();
// w函数存在其他地方
return w(x + y);
}
그런 다음 수정된 js 파일을 저장하고 웹 페이지에서 원본 js 파일을 동일한 이름으로 바꿉니다.
브라우저와 통신하려면 외부 ws 서버를 사용하세요.
/ call 调用函数获取返回值
/ list 获取当前服务的websocket客户端数量