-- local function findLuaSrcHead(headStr,maxback) if type(headStr)=='number' and type(maxback)=='number' then -- recall mode local sLen = readInteger(headStr-maxback) local src = readString(headStr,sLen) if sLen~=nil and src~=nil and src:len()==sLen then return src else return print(string.format('Not match: sLen= %d, src:len()= %d',sLen or -1,src~=nil and src:len() or -1)) end end maxback = maxback or 128 headStr = {headStr:gsub('\n',string.char(13,10)):byte(1,-1)} local foundSome = false if #headStr>3 then local aob = {} for i=1,#headStr do aob[i]=string.format('%02X',headStr[i]) end aob = table.concat(aob,' ') print('Check aob: ',aob) aob = AOBScan(aob,'',1,'4') if aob~=nil then for k=1,aob.Count do local addr = tonumber(aob[k-1],16) for i=4,maxback,4 do local maybeLen = readInteger(addr-i) if maybeLen~=nil and maybeLen>3 then local src = readString(addr,maybeLen) if src~=nil and src:len()==maybeLen then print(string.format("Found possible, len=%6d, @ ( 0x%08X, %d )",maybeLen,addr,i)) foundSome = true end end end--for i end--for k aob.Destroy() end end if not foundSome then print('Not found.') end end return findLuaSrcHead