├── README.md ├── go.mod ├── go.sum ├── xary.png ├── xray-license.lic └── xray.go /README.md: -------------------------------------------------------------------------------- 1 | # xray_free_crack 2 | 3 | ## 说明 4 | 5 | 1.原破解文章地址:https://mp.weixin.qq.com/s/KfPIPHSjK815G_IXKtcImQ 6 | 7 | 2.原理很简单就是修改系统时间为证书到期前,运行了xray后再把系统时间设置为正常. 8 | 9 | 3.修改系统时间需要UAC权限,所以得用管理员运行. 10 | 11 | 4.只弄了windows的,需要其他版本的请自行修改.(有时候不知道怎么回事,改不了时间,系统问题~~) 12 | 13 | Ps:请自行去往xray官网下载最新版xray,和编译后的文件放一起(ps:证书文件不能忘),重命名为xray.exe 14 | 15 | 证书文件从这里拿的:https://github.com/q601333824/xray_crack 16 | 17 | 目前支持最新版本:1.8.4 18 | 2022.05.16 19 | 20 | 没什么技术含量,但是没想到xray居然是取到系统本地时间来验证== 21 | 22 | 自己手动改一下系统时间,也算破解了... 23 | ## 编译 24 | 25 | ```go 26 | go 1.17 27 | go get golang.org/x/text/encoding/simplifiedchinese 28 | CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o xray_crack.exe -ldflags "-w -s" --trimpath xray.go 29 | ``` 30 | 31 | ![xary](./xary.png) 32 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module xray_check 2 | 3 | go 1.17 4 | 5 | require golang.org/x/text v0.3.7 6 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= 2 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 3 | -------------------------------------------------------------------------------- /xary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TryGOTry/xray_free_crack/c3f596b104d091d253665ceed9409e1b7174917e/xary.png -------------------------------------------------------------------------------- /xray-license.lic: -------------------------------------------------------------------------------- 1 | AhMdgTi2o3w3YvmXYVG/xazLqxOM8b+9sEuuPB7WIdBOwkW+wlORf/wuBMCh2zepJM0aE3/eG7r9Jy4bIdEhZVRYAOB8zGISEh0xhwGLYeZ4uN2gihPCZILnpspULk1laagCKZT27VG7CvbYS27v1PysrPukS1Jprm0Jvxgxqo+ruiLNU83XLbUD1Z/03g3JCVC93wRsLaFBCHuD2Xq+mqONsEdoW4XJSdC30MP3e+O9Wep314tViFHp9ApQHxRI3Nmkyk3B56BENczSK9mvmvBuzkXILRuu/LuB7FlXM3x2jMqTvbQF1G4zotFttnANe/E3v6Bk7U5rPMKcg5QbquAOdHnEfongy9veq3OPWEUS0nuGY/DLwkmy+Tn3IE2pCRVpncKYRMXe8fNp1lzNT8IeRlO8eDKMy6BZmm1WvqAxWL0SiP2iFE5Rj/6Sk/1yLyLIthko5NWcpHe+CfD97SiASaKMdBCaDmVKyh6BKI7ELIv4BPZ73T3z9PvKF1VKoKaqr5ab5Q03lncR3ZFmeqLtKZ7hWSOraE3ypc7ZAPOkDSrQJJPOkAXt08hN0irCwHDgqvBUi5mwjnTeM7Li4LadKwCxxi36zxr28bQaPRAD3Hg3rYW7eH3tajgAtmxxT2MxUU9ySEVnakJBcTZ0V8s= 2 | -------------------------------------------------------------------------------- /xray.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bufio" 5 | "bytes" 6 | "fmt" 7 | "golang.org/x/text/encoding/simplifiedchinese" 8 | "os" 9 | "os/exec" 10 | "runtime" 11 | "strings" 12 | "time" 13 | ) 14 | 15 | var xraytime = "2022-02-09" 16 | 17 | type Charset string 18 | 19 | const ( 20 | UTF8 = Charset("UTF-8") 21 | GB18030 = Charset("GB18030") 22 | ) 23 | 24 | func ConvertByte2String(byte []byte, charset Charset) string { 25 | var str string 26 | switch charset { 27 | case GB18030: 28 | var decodeBytes, _ = simplifiedchinese.GB18030.NewDecoder().Bytes(byte) 29 | str = string(decodeBytes) 30 | case UTF8: 31 | fallthrough 32 | default: 33 | str = string(byte) 34 | } 35 | return str 36 | } 37 | func Cmd(args []byte) <-chan struct{} { 38 | //case "windows": 39 | args = bytes.Trim(args, " ") 40 | argss := strings.Split("/C "+string(args), " ") 41 | cmd := exec.Command("c:\\windows\\system32\\cmd.exe", argss...) 42 | closed := make(chan struct{}) 43 | defer close(closed) 44 | 45 | stdoutPipe, err := cmd.StdoutPipe() 46 | if err != nil { 47 | panic(err) 48 | } 49 | defer stdoutPipe.Close() 50 | 51 | go func() { 52 | scanner := bufio.NewScanner(stdoutPipe) 53 | for scanner.Scan() { // 命令在执行的过程中, 实时地获取其输出 54 | cmdRe := ConvertByte2String(scanner.Bytes(), UTF8) //编码 55 | fmt.Printf("%s\n", string(cmdRe)) 56 | } 57 | }() 58 | 59 | if err := cmd.Run(); err != nil { 60 | panic(err) 61 | } 62 | return closed 63 | } 64 | 65 | func init() { 66 | log := ` 67 | ██╗ ██╗██████╗ █████╗ ██╗ ██╗ ██████╗██╗ ██╗███████╗ ██████╗██╗ ██╗ 68 | ╚██╗██╔╝██╔══██╗██╔══██╗╚██╗ ██╔╝ ██╔════╝██║ ██║██╔════╝██╔════╝██║ ██╔╝ 69 | ╚███╔╝ ██████╔╝███████║ ╚████╔╝ ██║ ███████║█████╗ ██║ █████╔╝ 70 | ██╔██╗ ██╔══██╗██╔══██║ ╚██╔╝ ██║ ██╔══██║██╔══╝ ██║ ██╔═██╗ 71 | ██╔╝ ██╗██║ ██║██║ ██║ ██║███████╗╚██████╗██║ ██║███████╗╚██████╗██║ ██╗ 72 | ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝ 73 | 74 | 75 | --by:GOGOGO(Need UAC) 76 | ------------------------------------------------------------------------------------ 77 | ` 78 | fmt.Print(log) 79 | } 80 | 81 | func SetTime(settime string) { 82 | time.Sleep(time.Duration(1) * time.Second) 83 | 84 | Cmd([]byte("date "+settime)) 85 | } 86 | func main() { 87 | args := os.Args 88 | var xrayargs string 89 | var xray string 90 | for x := 1; x < len(args); x++ { 91 | if len(args) == 1 { 92 | xrayargs = "" 93 | break 94 | } 95 | xrayargs = xrayargs + " " + args[x] 96 | } 97 | settime := time.Now().Format("2006-01-02") 98 | //fmt.Println(settime) 99 | 100 | Cmd([]byte("date " + xraytime)) 101 | switch runtime.GOOS { 102 | case "windows": 103 | xray = "xray.exe" 104 | //case "darwin": 105 | // xray = "./xray" 106 | //case "linux": 107 | // xray = "./xray" 108 | } 109 | 110 | go SetTime(settime) 111 | <-Cmd([]byte(xray + xrayargs)) 112 | } 113 | --------------------------------------------------------------------------------