惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
V
V2EX
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
Martin Fowler
Martin Fowler
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
The Cloudflare Blog
T
Tailwind CSS Blog
H
Help Net Security
腾讯CDC
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
Stack Overflow Blog
Stack Overflow Blog
D
DataBreaches.Net
C
Check Point Blog
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - 我爱我家喵喵

LookImage2:用 Rust 打造的轻量级专业图像查看器 bat以隐藏模式运行jar包 [Docker] 部署 Nexus Repository OSS 仓库 [docker] 部署 AnythingLLM [nginx] 使用nginx代理实现Ollama支持本地html访问 [docker] 部署 Seata 分布式事务 [docker] 部署 Nacos 服务 CEF 谷歌内核下载地址 [Delphi] 自带皮肤动态切换 [VUE] WebPack 打包后自动修改 dist 中 package.json 版本号 【算法】python版A-Star(A星)寻路 【算法】决策树算法:ID3 【算法】K-means 算法学习 【Unity】使用VSCode调试 [Python] 基于 flask 构建 Web API 实现参数注入和校验 [Redis] 解决多个 Redis 服务同步删除有关联的 key [C#] JavaScript 引擎 [MySql] 数据库死锁的排查和相关知识 [redis] 设置密码 [Java] 扩展 Jackson 的 TypeReference 支持泛型参数传递
完美单机155端gs修改:允许10次转生
我爱我家喵喵 · 2025-09-15 · via 博客园 - 我爱我家喵喵

最近找了一个单机版155端,看到某个SF支持10次转生,但本身155版只支持2次转生。
好奇之下就研究了一下GS修改,居然找到的S端源码,虽然有点老,但参考之下修改成功了。

使用IDA打开 gs 文件,要修改2处。

修改第1处:

.text:0821E97C ; ---------------------------------------------------------------------------
.text:0821E97C
.text:0821E97C loc_821E97C:                            ; CODE XREF: player_reincarnation::CheckCondition(void)+36↑j
.text:0821E97C                 sub     esp, 0Ch
.text:0821E97F                 push    [ebp+arg_0]     ; this
.text:0821E982                 call    _ZN20player_reincarnation8GetTimesEv ; player_reincarnation::GetTimes(void)
.text:0821E987                 add     esp, 10h
// 源码是 if(GetTimes() >= REINCARNATION_TIMES_LIMIT) return false; 
// 编译后优化为了 > 1 就返回 false
// 需要将这里的 cmp eax, 1 改为 cmp eax, 9
.text:0821E98A                 cmp     eax, 1  
.text:0821E98D                 jbe     short loc_821E998
.text:0821E98F                 mov     [ebp+var_10], 0
.text:0821E996                 jmp     short loc_821E9FD
.text:0821E998 ; ---------------------------------------------------------------------------

用16进制编译器定位到 0x0821E98A - 0x08048000 = 0x1D698A 处,将
75 08 E8 B9 34 E4 FF 83 C4 10 83 F8 01 改为
75 08 E8 B9 34 E4 FF 83 C4 10 83 F8 09

修改第2处:

.text:0821EFF3 loc_821EFF3:                            ; CODE XREF: player_reincarnation::CheckActivateTome(void)+33↑j
.text:0821EFF3                 sub     esp, 0Ch
.text:0821EFF6                 push    [ebp+this]
.text:0821EFF9                 call    _ZNK5abase6vectorIN20player_reincarnation6RecordENS_13default_allocEE4sizeEv ; abase::vector<player_reincarnation::Record,abase::default_alloc>::size(void)
.text:0821EFFE                 add     esp, 10h
// 源码是 if(_records.size() == REINCARNATION_TIMES_LIMIT) 
// 所以将这里的 cmp eax, 2 改为 cmp eax, 0xA
.text:0821F001                 cmp     eax, 2
.text:0821F004                 jnz     short loc_821F05E
.text:0821F006                 mov     [ebp+var_5], 1
.text:0821F00A                 mov     [ebp+var_C], 0

用16进制编译器定位到 0x0821F001 - 0x08048000 = 0x1D7001 处,将
10 83 F8 02 75 58 C6 45 FB 01 C7 45 F4 00 00 00 改为
10 83 F8 0A 75 58 C6 45 FB 01 C7 45 F4 00 00 00

客户端不知道要不要修改,我直接用某SF的文件就成了。