XRAY CRACKER
生成证书
使用 -g username 生成永久证书
./xray-cracker -g kali
证书已写入文件:xray-license.lic
破解 xray
目前 PubKey 是加密过的,加密算法很简单,但是那个函数是硬编码了几百个局部变量,替换一波后,两个一对进行加、减、异或等操作进行还原,看样子是用代码生成的加密函数代码然后编译的,如果花时间在这上面可能是个死局,因为可以在每一次编译前都重新生成一下代码
所以我选择从其他地方入手,很明显公钥是用来验证签名的,如此看来直接修改签名验证函数的返回值就行,golang 中 VerifyPSS 返回一个 err,如果err==nil就代表签名没问题,放在汇编里就是 test 某寄存器 然后 setz或setnz,改一下就行
使用 -c path-to-xray 自动patch二进制xray
./xray-crack.exe -c xray_linux_amd64
linux amd64
[.text] offset: 0x1000, addr: 0x401000-0x11787e3
Signature last index: 0xae2f2e
Patch success: xray_linux_amd64
破解效果
使用修改版 xray 和永久证书后,效果如下
./xray_linux_amd64 version
____ .___. __. ..
\ / /_ __ \ / _ \ _ | |
\ / | _ / / /\ \ / | |
/ \ | | / | \ _ |
_/\ \ || /_| / / _____/
_/ _/ _/ /
Version: 1.3.3/1d166d72/COMMUNITY-ADVANCED
Licensed to kali, license is valid until 2099-09-08 19:00:00
[INFO] 2020-09-29 00:20:20 [default:entry.go:122] set file descriptor limit to 10000
[INFO] 2020-09-29 00:20:20 [default:entry.go:157] loading config file from /home/kali/tools/scan/xray/config.yaml
[xray 1.3.3/1d166d72]
Build: [2020-09-17] [linux/amd64] [RELEASE/COMMUNITY-ADVANCED]
Compiler Version: go version go1.14.4 linux/amd64
License ID: 00000000000000000000000000000000
User Name: kali/00000000000000000000000000000000
Not Valid Before: 2020-06-11 12:00:00
Not Valid After: 2099-09-08 19:00:00
To show open source licenses, please use osslicense
sub-command.
go run main.go -g xxxx
go run main.go -c xray的路径
OVER 最新版本也是可以的
D:\xray
λ D:\xray\xray.exe
____ .___. __. ..
\ / /_ __ \ / _ \ _ | |
\ / | _ / / /\ \ / | |
/ \ | | / | \ _ |
_/\ \ || /_| / / _____/
_/ _/ _/ /
Version: 1.3.3/1d166d72/COMMUNITY-ADVANCED
Licensed to nuclearton, license is valid until 2099-09-09 08:00:00
[INFO] 2020-10-20 22:05:11 [default:entry.go:157] loading config file from D:\xray\config.yaml
NAME:
xray - A powerful scanner engine [https://docs.xray.cool]
USAGE:
[global options] command [command options] [arguments...]
COMMANDS:
webscan Run a webscan task