Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- util.aobScan = function(aob, code)
- local new_results = {}
- local results = AOBScan(aob, "*X*C*W")
- if not results then
- return new_results
- end
- for i = 1, results.Count do
- local x = getAddress(results[i - 1])
- table.insert(new_results, x)
- end
- return new_results
- end
- util.intToBytes = function(val)
- if val == nil then
- error'Cannot convert nil value to byte table'
- end
- local t = { val & 0xFF }
- for i = 1, 7 do
- table.insert(t, (val >> (8 * i)) & 0xFF)
- end
- return t
- end
- loader = {}
- loader.start = function()
- local players, parentOffset;
- local results = util.aobScan("506C6179657273??????????????????07000000000000000F")
- for rn = 1, #results do
- local result = results[rn]
- if not result then
- return false
- end
- local bres = util.intToBytes(result);
- local aobs = ""
- for i = 1, 8 do
- aobs = aobs .. string.format("%02X", bres[i])
- end
- local valid = false
- local res = util.aobScan(aobs)
- if res then
- for i = 1, #res do
- result = res[i]
- for j = 1, 10 do
- local ptr = readQword(result - (8 * j))
- if ptr then
- ptr = readQword(ptr + 8)
- if (readString(ptr) == "Players") then
- players = (result - (8 * j)) - 0x18
- valid = true
- break
- end
- end
- end
- if valid then break end
- end
- end
- if valid then break end
- end
- for i = 0x10, 0x120, 8 do
- local ptr = readQword(players + i)
- if ptr ~= 0 and ptr % 4 == 0 then
- if (readQword(ptr + 8) == ptr) then
- parentOffset = i
- break
- end
- end
- end
- local dataModel = readQword(players + parentOffset)
- print(string.format("DataModel: %08X", dataModel))
- end
- loader.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement