完美单机155端gs修改:允许10次转生

最近找了一个单机版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的文件就成了。

posted @ 2025-09-15 21:36  我爱我家喵喵  阅读(12)  评论(0)    收藏  举报