Конкатенация AOB в Lua - PullRequest
       37

Конкатенация AOB в Lua

1 голос
/ 05 апреля 2020

Я могу получить AOB из 4-байтового значения (DWORD), используя эту функцию на Cheat Engine Lua:

local bt = dwordToByteTable(1075734118)
for i, v in ipairs(bt) do
  print(i, string.format('%02x', v))
end

result = [[
1 66 
2 66 
3 1e 
4 40 
]]

, но я хочу получить результат как '66 66 1e 40'.

  1. Как установить регулярное выражение для этого?
  2. Если у меня есть такая таблица:

    cd = {1075734118, 1075734118, 1075996262, 1076953088, 1076651622, 1076953088 , 1076835123}

Как получить AOB для каждого элемента в таблице с выводом № 1?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Попробуйте этот код:

print((string.format("%08x",1075734118):reverse():gsub("(.)(.)","%2%1 ")))
0 голосов
/ 05 апреля 2020

Найденное решение:

cd = { 1075734118, 1075734118, 1075996262, 1076953088, 1076651622, 1076953088, 1076835123 }

function byte2aob(b) return type(b)=='number' and b<256 and b>=0 and string.format('%02X',b) or '??' end
function aob2byte(a) a = tonumber(a,16) return type(a)=='number' and a <256 and a>=0 and a or -1 end
function imap(t,f) local s={} for i=1,#t do s[i]=f(t[i]) end return s end
function n2bt(n,t) t=type(t)=='string' and t or 'dword'  return rawget(_G,t..'ToByteTable')(n) end
function t2aob(t,sep) return table.concat(imap(t,byte2aob),type(sep)=='string' and sep or ' ') end
function n2aob(n,t) return t2aob(n2bt(n,t)) end

for i = 1, #cd do
 print(n2aob(cd[i],'dword'))
end

result = [[
66 66 1E 40 
66 66 1E 40 
66 66 22 40 
00 00 31 40 
66 66 2C 40 
00 00 31 40 
33 33 2F 40 
]]
...