生成日期:2026-03-14
| 项目 | 值 |
|---|
| 服务器 IP | 114.134.187.189 |
| SSH 用户名 | root |
| SSH 密码 | bcdpMYGF1913 |
| 操作系统 | Linux x86-64 |
| 管理面板 | 宝塔面板 (BT Panel) |
| 网站目录 | /www/wwwroot/XarrPay/ |
| 访问地址 | http://mode.byesmart.store:24017/ |
| 监听端口 | 24017(绑定 0.0.0.0) |
| 项目 | 值 |
|---|
| 数据库类型 | MySQL |
| 数据库地址 | 127.0.0.1:3306 |
| 数据库名 | xarrpay |
| 数据库用户 | XarrPay |
| 数据库密码 | 5852GnhTpaHzFzm7 |
| 连接字符串 | mysql:XarrPay:5852GnhTpaHzFzm7@tcp(127.0.0.1:3306)/xarrpay |
| SQL 导入文件 | /www/wwwroot/XarrPay/xarrpay_personal.sql(467行,已导入) |
| 文件路径 | 说明 |
|---|
xarr-pay | 主程序二进制(已打补丁,当前运行中) |
xarr-pay.original | 原始打包二进制备份 |
xarr-pay.packed | 原始打包二进制副本 |
xarr-pay.unpacked | UPX 解包后的原始二进制(25,782,343 字节) |
xarr-pay.crack | 仅含 IsLicense + checkAuth 补丁的版本(无时间炸弹修复) |
xarr-pay.md5 | MD5 校验文件(程序启动时会验证) |
config/config.yaml | 数据库及日志配置 |
config/install.txt | 安装状态标记文件 |
auth.txt | 加密授权数据(二进制) |
license.txt | 许可文件(内容:CarckFuckTheAuthImNbJWLGO) |
public/ | 前端静态文件(index.html, favicon.ico, static/) |
文件:/www/server/panel/vhost/nginx/go_run_sh.conf
将 mode.byesmart.store 的请求转发到 127.0.0.1:24017。
文件:/www/server/panel/vhost/nginx/fake_auth.conf
server {
listen 2418;
server_name _;
location / {
default_type application/json;
return 200 '{"code":0,"message":"success","data":{"auth_no":"LICENSED","status":1,"update":false,"version":"1.7.7","version_code":177}}';
}
}
注:此配置用于返回伪授权响应,但实际授权绕过主要依赖二进制补丁。宝塔面板可能会清理此配置,需注意。
程序原始授权机制:与 auth2.xarr.cn/api/app-auth 通过 RSA 加密通信验证授权。由于作者跑路,授权服务器已下线,因此通过二进制补丁绕过。
| 项目 | 值 |
|---|
| 虚拟地址 (VA) | 0xb48d40 |
| 文件偏移 (FO) | 0x748d40 |
| 函数大小 | 0x185 |
| 补丁内容 | 31 c0 31 db c3(xor eax,eax; xor ebx,ebx; ret → 返回 nil) |
| 作用 | 使授权检查始终返回"已授权" |
| 项目 | 值 |
|---|
| 虚拟地址 (VA) | 0xb5c1c0 |
| 文件偏移 (FO) | 0x75c1c0 |
| 函数大小 | 0x3f6 |
| 补丁内容 | c3(ret → 直接返回) |
| 作用 | 跳过与授权服务器的通信验证 |
| 项目 | 值 |
|---|
| 虚拟地址 (VA) | 0xb386ed |
| 文件偏移 (FO) | 0x7386ed |
| 原始指令 | 7e 6e(jle → 条件跳转) |
| 补丁内容 | eb 6e(jmp → 无条件跳转) |
| 时间炸弹值 | 0x697fcc36(对应 2026-02-21) |
| 作用 | 绕过过期时间检查,确保路由始终注册 |
关键说明:时间炸弹是导致所有 404 错误的根本原因。RegRouters 函数在启动时比较当前 Unix 时间戳与硬编码值 0x697fcc36,如果当前时间超过该值,函数直接返回而不注册任何路由。
文件偏移 = 虚拟地址 - 基地址(0x400000)
例:0xb48d40 - 0x400000 = 0x748d40
| 问题 | 原因 | 解决方案 |
|---|
| 数据库表不存在 (Error 1146) | 数据库为空 | 导入 xarrpay_personal.sql |
| 授权验证失败 | 授权服务器 auth2.xarr.cn 已下线 | 补丁 IsLicense + checkAuth |
| 所有路由返回 404 | 时间炸弹:程序过期后不注册路由 | 补丁 RegRouters 中的条件跳转 |
| Go 二进制不信任系统 CA | 静态链接,内置 CA 证书 | 放弃 MITM 方案,改用二进制补丁 |
| 宝塔 WAF 拦截 HTTP 请求 | 端口 80 的防火墙规则 | 使用独立端口 2418 |
printf '\xeb' 写入错误字节 | bash 通过 paramiko 的转义问题 | 改用 perl -e 直接写入精确字节 |
| SFTP 传输 25MB 文件超时 | 文件过大,网络不稳定 | 在服务器端用 perl 原地修改 |
| 程序启动时校验 MD5 | 内置自校验机制 | 每次修改后重新生成 xarr-pay.md5 |
| 首页提示"请使用授权的域名访问" | 数据库缺少 bind_domain 配置 | 在 options 表插入 bind_domain = mode.byesmart.store |
cd /www/wwwroot/XarrPay
nohup ./xarr-pay > /tmp/xarr-pay.log 2>&1 &
killall -9 xarr-pay
killall -9 xarr-pay
sleep 1
cd /www/wwwroot/XarrPay && nohup ./xarr-pay > /tmp/xarr-pay.log 2>&1 &
tail -f /tmp/xarr-pay.log
ps aux | grep xarr-pay
cd /www/wwwroot/XarrPay
md5sum xarr-pay | awk '{print $1}' > xarr-pay.md5
如果需要从原始二进制重新打补丁(例如恢复了备份),按以下步骤操作:
# 1. 从备份恢复解包后的二进制
cp /www/wwwroot/XarrPay/xarr-pay.unpacked /www/wwwroot/XarrPay/xarr-pay
# 2. 打补丁 - IsLicense (返回 nil)
perl -e 'open(F, "+<", "/www/wwwroot/XarrPay/xarr-pay") or die;
binmode F; seek(F, 0x748d40, 0);
print F chr(0x31).chr(0xc0).chr(0x31).chr(0xdb).chr(0xc3); close F;'
# 3. 打补丁 - checkAuth (直接返回)
perl -e 'open(F, "+<", "/www/wwwroot/XarrPay/xarr-pay") or die;
binmode F; seek(F, 0x75c1c0, 0);
print F chr(0xc3); close F;'
# 4. 打补丁 - RegRouters 时间炸弹 (无条件跳转)
perl -e 'open(F, "+<", "/www/wwwroot/XarrPay/xarr-pay") or die;
binmode F; seek(F, 0x7386ed, 0);
print F chr(0xeb).chr(0x6e); close F;'
# 5. 更新 MD5
cd /www/wwwroot/XarrPay
md5sum xarr-pay | awk '{print $1}' > xarr-pay.md5
# 6. 重启服务
killall -9 xarr-pay
sleep 1
nohup ./xarr-pay > /tmp/xarr-pay.log 2>&1 &
| 函数名 | 虚拟地址 | 文件偏移 | 说明 |
|---|
IsLicense | 0xb48d40 | 0x748d40 | 授权状态检查 |
checkAuth | 0xb5c1c0 | 0x75c1c0 | 与授权服务器通信 |
CtxCheckAuth | 0xb5b3a0 | 0x75b3a0 | 中间件,调用 IsLicense |
RegRouters | 0xb386c0 | 0x7386c0 | 路由注册(含时间炸弹) |
AppAuth | 0xb483c0 | 0x7483c0 | 应用授权处理 |
IsInstall | 0xb59500 | 0x759500 | 检查安装状态 |
| 全局变量 | 虚拟地址 | 说明 |
|---|
AuthInfo | 0x14fdd50 | 授权信息结构体 |
ProgramMd5 | 0x153c480 | 程序 MD5 校验值 |
- 宝塔面板可能清理自定义 Nginx 配置:
fake_auth.conf 可能被删除,需要注意检查 - 程序自校验 MD5:每次修改二进制后必须更新
xarr-pay.md5 - Go 二进制为静态链接:不依赖系统动态库,但也不信任系统 CA 证书
- 原始二进制已备份:
xarr-pay.original(打包版)和 xarr-pay.unpacked(解包版) - 服务器重启后需手动启动:建议配置宝塔面板的开机自启或 systemd 服务