找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 409|回复: 7

求fri的下线卡镇魂修复

[复制链接]

4595

主题

4万

回帖

14万

积分

出神入化

积分
141671
发表于 2025-10-4 17:22:42 | 显示全部楼层 |阅读模式
大佬们,求一份fri的下线卡镇魂修复代码,谢谢
阿荣社区欢迎你(bbs.vul7.com)
回复

使用道具 举报

4590

主题

4万

回帖

14万

积分

出神入化

积分
140274
发表于 2025-10-4 17:23:12 | 显示全部楼层
AI写的,我测试了一下,应该可以的

本帖子中包含更多资源

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

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

使用道具 举报

4590

主题

4万

回帖

14万

积分

出神入化

积分
140274
发表于 2025-10-4 17:23:47 | 显示全部楼层
不是这样吗?你给的等级补丁是工业基地下线直接回到修南的赛丽亚房间,但是没上墙角。然后我用我的frida 之后,是可以让他保留在工业基地的赛丽亚房间的

本帖子中包含更多资源

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

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

使用道具 举报

4590

主题

4万

回帖

14万

积分

出神入化

积分
140274
发表于 2025-10-4 17:23:59 | 显示全部楼层
//修复卡镇魂
var setCharacInfoDetail = new NativeFunction(ptr(0x0864AC1A), "int", ["pointer", "int", "int", "pointer"], { abi: "sysv" });
function fix_SaveTown() {
Interceptor.replace(setCharacInfoDetail, new NativeCallback(function (pUser, a2, a3, pCHARAC_DATA) {
// 1. 缓存原始的城镇编号 (a4+34)
var curArea = Memory.readU8(pCHARAC_DATA.add(34));
console.log("curArea", curArea)//城镇编号
console.log("a2", a2)//第几个位置
console.log("a3", a3)//CID
console.log("pCHARAC_DATA", pCHARAC_DATA)//一个基址
// 2. 调用原函数
var result = setCharacInfoDetail(pUser, a2, a3, pCHARAC_DATA);
// 获取角色信息数组的地址 (this + 497384)
var vectorAddr = pUser.add(497384);
// 获取vector中的begin指针 (首个元素地址)
var begin = Memory.readPointer(vectorAddr);
// 手动计算元素大小(经验值,重要!)根据数据结构大小调整为4788(按IDA分析)
var CHARAC_INFO_SIZE = 5329; // 需根据版本验证,这里是关键偏移
// 计算第a2个角色的地址 = begin + a2 * 元素大小
var charInfoPtr = begin.add(a2 * CHARAC_INFO_SIZE);
console.log("charInfoPtr:", charInfoPtr)
// 修改城镇编号 (charInfoPtr + 34)
// 3. 如果是镇魂 (13) 或时间门 (12),强制修改为修南 (11)
if (curArea === 12 || curArea === 13) {
Memory.writeU8(charInfoPtr.add(34), 11); // 强制设成11
} if (curArea === 14) {
Memory.writeU8(charInfoPtr.add(34), 14); // 强制设成14
}
return result;
}, "int", ["pointer", "int", "int", "pointer"]));
}

本帖子中包含更多资源

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

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

使用道具 举报

4590

主题

4万

回帖

14万

积分

出神入化

积分
140274
发表于 2025-10-4 17:24:38 | 显示全部楼层
第三版
var setCharacInfoDetail = new NativeFunction(ptr(0x0864AC1A), "int", ["pointer", "int", "int", "pointer"], { abi: "sysv" });
function fix_SaveTown() {
Interceptor.replace(setCharacInfoDetail, new NativeCallback(function (pUser, a2, a3, pCHARAC_DATA) {
// 1. 在调用原函数前修改输入数据(更安全)
const AREA_OFFSET = 34;
var curArea = Memory.readU8(pCHARAC_DATA.add(AREA_OFFSET));
console.log("curArea", curArea)//城镇编号
console.log("a2", a2)//第几个位置
console.log("a3", a3)//CID
console.log("pCHARAC_DATA", pCHARAC_DATA)//一个基址
// 提前修改要保存的数据
if (curArea === 12 || curArea === 13) {
Memory.writeU8(pCHARAC_DATA.add(AREA_OFFSET), 11); // 修南
} else if (curArea === 14) {
Memory.writeU8(pCHARAC_DATA.add(AREA_OFFSET), 14); // 工业基地
}
// 2. 安全调用原函数
var result = setCharacInfoDetail(pUser, a2, a3, pCHARAC_DATA);
// 3. 移除后续危险的内存操作
return result;
}, "int", ["pointer", "int", "int", "pointer"]));
}

本帖子中包含更多资源

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

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

使用道具 举报

4595

主题

4万

回帖

14万

积分

出神入化

积分
141671
 楼主| 发表于 2025-10-4 17:25:30 | 显示全部楼层

我工业区下线,上线后,输出看到是执行到了下面的逻辑,但是上线后还是再镇魂

本帖子中包含更多资源

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

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

使用道具 举报

4595

主题

4万

回帖

14万

积分

出神入化

积分
141671
 楼主| 发表于 2025-10-4 17:25:59 | 显示全部楼层
我看了这个地方是14     Memory.writeU8后,上线还是卡镇魂的

本帖子中包含更多资源

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

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

使用道具 举报

4595

主题

4万

回帖

14万

积分

出神入化

积分
141671
 楼主| 发表于 2025-10-4 17:26:54 | 显示全部楼层

本帖子中包含更多资源

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

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

使用道具 举报

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

本版积分规则

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