引出问题:
比如我们想了解这种全局变量定义方式,常量的0x48494a4b4c4d4e4f的存储位置
解决办法:
可以做个如下方式的实现:
[Lua] 纯文本查看 复制代码 local ok
local bytes
local s
local i
local x
local y
local addr
local rec
local status
function printf(...)
print(string.format(...))
end
beep()
status = 0
pg_init(0)
-- 根据需要设置检索的地址和范围,我们这里是检索的地址0x08000000的1MB空间
for i=0,1023,1 do
ok,bytes = pg_read_mem(0x08000000+i*1024, 1024)
rec = i
if(ok == 1) then
-- 查找字符,返回值x是起始位置,y是结束位置
x, y = string.find(bytes,"\x4F\x4E\x4D\x4C\x4B\x4A\x49\x48")
if(x ~= nil) then
printf("找到了")
status = 1
printf("x=%d, y=%d", x, y)
break
end
end
end
if(status == 1) then
-- 最终的位置
addr = rec*1024 + x + 0x08000000 - 1
ok,bytes = pg_read_mem(addr, y-x+1) -- 读取字符
printf("字符地址 = 0x%x", addr)
print_hex(bytes)
else
printf("没有找到对应字符")
end
效果:
|