TA的每日心情 | 开心 2024-11-6 23:36 |
---|
签到天数: 319 天 [LV.8]以坛为家I
管理员
- 积分
- 85557
|
复制挂基本都是-1这个洞
现在能复制的服很少了 但是原理很少有人提 或者有人说出
还是那句话 都当宝贝 就这点东西全VMP了
但VMP又咋了 我群人均手撕VMP3 脚踩OLLVM 拳打BE脚踢ACE 乱杀
加壳也给你弄了
总结 基本上都是 cm.gainItem这个函数闹的
gainItem的设计本身就可以给玩家物品 但是也可以扣除物品
所有-1的问题都是这里
在很多服里面可以兑换复制 输入兑换数量
正常输入是有限制的 只能为无符号整数 而且有数量大小限制
只需要把这里强行修改成-1 最终--1即为正
线程栈大概如下
js cm.gainItem
- public void gainItem(final int code, final int amount) {
- MapleInventoryManipulator.addById(this.client, code, (short)amount, null);
- }
复制代码
addById可变参数数量 最后走的是
- public static byte addId(final MapleClient c, final int itemId, short
- quantity, final String owner, final MaplePet pet, final long period,
- 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脚本取绝对值 就没有后续了
|
|