Lua 代码:获取内存地址并修改值 (S_Pointer 函数)
Lua 代码:获取内存地址并修改值 (S_Pointer 函数)
该代码实现了一个名为 S_Pointer 的 Lua 函数,用于根据指定的 so 库名、偏移量和位数来获取内存地址。同时,还提供了一个 setvalue 函数,用于修改该地址的值。
S_Pointer 函数
function S_Pointer(t_So, t_Offset, _bit)
local function getRanges()
local ranges = {}
local t = gg.getRangesList('^/data/*.so*$')
for i, v in ipairs(t) do
if v.type:sub(2, 2) == 'w' then
table.insert(ranges, v)
end
end
return ranges
end
local function Get_Address(N_So, Offset, ti_bit)
local ti = gg.getTargetInfo()
local S_list = getRanges()
local _Q = tonumber(0x167ba0fe)
local t = {}
local _S = nil
if ti_bit then
_t = 32
else
_t = 4
end
for i, v in ipairs(S_list) do
local _N = S_list[i].internalName:gsub('^.*/', '')
if N_So[1] == _N and N_So[2] == S_list[i].state then
_S = S_list[i]
break
end
end
if _S then
t[#t + 1] = {}
t[#t].address = _S.start + Offset[1]
t[#t].flags = _t
if #Offset > 1 then
for i = 2, #Offset do
local S = gg.getValues(t)
t = {}
for j, v in ipairs(S) do
if not ti.x64 then
S[j].value = S[j].value & 0xFFFFFFFF
end
t[#t + 1] = {}
t[#t].address = S[j].value + Offset[i]
t[#t].flags = _t
end
end
end
_S = t[#t].address
end
return _S
end
local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
return _A
end
setvalue 函数
function setvalue(address, flags, value)
local tt = {{}}
tt[1].address = address
tt[1].flags = flags
tt[1].value = value
gg.setValues(tt)
end
代码分析
-
S_Pointer函数:getRanges()函数: 获取所有以 'w' 开头的 so 库文件,并返回一个包含这些库文件信息的表格。Get_Address()函数: 根据指定的 so 库名、偏移量和位数,从getRanges()返回的表格中找到对应的库文件,并计算出最终的内存地址。- 该函数返回最终计算得到的内存地址,以十六进制字符串形式表示。
-
setvalue函数:- 该函数接受三个参数:
address(内存地址)、flags(内存地址类型) 和value(要设置的值)。 - 该函数使用
gg.setValues()函数将指定的内存地址修改为指定的值。
- 该函数接受三个参数:
使用说明
- 将以上代码复制到一个 Lua 文件中。
- 加载该 Lua 文件到你的游戏或软件中。
- 调用
S_Pointer函数来获取内存地址,例如:local address = S_Pointer({"game.so", "running"}, {0x100, 0x20}, false)- 第一个参数
{"game.so", "running"}表示要查找的 so 库文件,其中game.so是库文件名,running是库文件的状态。 - 第二个参数
{0x100, 0x20}表示要使用的偏移量。 - 第三个参数
false表示内存地址类型为 32 位。
- 第一个参数
- 调用
setvalue函数来修改内存地址的值,例如:setvalue(address, 32, 0x12345678)
注意
- 该代码需要使用
gg库。 - 偏移量需要根据目标游戏或软件进行调整。
- 确保你对代码的功能和安全性有足够的了解,并谨慎使用。
原文地址: https://www.cveoy.top/t/topic/o2bD 著作权归作者所有。请勿转载和采集!