local gg = gg -- 带符号偏移量转十六进制 function dz(i) return string.format("0x%X", i) end -- 优化后的B函数:修复end关键字语法错误,自动匹配SO库 function B(name, baseOffset, relativeOffset, val) -- 1. 获取搜索结果,无结果直接返回 local results = gg.getResults(gg.getResultsCount()) if #results == 0 then print(name .. ": 无有效搜索结果") return nil end -- 2. 计算基准地址 local baseAddress = results[1].address + baseOffset -- 3. 遍历内存区域,匹配baseAddress所属的SO库 local targetLib = nil local rangesList = gg.getRangesList() for _, v in ipairs(rangesList) do -- 核心修复:v["end"] 替代 v.end,避免关键字冲突 if baseAddress >= v.start and baseAddress <= v["end"] then targetLib = v break end end -- 4. 未匹配到SO库则返回nil if not targetLib then print(name .. ": 未找到基准地址所属的SO库") return nil end -- 5. 提取SO库名称(去掉路径)并计算最终偏移 local libName = targetLib.name:match("[^/]*$") local libStart = gg.getRangesList(libName)[1].start local finalAddress = baseAddress + relativeOffset - libStart local hexOffset = dz(finalAddress) --so=gg.getRangesList("libanogs.so")[1].start --py=0x229218 --setvalue(so+py,4,-698416192) -- 6. 输出格式化信息 print('so=gg.getRangesList("libanogs.so")[1].start') print('py='..hexOffset..'') print("setvalue(so+py,4,"..val..")") -- 7. 返回扩展信息和setvalue指令 return { hexOffset = hexOffset, libName = libName, libStart = libStart, calcCmd = string.format("so=gg.getRangesList('%s')[1].start\npy=%s\nsetvalue(so+py,4,VALUE)", libName, hexOffset) } end function A(searchValue, refineValue) gg.setRanges(gg.REGION_CODE_APP|gg.REGION_C_DATA) gg.clearResults() gg.searchNumber(searchValue, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) if refineValue then gg.refineNumber(refineValue, gg.TYPE_DWORD) end end A("-1258290765;-1258290989;960631816;872415304:73", "-1258290765") B("MinRangeTarget", 0, 0x204, -721215457) A("-1275068127;943723528;-1275068127;943723528:49", "-1275068127") B("MinRangeTarget", 0, 0x1A4, 335544329) A("960595560;960881929;960876808;889193960:125", "960595560") B("MinRangeTarget", 0, -0x13C, 1384120320) A("706675680;1384120747;706675680;706675681:89", "706675680") B("MinRangeTarget", 0, 0x4A4, 1384120320) A("1384120843;1384120651;1384121163;1384120683:97", "1384120843") B("MinRangeTarget", 0, 0x254, -698416192) A("1384120363;706675690;-1275066816;-1275067608:625", "1384120363") B("MinRangeTarget", 0, 0x134, -721215457) A("960499973;960500998;960502023;960503050:13", "960499973") B("MinRangeTarget", 0, 0x114, -721215457) A("-1275067424;-1275067455;943723786;905969610:21", "-1275067424") B("MinRangeTarget", 0, -0x5C, 335544329)