xray去掉config参数 配置文件固化编译在程序内部 修改ConfigLoader函数

需求

现在流行一波白嫖容器。有些容器提供方不支持xray,所以如果检测到是xray就会封停。

我们猜测,也许会检测启动时的参数 -config。

如果我们不使用 -config 参数,程序会从 stdin: 读取配置文件。

那么我们把配置文件写死在源码中,把程序原来要从 stdin: 读配置文件的,变成加载源码中写死的配置文件。


分析

运行xray时,提示要从stdin:读取配置文件

在源码中搜索 "stdin:",经过一番阅读理解,读取配置文件的代码位于 

编辑这个文件,将ConfigLoader函数改为:

io.ReadAll 用法参考: https://pkg.go.dev/io/ioutil#ReadAll

这里使用反引号的字符串,因为是带有双引号的,有换行的字符串。

语法参考:https://gfw.go101.org/article/basic-types-and-value-literals.html


比如,我随便找一个最简单的配置文件 

https://github.com/XTLS/Xray-examples/blob/main/VLESS-TCP/config_server.json

修改源码

nano main/confloader/external/external.go

ConfigLoader函数修改为:

func ConfigLoader(arg string) (out io.Reader, err error) {
        var data []byte
        switch {
        case strings.HasPrefix(arg, "http://"), strings.HasPrefix(arg, "https://"):
                data, err = FetchHTTPContent(arg)

        case arg == "stdin:": //              data, err = io.ReadAll(os.Stdin)                 strConfig := strings.NewReader(`{   "log": {     "loglevel": "warning"   },   "inbounds": [     {       "listen": "127.0.0.1",       "port": 1234,       "protocol": "vless",       "settings": {         "clients": [           {             "id": "216e42c6-698b-4ff4-9e75-80323f20e376",             "level": 0,             "email": "love@example.com"           }         ],         "decryption": "none",         "fallbacks": [           {             "dest": 8001           }         ]       },       "streamSettings": {         "network": "tcp"       }     }   ],   "outbounds": [     {       "protocol": "freedom",       "tag": "direct"     }   ] }`)                 data, err = io.ReadAll(strConfig)
        default:                 data, err = os.ReadFile(arg)         }
        if err != nil {                 return         }         out = bytes.NewBuffer(data)         return }

编译

go build -o xray -trimpath -ldflags "-s -w -buildid=" ./main

运行

./xray

可以看到不需要我们输入配置,xray已经跑起来了。

查看端口,xray监听的就是1234端口。


======

后记

不知道怎么编译 xray 的参考此篇

下载xray v1.7.2代码 修改并编译 hash变得不一样


评论