需求 现在流行一波白嫖容器。有些容器提供方不支持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:": // ...