Gmsv 很轻松就找到了所谓的升级公式



  • 具体过程如下
    用IDA载入gmsv
    分析完成后进入Exports选项卡
    由于是和等级有关的经验 所以直接搜索levelexp
    很轻松找到一个名为CHAR_GetLevelExp的子程序
    直接双击转入
    程序很短 具体如下
    push ebp
    mov ebp, esp
    mov edx, [ebp+arg_0]
    cmp edx, 78h ;注意这里的78h 即10进制的120 意思是用当前等级和120比较 大于则跳转
    jbe short loc_80740C0
    正常跳转后转入
    cmp edx, 82h ;同上比较当前等级和130 (设置为你服务器的等级上限)如果不超过130则跳转到正确的等级经验转换公式部分
    jg short loc_80740B
    正常跳转后转入
    mov eax, edx
    imul eax, edx ;意义为把eax*edx结果寸入eax
    imul eax, edx;同上
    imul eax, edx;同上
    上sina专区查了魔力的等级经验公式为当前等级+1的4次方 正好如上
    所以想改公式的话直接改这里
    三条imul eax, edx命令对应的机器码为0F AF C2
    例如这样改
    用UE直接修改把3条0F AF C2都改为90 90 90(即无效)
    所以升级经验即为你当前等级+1 也就是说130级的经验为131
    cmp edx, 78h ;把下一等级跟120做比较
    jbe short loc_80740C0 如果小于等于120则跳转到GMSV中经验数值的字节部分(即我们手动修改的经验)

    **正常跳转后转入
    cmp edx, 82h ;同上比较当前等级和130 (设置为你服务器的等级上限)如果不超过130则跳转到正确的等级经验转换公式部分
    jg short loc_80740B

    请注意这里是在讨论130以后的升级经验公式 我没必要把另外的跳转转入默认的经验分配之间的细节再拿出来讨论 当前所模拟的也正是130后的等级经验**
    **cmp edx, 82h ;同上比较当前等级和130 (设置为你服务器的等级上限)如果不超过130则跳转到正确的等级经验转换公式部分
    jg short loc_80740B

    请问我这句"同上比较当前等级和130 (设置为你服务器的等级上限)如果不超过130则跳转到正确的等级经验转换公式部分"
    和你分析的有什么区别吗?
    不过是没有分析当等级超过设置的上限时
    mov eax, 0FFFFFFFFh
    jmp short locret_80740B6
    把-1返回给经验的部分罢了**



  • 收藏了~!不错



  • 不错不错,收藏看看!


登录后回复