冒险岛单机论坛,冒险岛交流论坛,最新冒险岛

 找回密码
 立即注册
查看: 5300|回复: 0

关于复制挂原理和服务端复制挂漏洞

[复制链接]
  • TA的每日心情
    开心
    2024-11-6 23:36
  • 签到天数: 319 天

    [LV.8]以坛为家I

    433

    主题

    856

    帖子

    8万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    85581
    发表于 2024-11-15 10:55:17 | 显示全部楼层 |阅读模式

    复制挂基本都是-1这个洞
    现在能复制的服很少了 但是原理很少有人提 或者有人说出
    还是那句话 都当宝贝 就这点东西全VMP了
    但VMP又咋了 我群人均手撕VMP3 脚踩OLLVM 拳打BE脚踢ACE 乱杀
    加壳也给你弄了

    总结 基本上都是  cm.gainItem这个函数闹的
    gainItem的设计本身就可以给玩家物品 但是也可以扣除物品
    所有-1的问题都是这里
    在很多服里面可以兑换复制 输入兑换数量
    正常输入是有限制的 只能为无符号整数 而且有数量大小限制
    只需要把这里强行修改成-1  最终--1即为正
    线程栈大概如下
    js  cm.gainItem

    1. public void gainItem(final int code, final int amount) {

    2.         MapleInventoryManipulator.addById(this.client, code, (short)amount, null);

    3.     }
    复制代码



    addById可变参数数量 最后走的是
    1. public static byte addId(final MapleClient c, final int itemId, short
    2. quantity, final String owner, final MaplePet pet, final long period,
    3. final boolean hours, final String gmLog) {
    复制代码


    具体没细看 因为没啥意义 函数本身设计就可以给东西
    客户端上 具体的推送在这里
    mov eax, [ebp - 1C]
    push[eax + 000000BC]

    eax的值不一定固定 很多挂都是选择hook 然后jmp到其他地方 重新push值进去
    实际上根本不需要那么麻烦 注册一个VEH 1字节hook即可 甚至都不需要重新push
    只需要在push之前 取寄存器然后寻址修改就OK
    没了 就这么简单
    修复办法更简单了
    脚本上直接abs取绝对值
    上一组修复前后对比图

    我是直接修改eac+bc里的值 推送过后
    有符号就是FFFFFFFFF

    兑换以后 原本物品会多出来 经验也会多出来

    cm.gainItem(4000029, -selection);
    cm.gainExp(2000*selection);


    脚本函数入口 加了abs以后的效果

    即便推送负数过来 也会被js脚本取绝对值 就没有后续了


    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    |网站地图

    免责声明:论坛资源来源网络公开渠道,如有侵权,请及时告知,联系删除! 邮箱: 3591663665@qq.com

    快速回复 返回顶部 返回列表