以前写的太罗嗦了。简单点。
frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 7000
bind_udp_port = 7001
kcp_bind_port = 7000
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = password
log_file = ./frps.log
log_level = info
log_max_days = 3
allow_ports = 2000-3000,3001,3003,4000-50000
max_pool_count = 5
max_ports_per_client = 0
tcp_mux = true

frpc.ini

[common]
server_addr = frp.server.com
server_port = 7000

#每个机器的名字不能一样,最好是用“服务名_主机名”,这样好区分。
[ssh_myubuntu]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 62222

sudo vim /lib/systemd/system/frpc.service

[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
# 服务端
#ExecStart=/home/ubuntu/frp/frps -c /home/ubuntu/frp/frps.ini
# 客户端
ExecStart=/home/ubuntu/frp/frpc -c /home/ubuntu/frp/frpc.ini

[Install]
WantedBy=multi-user.target

location / {
        set $flagv2 0;
        if ($http_sec_websocket_version = 13){
            set $flagv2 "${flagv2}1";  
        } 
        if ($http_sec_websocket_key != ""){
            set $flagv2 "${flagv2}1";  
        }
        if ($flagv2 = "011"){
            proxy_pass http://yourvv2;
        }
        if ($flagv2 != "011"){
            proxy_pass https://www.qq.com;
        }
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Sec-WebSocket-Key $http_sec_websocket_key;
        proxy_set_header Sec-WebSocket-Version $http_sec_websocket_version;  
    }

最近看一个项目代码。好多天都不知道是什么加密方式。尝试了网上各种在线解密,都解不开。
后来,思路一转,何不看看低版本是怎么加密的呢,也许根本没加密也说不定。但是代码逻辑应该是差不多的。

找来低版本的代码。打开一看。开头明晃晃的。

    PM9SCREW

网上搜了下。原来是php_screw加密。
https://sourceforge.net/projects/php-screw/
还找到个解密的工具。
https://github.com/firebroo/screw_decode
解密需要知道PM9SCREW、PM9SCREW_LEN、以及pm9screw_mycryptkey,
前两个都是默认的,只需要知道key就行了。然后,用IDA,打开so文件,得到了key。
然后就解开了。

新版的,代码在这里。
https://github.com/del-xiong/screw-plus
解密更方便了。直接IDA打开,就看到key了。
解密也更方便,把key填到php_screw_plus.h里面
可能需要装

apt-get install gcc make zlib1g-dev
cd tools
make
./screw /home/xxx/sourcecode/ -d 

会在原来目录下,生成同名的的解密版。所以最好吧原来的加密代码备份一份。

参考:
https://www.cnblogs.com/StudyCat/p/11268399.html
https://jrdw0.github.io/2019/03/14/PHP-SCREW%E8%A7%A3%E5%AF%86PM9SCREW/