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变得不一样


评论

The Hot3 in Last 30 Days

RackNerd VPS搭V2Ray WSS梯子 年付 $10.98 1G端口 3T流量 17G存储 1GB内存