找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 245|回复: 14

「分享」Frida 插件实现黄金品级调整箱

[复制链接]
发表于 昨天 14:29 | 显示全部楼层 |阅读模式
RT,frida 代码
//获取道具附加信息
// 整数,表示道具的品级或数量 - 如果是装备,则返回品级;如果是其他类型道具,则返回数量。
var Inven_Item_get_add_info = new NativeFunction(ptr(0x80F783A), 'int', ['pointer'], {"abi": "sysv"});
// 设置道具附加信息
// 整数,表示要设置的品级或数量 如果是装备,则设置品级;如果是其他类型道具,则设置数量。
var Inven_Item_set_add_info = new NativeFunction(ptr(0x80CB884), 'int', ['pointer', 'int'], {"abi": "sysv"});
// SEND nexon_packet::stLogin login:3 AccLen:8 Acc:18000009 CharLen:6 Char:1990644916 Addr:29927616 canTry_:0 UserIdx:65538 m_id:18000009[enter _ModEquipableItemAttr::]
function _ModEquipableItemAttr() {
Interceptor.attach(ptr(0x8200B08), {
onEnter: function (args) {
this.user = args[1];
this.pack = ptr(args[2]);
var a = ptr(this.pack.add(20).readPointer());
this.itemSold = a.add(13).add(6).readShort();
this.equSold = a.add(13).add(0).readShort();
console.log('[enter _ModEquipableItemAttr::] itemSold ' + this.itemSold + ' equSold ' + this.equSold);
},
onLeave: function (retval) {
console.log('[leave _ModEquipableItemAttr::] ');
//获取角色背包
var inven = CUserCharacInfo_getCurCharacInvenW(this.user);
if (inven != null) {
console.log('[leave _ModEquipableItemAttr::] inven is not empty');
// 获取物品栏的道具
var ItemObj = CInventory_GetInvenRef(inven, INVENTORY_TYPE_ITEM, this.itemSold);
// 获取物品栏的装备
var equObj = CInventory_GetInvenRef(inven, INVENTORY_TYPE_ITEM, this.equSold);
// console.log('[leave _ModEquipableItemAttr::] item.id ' + Inven_Item_getKey(ItemObj));
// 897:解放的装备品级调整箱  15:装备品级调整箱
if (Inven_Item_getKey(ItemObj) == 897) {
// 设置装备平级最上级
Inven_Item_set_add_info(equObj, 999999998)
CUser_SendUpdateItemList(this.user, 1, 0, this.equSold);
}
}
}
});
}
效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复

使用道具 举报

4041

主题

3万

回帖

13万

积分

出神入化

积分
130452
发表于 昨天 14:29 | 显示全部楼层
开始解析数据前最好判断一下一些状态,解析过
程中也是,最好还得判断一下物品数量是否足够什么的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4506

主题

4万

回帖

14万

积分

出神入化

积分
140985
发表于 昨天 14:30 | 显示全部楼层
666666
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4531

主题

4万

回帖

13万

积分

管理员

积分
139501
发表于 昨天 14:31 | 显示全部楼层
很强

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4506

主题

4万

回帖

14万

积分

出神入化

积分
140985
发表于 昨天 14:32 | 显示全部楼层
我要使用背包编辑工具,把一个装备设置成满属性,是不是直接在品级那里写999999998?
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4609

主题

4万

回帖

14万

积分

出神入化

积分
142480
发表于 昨天 14:32 | 显示全部楼层
大佬如果可以还是建议吧多彩蜜蜡改跨界石给合并了,不然会报错
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4058

主题

3万

回帖

13万

积分

出神入化

积分
130706
发表于 昨天 14:33 | 显示全部楼层
挂上了没效果呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4770

主题

4万

回帖

14万

积分

出神入化

积分
142926
发表于 昨天 14:33 | 显示全部楼层
感谢分享~
顺带一提如果要用背包工具直接改品级的话,代码应该是 4274625083

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4667

主题

4万

回帖

14万

积分

出神入化

积分
142952
发表于 昨天 14:34 | 显示全部楼层
感谢大佬分享,有个问题。。如果有多个897道具的情况下,函数逻辑能正常触发,如果剩最后一个的时候就不能正常触发了
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

3987

主题

3万

回帖

13万

积分

出神入化

积分
130038
发表于 昨天 14:35 | 显示全部楼层
调整之后镶嵌会消失,需要点刷新才能恢复。目前没有找到好的方法让他实时刷新
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 14:36 | 显示全部楼层
添加了非空判断,刷新避免镶嵌消失

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4667

主题

4万

回帖

14万

积分

出神入化

积分
142952
发表于 昨天 14:36 | 显示全部楼层
以下是我找豆包改的代码,解决剩余1个道具时函数逻辑不生效的情况。我还加了一个发送消息,当时测试时看发没发送消息就知道函数逻辑是否被正常触发了。另外我也没搞装备镶嵌,只用了时装镶嵌,所以也没用那条针对装备镶嵌的函数。再次感谢求实好学大佬。
function _ModEquipableItemAttr() {
Interceptor.attach(ptr(0x8200B08), {
onEnter: function (args) {
this.user = args[1];
this.pack = ptr(args[2]);
var a = ptr(this.pack.add(20).readPointer());
this.itemSold = a.add(13).add(6).readShort(); // 道具槽位
this.equSold = a.add(13).add(0).readShort(); // 装备槽位
},
onLeave: function (retval) {
var user = this.user;
var inven = CUserCharacInfo_getCurCharacInvenW(user);
if (inven != null) {
var ItemObj = CInventory_GetInvenRef(inven, INVENTORY_TYPE_ITEM, this.itemSold);
var isTargetItem = false;
if (Inven_Item_isEmpty(ItemObj)) {
var residualItemId = Inven_Item_getKey(ItemObj);
var hasUsed897 = CInventory_check_item_exist(inven, 897) === 0 ? false : true;
if (residualItemId === 897 || hasUsed897) {
isTargetItem = true;
} else {
return;
}
} else {
var itemId = Inven_Item_getKey(ItemObj);
if (itemId == 897) {
isTargetItem = true;
}
}
if (isTargetItem) {
var equObj = CInventory_GetInvenRef(inven, INVENTORY_TYPE_ITEM, this.equSold);
if (!Inven_Item_isEmpty(equObj)) {
Inven_Item_set_add_info(equObj, 999999998);
CUser_SendUpdateItemList(user, 1, 0, this.equSold);
api_CUser_SendNotiPacketMessage(user, "樯哥提醒:使用黄金装备调整箱调整装备品级成功。", 6);
}
}
}
}
});
}
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

3987

主题

3万

回帖

13万

积分

出神入化

积分
130038
发表于 昨天 14:36 | 显示全部楼层
经过木青大佬提醒,将attach 改为replace 然后用原本的返回函数Dispatcher_ModItemAttr__SendResult(a1,CUser,2,ItemSlot,EquSlot);就可以解决镶嵌信息不刷新的问题了,并且也方便合并跨界石内容。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4770

主题

4万

回帖

14万

积分

出神入化

积分
142926
发表于 昨天 14:37 | 显示全部楼层
无敌了
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

4058

主题

3万

回帖

13万

积分

出神入化

积分
130706
发表于 昨天 14:37 | 显示全部楼层
感谢,马克一下
阿荣社区欢迎你(bbs.vul7.com)
回复 支持 反对

使用道具 举报

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

本版积分规则

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