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 []byteswitch {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变得不一样
评论
发表评论