Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- script creator: Nok1a (before under the name Platonic/Mr.Dragon Star)
- -- Tutorial on how to use: https://youtu.be/OylUtyEwGVA
- -- Use whatever you like in the script in case needed
- -- value = Time.timeScale
- local hexConvert = 0x0
- local dataType = 0x0
- local cdOffsetSmall = 0x0
- local cdOffsetBig = 0x0
- local cbOffsetSmall = 0x0
- local anonSpeedOffsetSmall = 0x0
- local anonSpeedOffsetBig = 0x0
- local anonGroupSearchOffset = 0x0
- function isProcess64Bit()
- -- Function -> by CmP: https://gameguardian.net/forum/topic/36604-how-to-get-instruction-set-architecture-on-emulator-virtual-memory-addresses/?do=findComment&comment=135506
- local regions = gg.getRangesList()
- local lastAddress = regions[#regions]["end"]
- return (lastAddress >> 32) ~= 0
- end
- function noselect()
- gg.toast("You not select anything")
- end
- function cb_nothingFound()
- if gg.getResultsCount() == 0 then
- gg.alert("Search not found, Use Fuzzy or Xa")
- start()
- end
- end
- local ISA = isProcess64Bit()
- local resultsCount = gg.getResultsCount()
- gg.clearResults()
- function instructions()
- if ISA == false then -- if true then 32 bit else 64 bit
- hexConvert = 0x100000000
- dataType = 4
- cdOffsetSmall = 0xC
- cdOffsetBig = 0xB58
- cbOffsetSmall = 0x1C
- anonSpeedOffsetSmall = 0xE4
- anonSpeedOffsetBig = 0xEC
- anonGroupSearchOffset = 0x30
- else
- hexConvert = 0x0
- dataType = 32
- cdOffsetSmall = 0x18
- cdOffsetBig = 0x16B0
- cbOffsetSmall = 0x38
- cbOffsetBig = 0x48
- anonSpeedOffsetSmall = 0xF4
- anonSpeedOffsetBig = 0xFC
- anonGroupSearchOffset = 0x44
- end
- end
- function unityVersion()
- gg.searchNumber(":Expected version: ", gg.TYPE_BYTE, gg.setRanges(16384))
- if gg.getResultsCount() == 0 then
- gg.alert("This game is not made with Unity, fuzzy will be automatically activated!")
- gg.alert("Make sure your game is open, don't hide it on the background!")
- randomized()
- os.exit()
- else
- local count = gg.getResultsCount()
- local results = gg.getResults(count)
- values = {}
- for i = 18, count, 18 do
- local resultAddress = results[i].address
- for j = 1, 7 do
- values[#values + 1] = {address = resultAddress + j, flags = gg.TYPE_BYTE}
- end
- values = gg.getValues(values)
- end
- local str = ''
- for i, v in ipairs(values) do
- str = str .. string.char(v.value & 0xFF)
- end
- gg.clearResults()
- if values[1].value <= 0x35 and values[2].value == 0x2E and values[3].value <= 0x35 then -- unity versions 5.5 or below
- gg.alert("Unity version "..str..",This version is to old. Use Speedhack through Cb or Fuzzy")
- anonGroupSearchOffset = 0x3C
- cbOffsetSmall = 0x24
- anonSpeedOffsetSmall = 0xBC
- end
- gg.clearResults()
- end
- end
- function finalSpeedResult()
- resultsCount = gg.getResultsCount()
- local values = gg.getResults(resultsCount)
- local results = {}
- local speed = {}
- for b = 1, #values do
- local loop = 0x0
- for i = 1, 70 do
- results[#results + 1] = {address = values[b].address + loop, flags = gg.TYPE_FLOAT}
- loop = loop + 4
- end
- end
- results = gg.getValues(results)
- for i, v in ipairs(results) do
- if v.value == 1 then
- speed[#speed +1] = {address = v.address, flags = v.flags, name = "Speed"}
- break
- end
- end
- if #speed ~= 0 then
- gg.toast("Time.timeScale found")
- gg.addListItems(speed)
- gg.clearResults()
- os.exit()
- end
- end
- function startxa()
- gg.clearResults()
- gg.setRanges(gg.REGION_CODE_APP)
- gg.searchNumber("h 6A 6F 79 73 74 69 63 6B 20 31 36 20 62 75 74 74 6F 6E 20 31 39")
- if gg.getResultsCount() == 0 then
- gg.alert("Search not found, try Speedhack Cb or Fuzzy")
- start()
- else
- local a = gg.getResults(1)
- gg.clearResults()
- gg.setRanges(gg.REGION_C_DATA | gg.REGION_OTHER)
- gg.searchNumber(a[1].address, dataType)
- resultsCount = gg.getResultsCount()
- a = gg.getResults(1)
- gg.clearResults()
- gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_C_ALLOC | gg.REGION_OTHER)
- gg.searchNumber(a[1].address + cdOffsetSmall, dataType)
- if gg.getResultsCount() ~= 1 then
- gg.clearResults()
- gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_C_ALLOC | gg.REGION_OTHER)
- gg.searchNumber(a[1].address - cdOffsetBig, dataType)
- end
- finalSpeedResult()
- end
- end
- function filterCb()
- local b = {}
- gg.clearResults()
- gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_C_ALLOC | gg.REGION_OTHER)
- gg.searchNumber("h 00 00 80 3F CD CC 4C 3E 00 00 00 41 00 00 C8 42 00 00 B4 43 0A D7 23 3C CD CC 4C 3E 00 00 40 3F 00 00 00")
- if gg.getResultsCount() == 0 then
- gg.searchNumber("-9.81000041962", gg.TYPE_FLOAT)
- cb_nothingFound()
- resultsCount = gg.getResultsCount()
- local t = gg.getResults(resultsCount)
- for i, v in ipairs(t) do
- v.address = v.address + 0xC
- end
- gg.loadResults(t)
- gg.refineNumber("1", gg.TYPE_FLOAT)
- cb_nothingFound()
- resultsCount = gg.getResultsCount()
- b = gg.getResults(resultsCount)
- elseif gg.getResultsCount() ~= 0 then
- gg.refineNumber("h 00 00 80 3F", gg.TYPE_FLOAT)
- cb_nothingFound()
- resultsCount = gg.getResultsCount()
- local a = gg.getResults(resultsCount)
- for i, v in ipairs(a) do
- v.flags = gg.TYPE_FLOAT
- end
- b = gg.getValues(a)
- end
- return b
- end
- function startcb()
- local fakeSpeedPointers = {}
- local b = filterCb()
- for i, v in ipairs(b) do
- if v.value == 1 then
- fakeSpeedPointers[#fakeSpeedPointers + 1] = {address = v.address - anonGroupSearchOffset, flags = gg.TYPE_FLOAT}
- fakeSpeedPointers[#fakeSpeedPointers + 1] = {address = v.address - 0x48, flags = gg.TYPE_FLOAT}
- fakeSpeedPointers[#fakeSpeedPointers + 1] = {address = v.address - 0x44, flags = gg.TYPE_FLOAT}
- end
- end
- gg.setRanges(gg.REGION_C_BSS | gg.REGION_OTHER | gg.REGION_ANONYMOUS | gg.REGION_C_ALLOC)
- gg.loadResults(fakeSpeedPointers)
- gg.searchPointer(0)
- resultsCount = gg.getResultsCount()
- local offsetStart = gg.getResults(resultsCount)
- for i, v in ipairs(offsetStart) do
- v.address = v.address - cbOffsetSmall
- end
- local valu = gg.getValues(offsetStart)
- for i, v in ipairs(valu) do
- if ISA == false then
- v.address = v.value&0xFFFFFFFF
- else
- v.address = v.value
- end
- end
- gg.loadResults(valu)
- finalSpeedResult()
- end
- function randomized()
- gg.clearResults()
- gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_C_ALLOC | gg.REGION_OTHER)
- gg.searchFuzzy('0', gg.TYPE_FLOAT, gg.SIGN_FUZZY_GREATER)
- for i = 1 , 50 do
- gg.searchFuzzy('0', gg.TYPE_FLOAT, gg.SIGN_FUZZY_GREATER)
- gg.refineNumber('0.01~6', gg.TYPE_FLOAT)
- gg.sleep(50)
- end
- resultsCount = gg.getResultsCount()
- secondResults = gg.getResults(resultsCount)
- local addTables = {}
- local speed = {}
- for i = 1, #secondResults do
- local loops = 0x0
- for b = 1, 200 do
- addTables[#addTables + 1] = {address = secondResults[i].address + loops, flags = gg.TYPE_FLOAT}
- addTables[#addTables + 1] = {address = secondResults[i].address - loops, flags = gg.TYPE_FLOAT}
- loops = loops + 0x4
- end
- end
- addTables = gg.getValues(addTables)
- for i, v in ipairs (addTables) do
- if v.value == 1 then
- speed[#speed +1] = {address = v.address, flags = v.flags, name = "Speed"}
- end
- end
- if #speed ~= 3 then
- gg.toast("Possible speed values found(not guaranteed)")
- gg.addListItems(speed)
- gg.clearResults()
- else
- gg.toast("Nothing found with Fuzzy, shuttind down script")
- end
- os.exit()
- end
- local functLoop = true
- function start()
- if functLoop == true then
- instructions()
- unityVersion()
- functLoop = false
- end
- menu = gg.multiChoice({"Fuzzy","Speedhack through Xa","Speedhack through Cb"},nil,"for fuzzy game must be open, don't hide it on the background")
- if menu == nil then
- noselect()
- else
- if menu[1] then
- gg.alert("Make sure your game is open, don't hide it on the background!")
- randomized()
- end
- if menu[2] then
- startxa()
- end
- if menu[3] then
- startcb()
- end
- end
- end
- while (true) do
- if gg.isVisible() then
- gg.setVisible(false)
- start()
- end
- gg.sleep(100)
- end
Advertisement
Add Comment
Please, Sign In to add comment