gg.alert("Hi bro xD, Script Criada para métodos avançados de despejos il2cpp !") gg.alert("🚫 Aviso 🚫") gg.alert("Script Desenvolvida para despejos da memória binária os metadados teram que ser despejados manualmente por conta das ocultações na memória que as empressas e as equipes de desenvolvimento acaba adaptando no jogo , para que assim a comunidade de hacking desapareça aos poucos !") gg.alert("Mas fiquem tranquilos pos eu deixarei os endereço para o despejo exato dos metadados ,basta você realizalo .") local ***** function toHex(val) return string.format('%x', val) end function renameFile(starting, ending, pathing, naming) local oldPath = pathing..'/'..info.packageName..'-'..toHex(starting)..'-'..toHex(ending)..'.bin' local newPath = pathing..'/'..naming os.rename(oldPath, newPath) print('\nSuccess!\n\nFile Path is \n--> '..newPath) end function getEnd(lib) local t = gg.getRangesList(lib) return t[#t]['end']-1 end function getLib(index, path) if not os.rename(path, path) then return print('Invalid Path.') end local fullPath=path..'/'..names[index] local old = io.open(lib_t[index].internalName, "rb") local new = io.open(fullPath, "wb") local old_size, new_size = 0, 0 while true do local block = old:read(2^13) if not block then old_size = old:seek( "end" ) break end new:write(block) end old:close() new_size = new:seek( "end" ) new:close() print('\nSuccess!\n\nFile Path is \n--> '..fullPath) end function dumpLib(index, path) if not os.rename(path, path) then return print('Invalid Path.') end local starting = lib_t[index].start local ending = lib_t[index].endForDump local naming = '(start address- '..toHex(starting)..')'..names[index] gg.dumpMemory(starting, ending, path) renameFile(starting, ending+1, path, naming) end function START() local feature = gg.choice({ "Despejar il2cpp" , "Buscar Metadados" , "Fechar Script !" },nil, 'Kaique Pasha Production') if feature == 1 then il2cpp() end if feature == 2 then metadata() end if feature == 3 then Exit() end Protect = -1 end function il2cpp() ::featureAgain:: local feature = gg.choice(names, largestLib, 'Hi precioso amigo , logo abaixo você vera todas as libs que podem ser despejas !'..names[largestLib]) if not feature then return START() end ::there:: local output = gg.prompt({'Escolha o caminho para saída dos arquivos !','Methods (slide bar) :[1;2]'},{'/sdcard/Download'}, {'path','number'}) if not output then goto featureAgain end if output[2]=='1' then getLib(feature, output[1]) end if output[2]=='2' then dumpLib(feature, output[1]) end end function metadata(path) local address = gg.searchNumber('hAF 1B B1 FA') local r = gg.getResults(1)[1].address local list = gg.getRangesList(); for key, value in pairs(list) do if value['end'] > r then gg.dumpMemory(r, value['end'], '/sdcard/Download') gg.clearResults() gg.alert("Feito !") break end end end lib_t={} names ={} info = gg.getTargetInfo() for i, v in ipairs(gg.getRangesList('/data/*.so')) do if not string.find(v.internalName, info.packageName) then goto skipLib end v.shortName = string.gsub(v.internalName, '.+/', '') v.shortName = string.gsub(v.shortName, ':.*', '') for a, b in ipairs(lib_t) do if b.shortName==v.shortName then goto skipLib end end v.endForDump = getEnd(v.shortName) table.insert(lib_t, v) table.insert(names, v.shortName) ::skipLib:: end if #names==0 then return print('This game \"'..info.label..'\" does not have any Libs.\nScript is useless Now') end largestLib = 0 local diff, temp=0,0 for i, v in ipairs(lib_t) do temp = v.endForDump - v.start if temp > diff then diff = temp largestLib=i end end function EXIT() Protect = 1 START() end function Exit() os.exit() end while true do if gg.isVisible(true) then Protect = 1 gg.setVisible(false) end if Protect == 1 then START() end end function EXIT() Protect = 1 START() end