Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/lua
- if not arg or not arg[1] or arg[1] == "" or not arg[2] or arg[2] == "" then
- print("Usage: ./wasmdump.lua FILE OUTPUTDIR")
- return
- end
- local inputpath = arg[1]
- local outputpath = arg[2]:gsub("/$", "")
- local f = io.open(inputpath, "r")
- if not f then
- print("Failed to open file")
- return
- end
- local d = f:read("*a")
- f:close()
- if not d then
- print("Failed to read file")
- return
- end
- for s in d:gmatch('%(data ?%(i32.const %d+%)[\n\t ]*".-"[\n\t ]*%)') do
- local id = s:match('%(data ?%(i32.const (%d+)%)')
- print("Dumping "..id)
- local d2 = s:match('"(.-)"')
- d2 = d2:gsub('\\%x%x', function(s)
- return string.char(tonumber(s:sub(2), 16))
- end)
- local f = io.open(outputpath.."/"..id..".dat", "w+")
- if not f then
- print("Failed to open file")
- return
- end
- f:write(d2)
- f:close()
- end
Add Comment
Please, Sign In to add comment