冰炎梦幻 发表于 2026-9-13 23:12

一次建立本地MySQL破解某联网软件认证

写在前面:
圈子里一个朋友写了一个看数据的工具。对于自己修改某街机游戏非常强大。
工具做了一个联网验证,导致本身是单机的工具得联网才可以使用。换电脑也很麻烦(有多台终端希望能使用该工具)。
作为菜鸟心心念念想破解,可一看VMP就知道自己还是靠边呆着。脑袋一歪想起来邪修方法,还真让自己给蒙对了。
——————————————————————————————————————————————————————
1.该工具有两个执行程序。授权工具和执行主程序。
其实破解后发现了一些事情:授权工具仅仅使用登录账户用于用于变更于本地绑定的授权码等号码管理信息。
主程序根据config.ini中的用户名和授权码与服务器爬下来的信息对比,成功则进入GUI,否则关闭。不验证密码。


2.用wireshark抓DNS得到服务器域名和IP。最终截取数据包。
开启wireshark抓互联网传输,过滤器填DNS,

抓IP.addr ==122.192.154.119得到端口为12000

于是继续IP.addr ==122.192.154.119 and tcp.port == 12000
通过端口抓到了PSH_ACK流量,追踪后得到打开软件的自动与远程服务器的流量交互。


很幸运,完全是明文交互。从内容中可以看到远程服务器是乌班图系统下的MySQL5.7.30。并且使用root连接了viptool数据库,查询了库下一个information的数据表。
我有账号点击登录。继续抓取PSH_ACK并追踪。登录成功后得到:
[...
5.7.30-0ubuntu0.18.04.1.....H.*e.;lM..................._B%\.4PuG1.D.mysql_native_password.B..........@........................root.........|z..4.eE.....viptool............-....SELECT * FROM vip WHERE UserName= 'iceflame'...../....def.viptool.vip.vip.UserID.UserID.?.......P...3....def.viptool.vip.vip.UserName.UserName.............3....def.viptool.vip.vip.Password.Password.............3....def.viptool.vip.vip.AuthCode.AuthCode.............?....def.viptool.vip.vip.ExpireDateTime.ExpireDateTime.?...........5....def.viptool.vip.vip      AuthLevel      AuthLevel.?.........../....def.viptool.vip.vip.Credit.Credit.?...........G..      .def.viptool.vip.vip.LastChangeDateTime.LastChangeDateTime.?...........E..
.def.viptool.vip.vip.LastLoginDateTime.LastLoginDateTime.?...........G....def.viptool.vip.vip.LastActiveDateTime.LastActiveDateTime.?...........7....def.viptool.vip.vip
AllowLogin
AllowLogin.?...........9..
.def.viptool.vip.vip.AllowActive.AllowActive.?...........=....def.viptool.vip.vip
ActiveCounter
ActiveCounter.?.........../....def.viptool.vip.vip.Remark.Remark...................."......9.iceflame 81DC9BDB52D04DC20036DBD8313ED055.B15D360A99B87FB7.9999-02-15 12:00:00.2.5.2026-09-10 15:55:28.2026-09-10 15:55:28.2026-09-08 20:26:20.1.1.590f|454B9468EB821F73|26FE9E61C04E84D2|454B9468EB821F73|26FE9E61C04E84D2|E0A0F435EDBC95B3|B15D360A99B87FB7.......".n....UPDATE vip set LastLoginDateTime='2026-9-13 21:8:4'WHERE UserName= 'iceflame' and AuthCode='B15D360A99B87FB7'0......"...(Rows matched: 1Changed: 1Warnings: 0T....UPDATE vip set Credit='5'WHERE UserName= 'iceflame' and AuthCode='B15D360A99B87FB7'0......"...(Rows matched: 1Changed: 0Warnings: 0.....

使用root连接服务器查询viptool里vip表中iceflame的所有信息。可以看到所有字段了。
————————————————————————————————————————
3.接下来先屏蔽服务器
hosts文件加入
127.0.0.1       frp-cat.com
此时可以发现授权工具已经连接不上服务器了。

4.于是寻找一个轻量MySQL做假服务器
起初选择了https://www.52pojie.cn/thread-1802354-1-1.html中的5.7.38,但是发现有300M以上。太庞大了。
在论坛搜索后找到了https://www.52pojie.cn/thread-1202642-1-1.html。解压后仅仅30M+。
首先因为不知道root密码,便在my.ini中应该将MySQL的密码设空或允许跳过,同时设置对应端口是12000而不是默认的3306。

之后登入MySQL根据得到的信息建库建表。
mysql -u root -P 12000 -h 127.0.0.1
让AI写了建立库的指令。
CREATE DATABASE viptool CHARACTER SET utf8 COLLATE utf8_general_ci;

USE viptool;

因为要查information表,同步先新建一个information表,但可以不需要担心添加哪些表头内容。
CREATE TABLE information (
    id INT PRIMARY KEY AUTO_INCREMENT,
    -- 根据你的业务需求添加字段
    -- 示例字段:
    name VARCHAR(255),
    description TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
再建立一个vip表。这个很重要,根据数据包的信息得到了表的结构,于是依次写下:
CREATE TABLE vip (
    UserID INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
    UserName VARCHAR(50) NOT NULL COMMENT '用户名',
    Password VARCHAR(255) NOT NULL COMMENT '密码(MD5)',
    AuthCode VARCHAR(255) COMMENT '认证码',
    ExpireDateTime DATETIME COMMENT '过期时间',
    AuthLevel INT(11) DEFAULT 0 COMMENT '权限等级',
    Credit INT(11) DEFAULT 0 COMMENT '信用分',
    LastChangeDateTime DATETIME COMMENT '上次修改时间',
    LastLoginDateTime DATETIME COMMENT '上次登录时间',
    LastActiveDateTime DATETIME COMMENT '上次活跃时间',
    AllowLogin INT(71) DEFAULT 1 COMMENT '是否允许登录',
    AllowActive INT(1) DEFAULT 1 COMMENT '是否允许活跃',
    ActiveCounter INT(11) DEFAULT 0 COMMENT '活跃计数器',
    Remark TEXT,
    PRIMARY KEY (UserID),
    UNIQUE KEY (UserName)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO vip (
    UserName,
    Password,
    AuthCode,
    ExpireDateTime,
    AuthLevel,
    Credit,
    LastChangeDateTime,
    LastLoginDateTime,
    LastActiveDateTime,
    AllowLogin,
    AllowActive,
    ActiveCounter,
      Remark
) VALUES (
    'iceflame',
    '81DC9BDB52D04DC20036DBD8313ED055',
    'B15D360A99B87FB7',
    '9999-02-15 12:00:00',
    3,
    89,
    '2024-04-04 11:54:00',
    '2026-09-07 09:58:59',
    '2026-09-07 09:40:57',
    1,
    1,
    582,
    '|5AAAF80A93FCE47D'      
);


数据库建立完成后可以看到授权工具已经可以登录了。打开登录。MD5解密是1234。


登录后若发现授权码不对,可以使用工具变更,变更次数在自己的数据库做了修改。当然服务器上也可以自己用root更新。更新后授权码匹配。自己增加用户也没有问题。
主程序查询到信息匹配,也可以打开了。

PS:
可惜我并不会逆向程序。授权工具不会脱壳,主程序没壳也不会逆向让他变成单机。完全靠运气搞成了这次破解。希望给和我一样的小白一点思路罢。
献丑了,谢谢大家能看完。


不苦小和尚 发表于 2026-9-14 06:30

还能抓到用户名密码

jxsdxxf 发表于 2026-9-14 10:30

居然有明文的数据库IP和root密码??那你为什么不直接连进人家的库里看数据结构和数据哈。。。。直接给自己加用户就好了。。。。一般应该是访问一个网页,网页里再写相应的查询回调结果吧

fkeuaii 发表于 2026-9-13 23:21

这个游戏从同年玩到现在,感谢。

puyang525 发表于 2026-9-14 01:35

本地数据库的工具还是很重要的。不过数据在本地还是很好解决

LinBo2009 发表于 2026-9-14 06:21

好详细的攻略

flybird1015 发表于 2026-9-14 07:07

讲解非常详细,也值得我们学习。

xx2014 发表于 2026-9-14 08:23

太优秀了,学习下

shaotingqiang 发表于 2026-9-14 08:28

不明觉厉!!!!

markhoo911 发表于 2026-9-14 08:43

用SQLite应该没啥问题,只是保存简单的数据。非常轻量

akr1982 发表于 2026-9-14 08:52

学习了~~~辛苦详解!!拜服!
页: [1] 2 3 4
查看完整版本: 一次建立本地MySQL破解某联网软件认证